diff --git a/src/main/fragment/vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuyy.asm b/src/main/fragment/vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuyy.asm new file mode 100644 index 000000000..a53cc8fe0 --- /dev/null +++ b/src/main/fragment/vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuyy.asm @@ -0,0 +1,7 @@ +sec +lda {c1},x +sbc {c2},y +sta {z1} +lda {c1}+1,x +sbc {c2}+1,y +sta {z1}+1 diff --git a/src/main/fragment/vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuxx.asm b/src/main/fragment/vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuxx.asm new file mode 100644 index 000000000..cb34e8120 --- /dev/null +++ b/src/main/fragment/vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuxx.asm @@ -0,0 +1,7 @@ +sec +lda {c1},y +sbc {c2},x +sta {z1} +lda {c1}+1,y +sbc {c2}+1,x +sta {z1}+1 diff --git a/src/main/kc/stdlib/multiplexer.kc b/src/main/kc/stdlib/multiplexer.kc index 90c7d0ad3..2ea596703 100644 --- a/src/main/kc/stdlib/multiplexer.kc +++ b/src/main/kc/stdlib/multiplexer.kc @@ -94,7 +94,7 @@ void plexShowSprite() { SPRITES_YPOS[plex_sprite_idx2] = ypos; plexFreeAdd(ypos); PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]]; - byte xpos_idx = PLEX_SORTED_IDX[plex_show_idx]<<1; + byte xpos_idx = PLEX_SORTED_IDX[plex_show_idx]; SPRITES_XPOS[plex_sprite_idx2] = PLEX_XPOS[xpos_idx]!=0) { *SPRITES_XMSB |= plex_sprite_msb; diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 32d31856e..38051477d 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -289,7 +289,7 @@ public class TestPrograms { @Test public void testComparisonRewritingPointer() throws IOException, URISyntaxException { - compileAndCompare("comparison-rewriting-pointer", log()); + compileAndCompare("comparison-rewriting-pointer"); } @Test diff --git a/src/test/kc/complex/tetris/tetris-data.kc b/src/test/kc/complex/tetris/tetris-data.kc index cbde6a9e3..25015ce52 100644 --- a/src/test/kc/complex/tetris/tetris-data.kc +++ b/src/test/kc/complex/tetris/tetris-data.kc @@ -36,11 +36,11 @@ byte current_piece_char; byte current_xpos; byte current_ypos; -// The screen currently being rendered to. $00 for screen 1 / $40 for screen 2. -byte render_screen_render = $40; -// The screen currently to show next to the user. $00 for screen 1 / $40 for screen 2. +// The screen currently being rendered to. $00 for screen 1 / $20 for screen 2. +byte render_screen_render = $20; +// The screen currently to show next to the user. $00 for screen 1 / $20 for screen 2. byte render_screen_show = 0; -// The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. +// The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. volatile byte render_screen_showing = 0; // Current score in BCD-format diff --git a/src/test/kc/complex/tetris/tetris-play.kc b/src/test/kc/complex/tetris/tetris-play.kc index a91f114e3..79539813c 100644 --- a/src/test/kc/complex/tetris/tetris-play.kc +++ b/src/test/kc/complex/tetris/tetris-play.kc @@ -48,7 +48,7 @@ void play_init() { byte idx = 0; byte* pli = playfield; for(byte j:0..PLAYFIELD_LINES-1) { - playfield_lines[j*2] = pli; + playfield_lines[j] = pli; playfield_lines_idx[j] = idx; pli += PLAYFIELD_COLS; idx += PLAYFIELD_COLS; @@ -59,8 +59,7 @@ void play_init() { current_movedown_slow = MOVEDOWN_SLOW_SPEEDS[level]; // Set the initial score add values for(byte b: 0..4) { - byte b4 = b*4; - score_add_bcd[b4] = SCORE_BASE_BCD[b4]; + score_add_bcd[b] = SCORE_BASE_BCD[b]; } } @@ -174,32 +173,32 @@ const byte COLLISION_RIGHT = 8; byte play_collision(byte xpos, byte ypos, byte orientation) { byte* piece_gfx = current_piece + orientation; byte i = 0; - byte ypos2 = ypos*2; + byte yp = ypos; for(byte l:0..3) { - byte* playfield_line = playfield_lines[ypos2]; - byte col = xpos; + byte* playfield_line = playfield_lines[yp]; + byte xp = xpos; for(byte c:0..3) { if(piece_gfx[i++]!=0) { - if(ypos2>=2*PLAYFIELD_LINES) { + if(yp>=PLAYFIELD_LINES) { // Below the playfield bottom return COLLISION_BOTTOM; } - if((col&$80)!=0) { + if((xp&$80)!=0) { // Beyond left side of the playfield return COLLISION_LEFT; } - if(col>=PLAYFIELD_COLS) { + if(xp>=PLAYFIELD_COLS) { // Beyond left side of the playfield return COLLISION_RIGHT; } - if(playfield_line[col]!=0) { + if(playfield_line[xp]!=0) { // Collision with a playfield cell return COLLISION_PLAYFIELD; } } - col++; + xp++; } - ypos2 += 2; + yp++; } return COLLISION_NONE; } @@ -207,17 +206,17 @@ byte play_collision(byte xpos, byte ypos, byte orientation) { // Lock the current piece onto the playfield void play_lock_current() { byte i = 0; - byte ypos2 = current_ypos*2; + byte yp = current_ypos; for(byte l:0..3) { - byte* playfield_line = playfield_lines[ypos2]; - byte col = current_xpos; + byte* playfield_line = playfield_lines[yp]; + byte xp = current_xpos; for(byte c:0..3) { if(current_piece_gfx[i++]!=0) { - playfield_line[col] = current_piece_char; + playfield_line[xp] = current_piece_char; } - col++; + xp++; } - ypos2 += 2; + yp++; } } @@ -226,7 +225,7 @@ void play_lock_current() { void play_spawn_current() { // Move next piece into current byte current_piece_idx = next_piece_idx; - current_piece = PIECES[current_piece_idx*2]; + current_piece = PIECES[current_piece_idx]; current_piece_char = PIECES_CHARS[current_piece_idx]; current_orientation = 0; current_piece_gfx = current_piece + current_orientation; @@ -285,7 +284,7 @@ byte play_remove_lines() { void play_update_score(byte removed) { if(removed!=0){ byte lines_before = 2) { - byte* screen_line = screen_lines_1[render_screen_render+ypos2]; + if(ypos>1) { + byte* screen_line = screen_lines_1[render_screen_render+ypos]; byte xpos = current_xpos; for(byte c:0..3) { byte current_cell = current_piece_gfx[i++]; @@ -187,7 +187,7 @@ void render_moving() { } else { i += 4; } - ypos2 += 2; + ypos++; } } @@ -204,7 +204,7 @@ void render_next() { } // Render the next piece - byte* next_piece_gfx = PIECES[next_piece_idx*2]; + byte* next_piece_gfx = PIECES[next_piece_idx]; byte next_piece_char = PIECES_NEXT_CHARS[next_piece_idx]; for(byte l:0..3) { for(byte c:0..3) { diff --git a/src/test/kc/examples/multiplexer/simple-multiplexer.kc b/src/test/kc/examples/multiplexer/simple-multiplexer.kc index 53a294049..eac829c0c 100644 --- a/src/test/kc/examples/multiplexer/simple-multiplexer.kc +++ b/src/test/kc/examples/multiplexer/simple-multiplexer.kc @@ -37,7 +37,7 @@ void init() { word xp = 32; for(byte sx: 0..PLEX_COUNT-1) { PLEX_PTR[sx] = (byte)(SPRITE/$40); - PLEX_XPOS[sx*2] = xp; + PLEX_XPOS[sx] = xp; xp += 9; } // Enable & initialize sprites diff --git a/src/test/kc/line-anim.kc b/src/test/kc/line-anim.kc index 36c7eb199..4d628a2a4 100644 --- a/src/test/kc/line-anim.kc +++ b/src/test/kc/line-anim.kc @@ -40,9 +40,9 @@ void main() { bitmap_init(BITMAP); bitmap_clear(); screen_fill(SCREEN, $10); - for( byte i=0; i!=8; i+=2) { + for( byte i=0; i!=4; i++) { point_init(i); - bitmap_plot(x_start[i], y_start[i/2]); + bitmap_plot(x_start[i], y_start[i]); } while(true) { while(*RASTER!=$ff) {} @@ -52,9 +52,8 @@ void main() { // Initialize the points to be animated void point_init(byte point_idx) { - byte point_idx1 = point_idx/2; signed word x_diff = ((signed word)x_end[point_idx])-((signed word)x_start[point_idx]); - signed word y_diff = ((signed word)y_end[point_idx1])-((signed word)y_start[point_idx1]); + signed word y_diff = ((signed word)y_end[point_idx])-((signed word)y_start[point_idx]); if(abs16s(x_diff)>abs16s(y_diff)) { // X is driver - abs(y/x) is < 1 @@ -66,13 +65,13 @@ void point_init(byte point_idx) { x_add[point_idx] = $10; } signed word x_stepf = divr16s(0, x_diff, y_diff); - y_add[point_idx1] = (signed byte)((>x_stepf)/$10); + y_add[point_idx] = (signed byte)((>x_stepf)/$10); } else { // X is driver - abs(x/y) is < 1 } x_cur[point_idx] = x_start[point_idx]*$10; - y_cur[point_idx] = ((word)y_start[point_idx1])*$10; - delay[point_idx1] = DELAY; + y_cur[point_idx] = ((word)y_start[point_idx])*$10; + delay[point_idx] = DELAY; } // Return the absolute (unsigned) value of a word diff --git a/src/test/kc/multiplexer-irq/multiplexer-irq.kc b/src/test/kc/multiplexer-irq/multiplexer-irq.kc index 0b9289a27..7978c7f52 100644 --- a/src/test/kc/multiplexer-irq/multiplexer-irq.kc +++ b/src/test/kc/multiplexer-irq/multiplexer-irq.kc @@ -94,7 +94,7 @@ void plexShowSprite() { SPRITES_YPOS[plex_sprite_idx2] = ypos; plexFreeAdd(ypos); PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]]; - byte xpos_idx = PLEX_SORTED_IDX[plex_show_idx]*2; + byte xpos_idx = PLEX_SORTED_IDX[plex_show_idx]; SPRITES_XPOS[plex_sprite_idx2] = PLEX_XPOS[xpos_idx]!=0) { *SPRITES_XMSB |= plex_sprite_msb; diff --git a/src/test/kc/multiplexer-irq/simple-multiplexer-irq.kc b/src/test/kc/multiplexer-irq/simple-multiplexer-irq.kc index 2384e8ec3..09f43823e 100644 --- a/src/test/kc/multiplexer-irq/simple-multiplexer-irq.kc +++ b/src/test/kc/multiplexer-irq/simple-multiplexer-irq.kc @@ -36,7 +36,7 @@ void init() { word xp = 32; for(byte sx: 0..PLEX_COUNT-1) { PLEX_PTR[sx] = (byte)(SPRITE/$40); - PLEX_XPOS[sx*2] = xp; + PLEX_XPOS[sx] = xp; xp += 9; } // Enable & initialize sprites diff --git a/src/test/ref/complex/tetris/test-sprites.asm b/src/test/ref/complex/tetris/test-sprites.asm index 2e2fd9203..a35164dc2 100644 --- a/src/test/ref/complex/tetris/test-sprites.asm +++ b/src/test/ref/complex/tetris/test-sprites.asm @@ -65,7 +65,7 @@ .label irq_cnt = 9 .label sin_idx = 2 bbegin: - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing // The raster line of the next IRQ diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log index 80247f2ae..8e457f1ed 100644 --- a/src/test/ref/complex/tetris/test-sprites.log +++ b/src/test/ref/complex/tetris/test-sprites.log @@ -1826,7 +1826,7 @@ bbegin: //SEG4 @1 b1: //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} @@ -2702,7 +2702,7 @@ bbegin: //SEG4 @1 b1: //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} @@ -3673,7 +3673,7 @@ Score: 7310 bbegin: //SEG4 @1 //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index e93731a32..889a3b29e 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -158,7 +158,7 @@ .label current_piece_103 = 5 .label current_piece_104 = 5 bbegin: - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing // Original Color Data @@ -188,7 +188,7 @@ main: { sta next_piece_idx jsr play_spawn_current jsr play_spawn_current - ldx #$40 + ldx #$20 jsr render_playfield ldx current_ypos lda current_xpos @@ -199,13 +199,13 @@ main: { sta current_piece_gfx_120+1 lda current_piece_char sta current_piece_char_108 - lda #$40 + lda #$20 sta render_screen_render_33 jsr render_moving ldx play_spawn_current.piece_idx - lda #$40 + lda #$20 jsr render_next - ldy play_spawn_current._0 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y @@ -222,7 +222,7 @@ main: { sta current_movedown_counter sta keyboard_events_size sta current_orientation - lda #$40 + lda #$20 sta render_screen_render lda #0 sta render_screen_show @@ -270,10 +270,10 @@ main: { } // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - lda #$40 + lda #$20 eor render_screen_render sta render_screen_render - lda #$40 + lda #$20 eor render_screen_show sta render_screen_show rts @@ -461,29 +461,24 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label ypos2 = $c + .label ypos = $c .label screen_line = 7 .label xpos = $f .label i = $e .label l = $d - txa - asl - sta ypos2 + stx ypos lda #0 sta l sta i b1: - lda ypos2 - cmp #2+1 + lda ypos + cmp #1+1 bcs b2 lax i axs #-[4] stx i b3: - lda ypos2 - clc - adc #2 - sta ypos2 + inc ypos inc l lda #4 cmp l @@ -492,7 +487,8 @@ render_moving: { b2: lda render_screen_render_33 clc - adc ypos2 + adc ypos + asl tay lda screen_lines_1,y sta screen_line @@ -528,11 +524,10 @@ render_playfield: { lda #2 sta l b1: - lda l - asl - stx $ff + txa clc - adc $ff + adc l + asl tay lda screen_lines_1,y sta screen_line @@ -638,15 +633,15 @@ play_move_rotate: { } // 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 -// play_collision(byte zeropage($c) xpos, byte zeropage($b) ypos, byte register(X) orientation) +// play_collision(byte zeropage($b) xpos, byte zeropage($c) ypos, byte register(X) orientation) play_collision: { - .label xpos = $c - .label ypos = $b + .label xpos = $b + .label ypos = $c .label piece_gfx = 5 - .label ypos2 = $b + .label yp = $c .label playfield_line = 7 .label i = $2b - .label col = $f + .label xp = $f .label l = $d .label i_2 = $e .label i_3 = $e @@ -659,18 +654,19 @@ play_collision: { bcc !+ inc piece_gfx+1 !: - asl ypos2 lda #0 sta l sta i_3 b1: - ldy ypos2 + lda yp + asl + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 lda xpos - sta col + sta xp ldx #0 b2: ldy i_2 @@ -680,40 +676,37 @@ play_collision: { lda (piece_gfx),y cmp #0 beq b3 - lda ypos2 - cmp #2*PLAYFIELD_LINES + lda yp + cmp #PLAYFIELD_LINES bcc b4 lda #COLLISION_BOTTOM rts b4: lda #$80 - and col + and xp cmp #0 beq b5 lda #COLLISION_LEFT rts b5: - lda col + lda xp cmp #PLAYFIELD_COLS bcc b6 lda #COLLISION_RIGHT rts b6: - ldy col + ldy xp lda (playfield_line),y cmp #0 beq b3 lda #COLLISION_PLAYFIELD rts b3: - inc col + inc xp inx cpx #4 bne b10 - lda ypos2 - clc - adc #2 - sta ypos2 + inc yp inc l lda #4 cmp l @@ -823,7 +816,7 @@ play_move_down: { tax jsr play_update_score jsr play_spawn_current - ldy play_spawn_current._0 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y @@ -845,16 +838,16 @@ play_move_down: { // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { - .label _0 = 4 + .label _7 = 4 .label piece_idx = $21 // Move next piece into current ldx next_piece_idx txa asl - sta _0 + sta _7 lda PIECES_CHARS,x sta current_piece_char - ldy _0 + ldy _7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y @@ -1056,27 +1049,28 @@ play_remove_lines: { } // Lock the current piece onto the playfield play_lock_current: { - .label ypos2 = $10 + .label yp = $10 .label playfield_line = 5 - .label col = $a + .label xp = $a .label i = $b .label l = 4 .label i_2 = 9 .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - asl ypos2 lda #0 sta l sta i_3 b1: - ldy ypos2 + lda yp + asl + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 lda current_xpos - sta col + sta xp ldx #0 b2: ldy i_2 @@ -1087,17 +1081,14 @@ play_lock_current: { cmp #0 beq b3 lda current_piece_char - ldy col + ldy xp sta (playfield_line),y b3: - inc col + inc xp inx cpx #4 bne b7 - lda ypos2 - clc - adc #2 - sta ypos2 + inc yp inc l lda #4 cmp l diff --git a/src/test/ref/complex/tetris/tetris.cfg b/src/test/ref/complex/tetris/tetris.cfg index cb81da3de..eee43fe23 100644 --- a/src/test/ref/complex/tetris/tetris.cfg +++ b/src/test/ref/complex/tetris/tetris.cfg @@ -94,7 +94,7 @@ main::@15: scope:[main] from main::@14 main::@16: scope:[main] from main::@15 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 [36] call render_next - [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) to:main::@1 main::@1: scope:[main] from main::@16 main::@24 main::@6 [38] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@24/(byte) level_bcd#17 ) @@ -112,7 +112,7 @@ main::@1: scope:[main] from main::@16 main::@24 main::@6 [38] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@16/(byte) current_piece_char#5 main::@24/(byte) current_piece_char#16 ) [38] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@16/(byte*~) current_piece#98 main::@24/(byte*) current_piece#15 ) [38] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@16/(byte) current_movedown_slow#1 main::@24/(byte) current_movedown_slow#21 ) - [38] (byte) render_screen_render#18 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@24/(byte) render_screen_render#11 ) + [38] (byte) render_screen_render#18 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@24/(byte) render_screen_render#11 ) [38] (byte) render_screen_show#16 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@24/(byte) render_screen_show#13 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 @@ -175,8 +175,8 @@ main::@24: scope:[main] from main::@23 [69] call render_screen_swap to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@24 - [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 - [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 + [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 + [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap [72] return @@ -246,7 +246,7 @@ render_bcd::@return: scope:[render_bcd] from render_bcd::@1 to:@return render_next: scope:[render_next] from main::@16 main::@22 [107] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#84 main::@22/(byte~) next_piece_idx#85 ) - [107] (byte) render_screen_render#15 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@22/(byte~) render_screen_render#68 ) + [107] (byte) render_screen_render#15 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@22/(byte~) render_screen_render#68 ) [108] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@1 to:render_next::@2 render_next::@2: scope:[render_next] from render_next @@ -254,9 +254,9 @@ render_next::@2: scope:[render_next] from render_next to:render_next::@1 render_next::@1: scope:[render_next] from render_next render_next::@2 [110] (byte*) render_next::screen_next_area#11 ← phi( render_next/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next::@2/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) - [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [112] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) - [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) + [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) to:render_next::@3 render_next::@3: scope:[render_next] from render_next::@1 render_next::@8 [114] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) @@ -294,22 +294,22 @@ render_moving: scope:[render_moving] from main::@15 main::@21 [128] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#108 main::@21/(byte~) current_piece_char#109 ) [128] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#120 main::@21/(byte*~) current_piece_gfx#121 ) [128] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#130 main::@21/(byte~) current_xpos#131 ) - [128] (byte) render_screen_render#33 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@21/(byte~) render_screen_render#69 ) + [128] (byte) render_screen_render#33 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@21/(byte~) render_screen_render#69 ) [128] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#106 main::@21/(byte~) current_ypos#107 ) - [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 [130] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) [130] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) - [130] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) - [131] if((byte) render_moving::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 + [130] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) + [131] if((byte) render_moving::ypos#2>=(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 [133] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) - [134] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [134] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 [135] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 [136] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 to:render_moving::@return @@ -317,896 +317,898 @@ render_moving::@return: scope:[render_moving] from render_moving::@3 [137] return to:@return render_moving::@2: scope:[render_moving] from render_moving::@1 - [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 - [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) - [140] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 + [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 + [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) + [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [141] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) - [141] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [141] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) - [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) - [143] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 - [144] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 + [142] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) + [142] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [142] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) + [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) + [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 + [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 to:render_moving::@6 render_moving::@6: scope:[render_moving] from render_moving::@4 - [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 + [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6 - [146] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [147] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [148] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 + [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 to:render_moving::@3 render_playfield: scope:[render_playfield] from main::@14 main::@7 - [149] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#70 main::@14/(byte/signed byte/word/signed word/dword/signed dword) $40 ) + [150] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#70 main::@14/(byte/signed byte/word/signed word/dword/signed dword) $20 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [150] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [150] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 - [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [151] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [151] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 + [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [154] (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 ) - [154] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [154] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [156] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [157] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [158] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [159] 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 + [155] (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 ) + [155] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [155] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [160] 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 - [160] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [161] 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 + [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [162] 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 - [162] return + [163] return to:@return play_movement: scope:[play_movement] from main::@4 - [163] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 - [164] call play_move_down - [165] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [165] call play_move_down + [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:play_movement::@2 play_movement::@2: scope:[play_movement] from play_movement - [166] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 - [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 + [167] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 + [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 to:play_movement::@return play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@4 - [168] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) - [168] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) - [168] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) - [168] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) - [169] return + [169] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) + [169] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) + [169] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) + [169] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) + [170] return to:@return play_movement::@1: scope:[play_movement] from play_movement::@2 - [170] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 - [171] call play_move_leftright - [172] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [171] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [172] call play_move_leftright + [173] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:play_movement::@3 play_movement::@3: scope:[play_movement] from play_movement::@1 - [173] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 - [175] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 - [176] call play_move_rotate - [177] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [174] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [176] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [177] call play_move_rotate + [178] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:play_movement::@4 play_movement::@4: scope:[play_movement] from play_movement::@3 - [178] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + [179] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 to:play_movement::@return play_move_rotate: scope:[play_move_rotate] from play_movement::@3 - [180] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate - [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [182] 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::@4 play_move_rotate::@5 play_move_rotate::@6 - [182] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) - [182] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) - [182] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [183] return + [183] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) + [183] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) + [183] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [184] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@4 - [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 - [185] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f + [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 + [186] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f to:play_move_rotate::@3 play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [186] (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 ) - [187] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 - [188] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 - [189] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 - [191] call play_collision - [192] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + [187] (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 ) + [188] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 + [189] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 + [190] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 + [192] call play_collision + [193] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@3 - [193] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - [194] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [194] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + [195] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@5 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@6 - [195] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 - [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 + [196] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 - [198] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f + [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 + [199] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f to:play_move_rotate::@3 play_collision: scope:[play_collision] from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current - [199] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) - [199] (byte) play_collision::ypos#5 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) - [199] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [199] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#100 play_move_leftright::@1/(byte*~) current_piece#101 play_move_leftright::@3/(byte*~) current_piece#102 play_move_rotate::@3/(byte*~) current_piece#103 play_spawn_current/(byte*~) current_piece#104 ) - [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 - [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [200] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) + [200] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) + [200] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [200] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#100 play_move_leftright::@1/(byte*~) current_piece#101 play_move_leftright::@3/(byte*~) current_piece#102 play_move_rotate::@3/(byte*~) current_piece#103 play_spawn_current/(byte*~) current_piece#104 ) + [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@9 [202] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@9/(byte) play_collision::l#1 ) [202] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@9/(byte~) play_collision::i#11 ) - [202] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@9/(byte) play_collision::ypos2#1 ) - [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [204] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 + [202] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) + [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) + [205] (byte~) play_collision::xp#9 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@10 - [205] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@10/(byte) play_collision::c#1 ) - [205] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@10/(byte) play_collision::col#1 ) - [205] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#13 ) - [206] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [206] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@10/(byte) play_collision::c#1 ) + [206] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#9 play_collision::@10/(byte) play_collision::xp#1 ) + [206] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#13 ) + [207] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@7 play_collision::@7: scope:[play_collision] from play_collision::@2 - [208] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [209] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8 - [209] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) - [210] return + [210] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) + [211] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@7 - [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 - [212] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 + [213] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [213] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [215] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [216] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [217] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 + [216] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 + [217] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [218] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@3 - [218] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [219] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [220] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 + [219] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 + [220] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [221] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 to:play_collision::@return play_collision::@9: scope:[play_collision] from play_collision::@8 - [221] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@10: scope:[play_collision] from play_collision::@3 - [222] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [223] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from play_movement::@1 - [223] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [224] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@2 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright - [224] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [225] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@3 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@2 - [225] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [226] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 - [227] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 - [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 - [229] call play_collision - [230] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + [226] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [227] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 + [228] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 + [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 + [230] call play_collision + [231] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@3 - [231] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - [232] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [232] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [233] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@4 play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@7 - [233] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 + [234] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7 - [234] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) - [234] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [235] return + [235] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) + [235] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [236] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [236] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [237] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 - [238] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 - [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 - [240] call play_collision - [241] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + [237] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [238] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 + [239] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 + [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 + [241] call play_collision + [242] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@1 - [242] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [243] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [243] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [244] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@5 play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@6 - [244] (byte) current_xpos#8 ← -- (byte) current_xpos#22 + [245] (byte) current_xpos#8 ← -- (byte) current_xpos#22 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from play_movement - [245] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 - [246] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [247] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down - [247] phi() + [248] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@4 - [248] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [249] call keyboard_event_pressed - [250] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [249] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [250] call keyboard_event_pressed + [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@1 - [251] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [252] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [252] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [253] 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::@5 play_move_down::@5: scope:[play_move_down] from play_move_down::@12 - [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@6 play_move_down::@6: scope:[play_move_down] from play_move_down::@5 - [254] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [255] (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::@12 play_move_down::@5 play_move_down::@6 - [255] (byte) play_move_down::movedown#7 ← phi( play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) - [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 + [256] (byte) play_move_down::movedown#7 ← phi( play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) + [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@2 - [257] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@3 play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@7 - [258] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) - [259] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [259] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) + [260] 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::@8 play_move_down::@8: scope:[play_move_down] from play_move_down::@3 - [260] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [261] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 - [262] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 - [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 - [264] call play_collision - [265] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + [261] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [262] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 + [263] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 + [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 + [265] call play_collision + [266] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@8 - [266] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [267] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 + [267] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [268] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@13 - [268] phi() - [269] call play_lock_current + [269] phi() + [270] call play_lock_current to:play_move_down::@14 play_move_down::@14: scope:[play_move_down] from play_move_down::@9 - [270] phi() - [271] call play_remove_lines - [272] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 + [271] phi() + [272] call play_remove_lines + [273] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 to:play_move_down::@15 play_move_down::@15: scope:[play_move_down] from play_move_down::@14 - [273] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [274] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [275] call play_update_score + [274] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [275] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [276] call play_update_score to:play_move_down::@16 play_move_down::@16: scope:[play_move_down] from play_move_down::@15 - [276] phi() - [277] call play_spawn_current - [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + [277] phi() + [278] call play_spawn_current + [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@10 play_move_down::@16 - [279] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@16/(byte) play_spawn_current::piece_idx#2 ) - [279] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@16/(byte) game_over#52 ) - [279] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#124 play_move_down::@16/(byte) current_xpos#103 ) - [279] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#114 play_move_down::@16/(byte*) current_piece_gfx#74 ) - [279] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [279] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@16/(byte) current_piece_char#5 ) - [279] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@16/(byte*~) current_piece#106 ) - [279] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@16/(byte) level_bcd#19 ) - [279] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@16/(byte) current_movedown_slow#23 ) - [279] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@16/(byte) level#19 ) - [279] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@16/(dword) score_bcd#16 ) - [279] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@16/(word) lines_bcd#17 ) - [279] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@16/(byte) current_ypos#6 ) + [280] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@16/(byte) play_spawn_current::piece_idx#2 ) + [280] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@16/(byte) game_over#52 ) + [280] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#124 play_move_down::@16/(byte) current_xpos#103 ) + [280] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#114 play_move_down::@16/(byte*) current_piece_gfx#74 ) + [280] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [280] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@16/(byte) current_piece_char#5 ) + [280] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@16/(byte*~) current_piece#106 ) + [280] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@16/(byte) level_bcd#19 ) + [280] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@16/(byte) current_movedown_slow#23 ) + [280] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@16/(byte) level#19 ) + [280] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@16/(dword) score_bcd#16 ) + [280] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@16/(word) lines_bcd#17 ) + [280] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@16/(byte) current_ypos#6 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@11 play_move_down::@3 - [280] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) - [280] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) - [280] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#124 ) - [280] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#114 ) - [280] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) - [280] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) - [280] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) - [280] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) - [280] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) - [280] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) - [280] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) - [280] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) - [280] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#100 ) - [280] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) - [280] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_down::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [281] return + [281] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) + [281] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) + [281] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#124 ) + [281] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#114 ) + [281] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) + [281] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) + [281] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) + [281] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) + [281] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) + [281] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) + [281] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) + [281] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) + [281] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#100 ) + [281] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) + [281] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_down::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [282] return to:@return play_move_down::@10: scope:[play_move_down] from play_move_down::@13 - [282] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 + [283] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 to:play_move_down::@11 play_spawn_current: scope:[play_spawn_current] from main::@12 main::@13 play_move_down::@16 - [283] (byte) game_over#65 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) - [283] (byte) next_piece_idx#17 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) - [284] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 - [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) - [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) - [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) - [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) - [290] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 - [291] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 - [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) - [293] call play_collision - [294] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + [284] (byte) game_over#65 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) + [284] (byte) next_piece_idx#17 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) + [285] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 + [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) + [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) + [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) + [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) + [291] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 + [292] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 + [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) + [294] call play_collision + [295] (byte) play_collision::return#10 ← (byte) play_collision::return#15 to:play_spawn_current::@4 play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current - [295] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - [296] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 + [296] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + [297] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@5 - [297] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [298] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) to:play_spawn_current::@2 play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@3 - [298] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) - [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 + [299] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) + [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@2 - [300] return + [301] return to:@return play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@2 - [301] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [302] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::sid_rnd1 - [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@2 play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@4 - [303] phi() + [304] phi() to:play_spawn_current::@1 play_update_score: scope:[play_update_score] from play_move_down::@15 - [304] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return + [305] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return to:play_update_score::@1 play_update_score::@1: scope:[play_update_score] from play_update_score - [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 - [306] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 - [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) + [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [307] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 + [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) asm { sed } - [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 - [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 + [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 - [314] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 - [315] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 + [315] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 + [316] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@2 play_update_score::@2: scope:[play_update_score] from play_update_score::@1 - [316] phi() - [317] call play_increase_level + [317] phi() + [318] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@2 - [318] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#64 ) - [318] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#69 ) - [318] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) - [318] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#30 play_update_score::@2/(dword) score_bcd#30 ) - [318] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#30 play_update_score::@2/(word) lines_bcd#30 ) - [319] return + [319] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#64 ) + [319] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#69 ) + [319] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) + [319] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#30 play_update_score::@2/(dword) score_bcd#30 ) + [319] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#30 play_update_score::@2/(word) lines_bcd#30 ) + [320] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@2 - [320] (byte) level#21 ← ++ (byte) level#10 - [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 + [321] (byte) level#21 ← ++ (byte) level#10 + [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level - [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) + [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) to:play_increase_level::@1 play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@3 - [323] (byte) current_movedown_slow#69 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) - [324] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 - [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f - [326] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 + [324] (byte) current_movedown_slow#69 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) + [325] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f + [327] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@1 - [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 + [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4 - [328] (byte) level_bcd#64 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) + [329] (byte) level_bcd#64 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5 - [330] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) - [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) - [333] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [334] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 + [331] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) + [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) + [334] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [335] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 to:play_increase_level::@6 play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@5 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@6 - [336] return + [337] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@14 - [337] phi() + [338] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@6 - [338] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) - [338] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) - [338] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [338] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) + [339] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) + [339] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) + [339] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [339] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [339] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [339] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [339] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [339] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [340] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [341] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [342] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 + [340] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [340] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [340] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [340] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [341] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [342] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [343] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@9 - [343] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [344] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [345] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [346] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [347] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 + [344] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [345] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [346] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [347] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [348] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@3 - [348] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 + [349] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 - [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [350] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [351] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@6 play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@5 - [351] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) - [351] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) - [352] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [353] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 + [352] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) + [352] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) + [353] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [354] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@7 play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@6 play_remove_lines::@8 - [354] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [355] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 + [355] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [356] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@7 - [356] return + [357] return to:@return play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7 - [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [358] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [359] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@7 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@2 - [359] phi() + [360] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@9 - [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#100 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@6 - [361] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) - [361] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) - [361] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@6/(byte) play_lock_current::ypos2#1 ) - [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [363] (byte) play_lock_current::col#0 ← (byte) current_xpos#124 + [362] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) + [362] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) + [362] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) + [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) + [365] (byte) play_lock_current::xp#0 ← (byte) current_xpos#124 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@7 - [364] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) - [364] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@7/(byte) play_lock_current::col#1 ) - [364] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) - [365] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [366] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) + [366] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) + [366] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) + [367] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 + [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [368] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [369] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [370] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [370] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 + [371] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [372] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [371] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [372] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [373] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 + [373] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 + [374] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [375] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [374] return + [376] return to:@return play_lock_current::@6: scope:[play_lock_current] from play_lock_current::@5 - [375] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [377] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@3 - [376] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [378] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1 - [377] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [378] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [379] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [380] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [381] (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) + [379] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [383] (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 - [382] return + [384] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@18 - [383] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [385] 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::@1 keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get - [384] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [387] (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::@1 - [386] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) - [386] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) - [387] return + [388] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) + [388] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) + [389] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@17 - [388] phi() + [390] phi() to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [389] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) - [389] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) - [389] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) - [390] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [391] call keyboard_matrix_read - [392] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [391] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) + [391] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) + [391] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) + [392] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [393] call keyboard_matrix_read + [394] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@7 - [393] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [394] 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::@9 + [395] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [396] 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::@9 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@19 - [395] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [397] (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::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [396] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) - [396] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) - [397] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 + [398] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) + [398] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) + [399] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@8 - [399] phi() - [400] call keyboard_event_pressed - [401] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [401] phi() + [402] call keyboard_event_pressed + [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@17 - [402] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - [403] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 + [404] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + [405] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 to:keyboard_event_scan::@18 keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [404] phi() + [406] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@20 - [405] phi() - [406] call keyboard_event_pressed - [407] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [407] phi() + [408] call keyboard_event_pressed + [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - [409] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 + [410] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + [411] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 to:keyboard_event_scan::@4 keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@21 - [410] phi() + [412] phi() to:keyboard_event_scan::@2 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@4 - [411] phi() - [412] call keyboard_event_pressed - [413] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [413] phi() + [414] call keyboard_event_pressed + [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@2 - [414] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - [415] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 + [416] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + [417] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@22 - [416] phi() + [418] phi() to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@5 - [417] phi() - [418] call keyboard_event_pressed - [419] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [419] phi() + [420] call keyboard_event_pressed + [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [420] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - [421] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [422] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + [423] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@6 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@23 - [422] phi() + [424] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@6 - [423] return + [425] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [424] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [424] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) - [424] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [425] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [427] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [426] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [426] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) + [426] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [429] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@12 keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 + [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@12 - [429] (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) - [430] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [431] (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) + [432] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@14 keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [431] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [432] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [433] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [434] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [433] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) - [434] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [435] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [436] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 + [435] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [436] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [437] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [438] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [437] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [439] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@8 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 - [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 - [440] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 + [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 + [442] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7 - [441] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [443] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [444] (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 - [443] return + [445] return to:@return render_show: scope:[render_show] from main::@3 - [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [445] phi() + [447] phi() to:render_show::@1 render_show::@1: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [446] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [447] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) - [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) - [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [448] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [449] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) + [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) + [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@1 - [451] return + [453] return to:@return render_show::toD0181: scope:[render_show] from render_show - [452] phi() + [454] phi() to:render_show::@1 play_init: scope:[play_init] from main::@11 - [453] phi() + [455] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [454] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) - [454] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [454] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) - [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 - [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [460] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [461] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 + [456] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [456] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [456] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 + [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [462] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [463] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@1 - [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 - [464] (byte) play_init::b#2 ← phi( play_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@3/(byte) play_init::b#1 ) - [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) - [467] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [468] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 + [466] (byte) play_init::b#2 ← phi( play_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@3/(byte) play_init::b#1 ) + [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) + [469] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [470] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@3 - [469] return + [471] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@10 asm { sei } - [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f - [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f + [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [481] return + [483] return to:@return sprites_init: scope:[sprites_init] from main::@9 - [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f - [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f + [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [486] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [486] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 - [491] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [492] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [488] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [488] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 + [493] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [494] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [493] return + [495] return to:@return render_init: scope:[render_init] from main::@8 - [494] phi() + [496] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [496] phi() + [498] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) - [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) - [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [504] call render_screen_original + [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) + [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) + [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [506] call render_screen_original to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 - [505] phi() - [506] call render_screen_original + [507] phi() + [508] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@3 - [507] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) - [507] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) - [507] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 - [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 - [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [514] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [515] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [509] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) + [509] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) + [509] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 + [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 + [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [516] return + [518] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@2 render_init::@3 - [517] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [519] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5 - [518] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) - [518] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) - [518] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) - [518] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) - [518] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) + [520] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) + [520] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) + [520] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) + [520] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) + [520] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [519] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [519] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [519] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [521] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [523] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [524] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [525] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [521] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [521] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [521] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [527] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [526] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [526] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [526] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [526] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [526] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [528] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [529] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [531] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [532] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [533] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [534] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 + [528] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [528] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [528] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [528] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [528] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [536] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [535] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [535] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [535] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [537] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [539] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [540] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [541] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 + [537] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [537] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [537] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [543] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 to:render_screen_original::@5 render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4 - [542] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [543] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 + [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [545] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5 - [544] return + [546] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff - [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff + [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [547] return + [549] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [549] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [550] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [551] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 - [552] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 - [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 - [554] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [555] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 + [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [554] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [555] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [556] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [557] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 + [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [559] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [560] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [563] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [565] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 + [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 + [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 - [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 + [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [571] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [573] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [574] return + [576] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [581] phi() + [583] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [583] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [584] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [587] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index 1c8a6cc44..7561f361e 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -1,5 +1,5 @@ -Resolved forward reference next_piece_idx to (byte) next_piece_idx Resolved forward reference PIECES to (word[]) PIECES +Resolved forward reference next_piece_idx to (byte) next_piece_idx Resolved forward reference PIECES_NEXT_CHARS to (byte[]) PIECES_NEXT_CHARS Resolved forward reference next_piece_idx to (byte) next_piece_idx Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() @@ -7,6 +7,21 @@ 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_NONE to (byte) COLLISION_NONE +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte) render_init::i) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_2 + (byte) render_init::i) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte~) render_playfield::$2) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte~) render_moving::$1) +Fixing pointer array-indexing *((word[]) PIECES + (byte) next_piece_idx) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_init::j) +Fixing pointer array-indexing *((dword[]) SCORE_BASE_BCD + (byte) play_init::b) +Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_init::b) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_collision::yp) +Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_lock_current::yp) +Fixing pointer array-indexing *((word[]) PIECES + (byte) play_spawn_current::current_piece_idx) +Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_update_score::removed) +Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_increase_level::b) +Fixing pointer array-indexing *((dword[]) SCORE_BASE_BCD + (byte) play_increase_level::b) +Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_increase_level::b) Identified constant variable (byte) render_screen_original::SPACE Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_CHARSET @@ -14,7 +29,7 @@ Inlined call (byte~) render_show::$2 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 Inlined call (byte~) render_show::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN_2 (byte*) PLAYFIELD_CHARSET Inlined call (byte~) $6 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES Inlined call (byte~) sprites_irq::$5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES -Inlined call (byte~) play_spawn_current::$6 ← call sid_rnd +Inlined call (byte~) play_spawn_current::$5 ← call sid_rnd CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -392,7 +407,7 @@ sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init (byte) current_piece_char#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) current_xpos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) current_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40 + (byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20 (byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (dword) score_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -477,19 +492,19 @@ render_init::@1: scope:[render_init] from render_init::@1 render_init::@5 (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@5/(byte*) render_init::li_2#0 ) (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@5/(byte*) render_init::li_1#0 ) (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@5/(byte) render_init::i#0 ) - (byte/signed word/word/dword/signed dword~) render_init::$13 ← (byte) render_init::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte/signed word/word/dword/signed dword~) render_init::$13) ← (byte*) render_init::li_1#2 - (byte/signed word/word/dword/signed dword~) render_init::$14 ← (byte) render_init::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - *((byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte/signed word/word/dword/signed dword~) render_init::$14) ← (byte*) render_init::li_2#2 + (byte) render_init::$14 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER + *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 + (byte) render_init::$15 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER + *((byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 (byte) render_init::i#1 ← (byte) render_init::i#2 + rangenext(0,render_init::$12) - (bool~) render_init::$15 ← (byte) render_init::i#1 != rangelast(0,render_init::$12) - if((bool~) render_init::$15) goto render_init::@1 + (bool~) render_init::$13 ← (byte) render_init::i#1 != rangelast(0,render_init::$12) + if((bool~) render_init::$13) goto render_init::@1 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::@1 (byte) render_screen_show#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) render_screen_render#1 ← (byte/signed byte/word/signed word/dword/signed dword) $40 + (byte) render_screen_render#1 ← (byte/signed byte/word/signed word/dword/signed dword) $20 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@2 (byte) render_screen_render#9 ← phi( render_init::@2/(byte) render_screen_render#1 ) @@ -592,8 +607,8 @@ render_show::@return: scope:[render_show] from render_show::@2 render_screen_swap: scope:[render_screen_swap] from main::@42 (byte) render_screen_show#12 ← phi( main::@42/(byte) render_screen_show#21 ) (byte) render_screen_render#10 ← phi( main::@42/(byte) render_screen_render#20 ) - (byte) render_screen_render#3 ← (byte) render_screen_render#10 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 - (byte) render_screen_show#3 ← (byte) render_screen_show#12 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 + (byte) render_screen_render#3 ← (byte) render_screen_render#10 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 + (byte) render_screen_show#3 ← (byte) render_screen_show#12 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap (byte) render_screen_show#13 ← phi( render_screen_swap/(byte) render_screen_show#3 ) @@ -830,12 +845,12 @@ render_playfield: scope:[render_playfield] from main::@23 main::@31 to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 (byte) render_playfield::i#3 ← phi( render_playfield/(byte) render_playfield::i#0 render_playfield::@3/(byte) render_playfield::i#4 ) - (byte) render_screen_render#13 ← phi( render_playfield/(byte) render_screen_render#22 render_playfield::@3/(byte) render_screen_render#23 ) (byte) render_playfield::l#2 ← phi( render_playfield/(byte) render_playfield::l#0 render_playfield::@3/(byte) render_playfield::l#1 ) - (byte/signed word/word/dword/signed dword~) render_playfield::$2 ← (byte) render_playfield::l#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte/signed word/word/dword/signed dword~) render_playfield::$3 ← (byte) render_screen_render#13 + (byte/signed word/word/dword/signed dword~) render_playfield::$2 - (byte*) render_playfield::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte/signed word/word/dword/signed dword~) render_playfield::$3) - (byte/signed word/word/dword/signed dword~) render_playfield::$4 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_screen_render#13 ← phi( render_playfield/(byte) render_screen_render#22 render_playfield::@3/(byte) render_screen_render#23 ) + (byte~) render_playfield::$2 ← (byte) render_screen_render#13 + (byte) render_playfield::l#2 + (byte) render_playfield::$6 ← (byte~) render_playfield::$2 * (const byte) SIZEOF_POINTER + (byte*) render_playfield::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) + (byte/signed word/word/dword/signed dword~) render_playfield::$3 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_playfield::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 @@ -847,17 +862,17 @@ render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render *((byte*) render_playfield::screen_line#2) ← *((byte[$3]) playfield#0 + (byte) render_playfield::i#2) (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_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::$4) - (bool~) render_playfield::$5 ← (byte) render_playfield::c#1 != rangelast(0,render_playfield::$4) - if((bool~) render_playfield::$5) goto render_playfield::@2 + (byte) render_playfield::c#1 ← (byte) render_playfield::c#2 + rangenext(0,render_playfield::$3) + (bool~) render_playfield::$4 ← (byte) render_playfield::c#1 != rangelast(0,render_playfield::$3) + if((bool~) render_playfield::$4) 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_screen_render#23 ← phi( render_playfield::@2/(byte) render_screen_render#32 ) (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(2,render_playfield::$1) - (bool~) render_playfield::$6 ← (byte) render_playfield::l#1 != rangelast(2,render_playfield::$1) - if((bool~) render_playfield::$6) goto render_playfield::@1 + (bool~) render_playfield::$5 ← (byte) render_playfield::l#1 != rangelast(2,render_playfield::$1) + if((bool~) render_playfield::$5) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return @@ -869,8 +884,7 @@ render_moving: scope:[render_moving] from main::@32 main::@39 (byte) render_screen_render#33 ← phi( main::@32/(byte) render_screen_render#36 main::@39/(byte) render_screen_render#39 ) (byte) current_ypos#13 ← phi( main::@32/(byte) current_ypos#30 main::@39/(byte) current_ypos#31 ) (byte) render_moving::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte/signed word/word/dword/signed dword~) render_moving::$0 ← (byte) current_ypos#13 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) render_moving::ypos2#0 ← (byte/signed word/word/dword/signed dword~) render_moving::$0 + (byte) render_moving::ypos#0 ← (byte) current_ypos#13 (byte) render_moving::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 @@ -880,9 +894,9 @@ render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 (byte) render_moving::i#5 ← phi( render_moving/(byte) render_moving::i#0 render_moving::@3/(byte) render_moving::i#8 ) (byte) current_xpos#36 ← phi( render_moving/(byte) current_xpos#59 render_moving::@3/(byte) current_xpos#60 ) (byte) render_screen_render#24 ← phi( render_moving/(byte) render_screen_render#33 render_moving::@3/(byte) render_screen_render#34 ) - (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) - (bool~) render_moving::$1 ← (byte) render_moving::ypos2#2 > (byte/signed byte/word/signed word/dword/signed dword) 2 - if((bool~) render_moving::$1) goto render_moving::@2 + (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) + (bool~) render_moving::$0 ← (byte) render_moving::ypos#2 > (byte/signed byte/word/signed word/dword/signed dword) 1 + if((bool~) render_moving::$0) goto render_moving::@2 to:render_moving::@8 render_moving::@2: scope:[render_moving] from render_moving::@1 (byte) render_moving::l#8 ← phi( render_moving::@1/(byte) render_moving::l#5 ) @@ -890,10 +904,11 @@ render_moving::@2: scope:[render_moving] from render_moving::@1 (byte) render_moving::i#6 ← phi( render_moving::@1/(byte) render_moving::i#5 ) (byte*) current_piece_gfx#29 ← phi( render_moving::@1/(byte*) current_piece_gfx#46 ) (byte) current_xpos#16 ← phi( render_moving::@1/(byte) current_xpos#36 ) - (byte) render_moving::ypos2#3 ← phi( render_moving::@1/(byte) render_moving::ypos2#2 ) + (byte) render_moving::ypos#3 ← phi( render_moving::@1/(byte) render_moving::ypos#2 ) (byte) render_screen_render#14 ← phi( render_moving::@1/(byte) render_screen_render#24 ) - (byte~) render_moving::$2 ← (byte) render_screen_render#14 + (byte) render_moving::ypos2#3 - (byte*) render_moving::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) + (byte~) render_moving::$1 ← (byte) render_screen_render#14 + (byte) render_moving::ypos#3 + (byte) render_moving::$6 ← (byte~) render_moving::$1 * (const byte) SIZEOF_POINTER + (byte*) render_moving::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) (byte) render_moving::xpos#0 ← (byte) current_xpos#16 (byte) render_moving::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_moving::@4 @@ -903,7 +918,7 @@ render_moving::@8: scope:[render_moving] from render_moving::@1 (byte) current_xpos#82 ← phi( render_moving::@1/(byte) current_xpos#36 ) (byte) render_screen_render#42 ← phi( render_moving::@1/(byte) render_screen_render#24 ) (byte) render_moving::l#4 ← phi( render_moving::@1/(byte) render_moving::l#5 ) - (byte) render_moving::ypos2#6 ← phi( render_moving::@1/(byte) render_moving::ypos2#2 ) + (byte) render_moving::ypos#6 ← phi( render_moving::@1/(byte) render_moving::ypos#2 ) (byte) render_moving::i#3 ← phi( render_moving::@1/(byte) render_moving::i#5 ) (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 @@ -914,17 +929,17 @@ render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving:: (byte) current_xpos#60 ← phi( render_moving::@5/(byte) current_xpos#81 render_moving::@8/(byte) current_xpos#82 ) (byte) render_screen_render#34 ← phi( render_moving::@5/(byte) render_screen_render#41 render_moving::@8/(byte) render_screen_render#42 ) (byte) render_moving::l#2 ← phi( render_moving::@5/(byte) render_moving::l#3 render_moving::@8/(byte) render_moving::l#4 ) - (byte) render_moving::ypos2#4 ← phi( render_moving::@5/(byte) render_moving::ypos2#5 render_moving::@8/(byte) render_moving::ypos2#6 ) - (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_moving::ypos#4 ← phi( render_moving::@5/(byte) render_moving::ypos#5 render_moving::@8/(byte) render_moving::ypos#6 ) + (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#4 (byte) render_moving::l#1 ← (byte) render_moving::l#2 + rangenext(0,3) - (bool~) render_moving::$6 ← (byte) render_moving::l#1 != rangelast(0,3) - if((bool~) render_moving::$6) goto render_moving::@1 + (bool~) render_moving::$5 ← (byte) render_moving::l#1 != rangelast(0,3) + if((bool~) render_moving::$5) goto render_moving::@1 to:render_moving::@return render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 (byte) current_xpos#98 ← phi( render_moving::@2/(byte) current_xpos#16 render_moving::@5/(byte) current_xpos#81 ) (byte) render_screen_render#46 ← phi( render_moving::@2/(byte) render_screen_render#14 render_moving::@5/(byte) render_screen_render#41 ) (byte) render_moving::l#6 ← phi( render_moving::@2/(byte) render_moving::l#8 render_moving::@5/(byte) render_moving::l#3 ) - (byte) render_moving::ypos2#7 ← phi( render_moving::@2/(byte) render_moving::ypos2#3 render_moving::@5/(byte) render_moving::ypos2#5 ) + (byte) render_moving::ypos#7 ← phi( render_moving::@2/(byte) render_moving::ypos#3 render_moving::@5/(byte) render_moving::ypos#5 ) (byte*) render_moving::screen_line#2 ← phi( render_moving::@2/(byte*) render_moving::screen_line#0 render_moving::@5/(byte*) render_moving::screen_line#3 ) (byte) current_piece_char#24 ← phi( render_moving::@2/(byte) current_piece_char#37 render_moving::@5/(byte) current_piece_char#38 ) (byte) render_moving::c#3 ← phi( render_moving::@2/(byte) render_moving::c#0 render_moving::@5/(byte) render_moving::c#1 ) @@ -933,9 +948,9 @@ render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving:: (byte*) current_piece_gfx#15 ← phi( render_moving::@2/(byte*) current_piece_gfx#29 render_moving::@5/(byte*) current_piece_gfx#30 ) (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#15 + (byte) render_moving::i#4) (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 - (bool~) render_moving::$3 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) render_moving::$4 ← ! (bool~) render_moving::$3 - if((bool~) render_moving::$4) goto render_moving::@5 + (bool~) render_moving::$2 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) render_moving::$3 ← ! (bool~) render_moving::$2 + if((bool~) render_moving::$3) goto render_moving::@5 to:render_moving::@6 render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6 (byte) current_xpos#81 ← phi( render_moving::@4/(byte) current_xpos#98 render_moving::@6/(byte) current_xpos#99 ) @@ -945,13 +960,13 @@ render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving:: (byte) render_moving::i#7 ← phi( render_moving::@4/(byte) render_moving::i#2 render_moving::@6/(byte) render_moving::i#9 ) (byte*) current_piece_gfx#30 ← phi( render_moving::@4/(byte*) current_piece_gfx#15 render_moving::@6/(byte*) current_piece_gfx#47 ) (byte) render_moving::l#3 ← phi( render_moving::@4/(byte) render_moving::l#6 render_moving::@6/(byte) render_moving::l#7 ) - (byte) render_moving::ypos2#5 ← phi( render_moving::@4/(byte) render_moving::ypos2#7 render_moving::@6/(byte) render_moving::ypos2#8 ) + (byte) render_moving::ypos#5 ← phi( render_moving::@4/(byte) render_moving::ypos#7 render_moving::@6/(byte) render_moving::ypos#8 ) (byte) render_moving::c#2 ← phi( render_moving::@4/(byte) render_moving::c#3 render_moving::@6/(byte) render_moving::c#4 ) (byte) render_moving::xpos#2 ← phi( render_moving::@4/(byte) render_moving::xpos#4 render_moving::@6/(byte) render_moving::xpos#3 ) (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 (byte) render_moving::c#1 ← (byte) render_moving::c#2 + rangenext(0,3) - (bool~) render_moving::$5 ← (byte) render_moving::c#1 != rangelast(0,3) - if((bool~) render_moving::$5) goto render_moving::@4 + (bool~) render_moving::$4 ← (byte) render_moving::c#1 != rangelast(0,3) + if((bool~) render_moving::$4) goto render_moving::@4 to:render_moving::@3 render_moving::@6: scope:[render_moving] from render_moving::@4 (byte) current_xpos#99 ← phi( render_moving::@4/(byte) current_xpos#98 ) @@ -959,7 +974,7 @@ render_moving::@6: scope:[render_moving] from render_moving::@4 (byte) render_moving::i#9 ← phi( render_moving::@4/(byte) render_moving::i#2 ) (byte*) current_piece_gfx#47 ← phi( render_moving::@4/(byte*) current_piece_gfx#15 ) (byte) render_moving::l#7 ← phi( render_moving::@4/(byte) render_moving::l#6 ) - (byte) render_moving::ypos2#8 ← phi( render_moving::@4/(byte) render_moving::ypos2#7 ) + (byte) render_moving::ypos#8 ← phi( render_moving::@4/(byte) render_moving::ypos#7 ) (byte) render_moving::c#4 ← phi( render_moving::@4/(byte) render_moving::c#3 ) (byte) render_moving::xpos#3 ← phi( render_moving::@4/(byte) render_moving::xpos#4 ) (byte*) render_moving::screen_line#1 ← phi( render_moving::@4/(byte*) render_moving::screen_line#2 ) @@ -983,20 +998,20 @@ render_next: scope:[render_next] from main::@33 main::@40 render_next::@1: scope:[render_next] from render_next (byte) next_piece_idx#24 ← phi( render_next/(byte) next_piece_idx#36 ) (word) render_next::next_area_offset#1 ← phi( render_next/(word) render_next::next_area_offset#0 ) - (byte*~) render_next::$6 ← (byte*) PLAYFIELD_SCREEN_1#0 + (word) render_next::next_area_offset#1 - (byte*) render_next::screen_next_area#1 ← (byte*~) render_next::$6 + (byte*~) render_next::$5 ← (byte*) PLAYFIELD_SCREEN_1#0 + (word) render_next::next_area_offset#1 + (byte*) render_next::screen_next_area#1 ← (byte*~) render_next::$5 to:render_next::@2 render_next::@3: scope:[render_next] from render_next (byte) next_piece_idx#25 ← phi( render_next/(byte) next_piece_idx#36 ) (word) render_next::next_area_offset#2 ← phi( render_next/(word) render_next::next_area_offset#0 ) - (byte*~) render_next::$5 ← (byte*) PLAYFIELD_SCREEN_2#0 + (word) render_next::next_area_offset#2 - (byte*) render_next::screen_next_area#2 ← (byte*~) render_next::$5 + (byte*~) render_next::$4 ← (byte*) PLAYFIELD_SCREEN_2#0 + (word) render_next::next_area_offset#2 + (byte*) render_next::screen_next_area#2 ← (byte*~) render_next::$4 to:render_next::@2 render_next::@2: scope:[render_next] from render_next::@1 render_next::@3 (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(byte*) render_next::screen_next_area#1 render_next::@3/(byte*) render_next::screen_next_area#2 ) (byte) next_piece_idx#12 ← phi( render_next::@1/(byte) next_piece_idx#24 render_next::@3/(byte) next_piece_idx#25 ) - (byte/signed word/word/dword/signed dword~) render_next::$4 ← (byte) next_piece_idx#12 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte*) render_next::next_piece_gfx#0 ← ((byte*)) *((word[]) PIECES#0 + (byte/signed word/word/dword/signed dword~) render_next::$4) + (byte) render_next::$9 ← (byte) next_piece_idx#12 * (const byte) SIZEOF_WORD + (byte*) render_next::next_piece_gfx#0 ← ((byte*)) *((word[]) PIECES#0 + (byte) render_next::$9) (byte) render_next::next_piece_char#0 ← *((byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) (byte) render_next::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_next::@5 @@ -1015,8 +1030,8 @@ render_next::@6: scope:[render_next] from render_next::@5 render_next::@8 (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@5/(byte*) render_next::next_piece_gfx#3 render_next::@8/(byte*) render_next::next_piece_gfx#4 ) (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 - (bool~) render_next::$7 ← (byte) render_next::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) render_next::$7) goto render_next::@7 + (bool~) render_next::$6 ← (byte) render_next::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) render_next::$6) goto render_next::@7 to:render_next::@9 render_next::@7: scope:[render_next] from render_next::@6 (byte) render_next::l#4 ← phi( render_next::@6/(byte) render_next::l#6 ) @@ -1042,8 +1057,8 @@ render_next::@8: scope:[render_next] from render_next::@7 render_next::@9 (byte*) render_next::screen_next_area#7 ← phi( render_next::@7/(byte*) render_next::screen_next_area#5 render_next::@9/(byte*) render_next::screen_next_area#6 ) (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#7 (byte) render_next::c#1 ← (byte) render_next::c#2 + rangenext(0,3) - (bool~) render_next::$8 ← (byte) render_next::c#1 != rangelast(0,3) - if((bool~) render_next::$8) goto render_next::@6 + (bool~) render_next::$7 ← (byte) render_next::c#1 != rangelast(0,3) + if((bool~) render_next::$7) goto render_next::@6 to:render_next::@11 render_next::@11: scope:[render_next] from render_next::@8 (byte) render_next::next_piece_char#5 ← phi( render_next::@8/(byte) render_next::next_piece_char#4 ) @@ -1052,8 +1067,8 @@ render_next::@11: scope:[render_next] from render_next::@8 (byte*) render_next::screen_next_area#8 ← phi( render_next::@8/(byte*) render_next::screen_next_area#3 ) (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#8 + (byte/signed byte/word/signed word/dword/signed dword) $24 (byte) render_next::l#1 ← (byte) render_next::l#2 + rangenext(0,3) - (bool~) render_next::$9 ← (byte) render_next::l#1 != rangelast(0,3) - if((bool~) render_next::$9) goto render_next::@5 + (bool~) render_next::$8 ← (byte) render_next::l#1 != rangelast(0,3) + if((bool~) render_next::$8) goto render_next::@5 to:render_next::@return render_next::@return: scope:[render_next] from render_next::@11 return @@ -1444,14 +1459,14 @@ play_init::@1: scope:[play_init] from play_init play_init::@1 (byte) play_init::idx#2 ← phi( play_init/(byte) play_init::idx#0 play_init::@1/(byte) play_init::idx#1 ) (byte*) play_init::pli#2 ← phi( play_init/(byte*) play_init::pli#0 play_init::@1/(byte*) play_init::pli#1 ) (byte) play_init::j#2 ← phi( play_init/(byte) play_init::j#0 play_init::@1/(byte) play_init::j#1 ) - (byte/signed word/word/dword/signed dword~) play_init::$2 ← (byte) play_init::j#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte/signed word/word/dword/signed dword~) play_init::$2) ← (byte*) play_init::pli#2 + (byte) play_init::$4 ← (byte) play_init::j#2 * (const byte) SIZEOF_POINTER + *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 *((byte[$29]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (byte) PLAYFIELD_COLS#0 (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (byte) PLAYFIELD_COLS#0 (byte) play_init::j#1 ← (byte) play_init::j#2 + rangenext(0,play_init::$1) - (bool~) play_init::$3 ← (byte) play_init::j#1 != rangelast(0,play_init::$1) - if((bool~) play_init::$3) goto play_init::@1 + (bool~) play_init::$2 ← (byte) play_init::j#1 != rangelast(0,play_init::$1) + if((bool~) play_init::$2) goto play_init::@1 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@1 (byte) level#13 ← phi( play_init::@1/(byte) level#28 ) @@ -1463,12 +1478,11 @@ play_init::@2: scope:[play_init] from play_init::@1 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 (byte) current_movedown_slow#29 ← phi( play_init::@2/(byte) current_movedown_slow#1 play_init::@3/(byte) current_movedown_slow#29 ) (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#0 play_init::@3/(byte) play_init::b#1 ) - (byte/signed word/word/dword/signed dword~) play_init::$4 ← (byte) play_init::b#2 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte) play_init::b4#0 ← (byte/signed word/word/dword/signed dword~) play_init::$4 - *((dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) + (byte) play_init::$5 ← (byte) play_init::b#2 * (const byte) SIZEOF_DWORD + *((dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) (byte) play_init::b#1 ← (byte) play_init::b#2 + rangenext(0,4) - (bool~) play_init::$5 ← (byte) play_init::b#1 != rangelast(0,4) - if((bool~) play_init::$5) goto play_init::@3 + (bool~) play_init::$3 ← (byte) play_init::b#1 != rangelast(0,4) + if((bool~) play_init::$3) goto play_init::@3 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@3 (byte) current_movedown_slow#16 ← phi( play_init::@3/(byte) current_movedown_slow#29 ) @@ -2288,8 +2302,7 @@ play_collision: scope:[play_collision] from play_move_down::@9 play_move_leftri (byte*~) play_collision::$0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 (byte*) play_collision::piece_gfx#0 ← (byte*~) play_collision::$0 (byte) play_collision::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte/signed word/word/dword/signed dword~) play_collision::$1 ← (byte) play_collision::ypos#5 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) play_collision::ypos2#0 ← (byte/signed word/word/dword/signed dword~) play_collision::$1 + (byte) play_collision::yp#0 ← (byte) play_collision::ypos#5 (byte) play_collision::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@17 @@ -2297,38 +2310,39 @@ play_collision::@1: scope:[play_collision] from play_collision play_collision:: (byte) play_collision::i#3 ← phi( play_collision/(byte) play_collision::i#0 play_collision::@17/(byte) play_collision::i#5 ) (byte*) play_collision::piece_gfx#2 ← phi( play_collision/(byte*) play_collision::piece_gfx#0 play_collision::@17/(byte*) play_collision::piece_gfx#4 ) (byte) play_collision::xpos#5 ← phi( play_collision/(byte) play_collision::xpos#6 play_collision::@17/(byte) play_collision::xpos#7 ) - (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@17/(byte) play_collision::ypos2#1 ) - (byte*) play_collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - (byte) play_collision::col#0 ← (byte) play_collision::xpos#5 + (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@17/(byte) play_collision::yp#1 ) + (byte) play_collision::$14 ← (byte) play_collision::yp#2 * (const byte) SIZEOF_POINTER + (byte*) play_collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) + (byte) play_collision::xp#0 ← (byte) play_collision::xpos#5 (byte) play_collision::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@3 (byte*) play_collision::playfield_line#5 ← phi( play_collision::@1/(byte*) play_collision::playfield_line#0 play_collision::@3/(byte*) play_collision::playfield_line#6 ) (byte) play_collision::xpos#9 ← phi( play_collision::@1/(byte) play_collision::xpos#5 play_collision::@3/(byte) play_collision::xpos#8 ) (byte) play_collision::l#4 ← phi( play_collision::@1/(byte) play_collision::l#6 play_collision::@3/(byte) play_collision::l#3 ) - (byte) play_collision::ypos2#5 ← phi( play_collision::@1/(byte) play_collision::ypos2#2 play_collision::@3/(byte) play_collision::ypos2#6 ) + (byte) play_collision::yp#5 ← phi( play_collision::@1/(byte) play_collision::yp#2 play_collision::@3/(byte) play_collision::yp#6 ) (byte) play_collision::c#3 ← phi( play_collision::@1/(byte) play_collision::c#0 play_collision::@3/(byte) play_collision::c#1 ) - (byte) play_collision::col#6 ← phi( play_collision::@1/(byte) play_collision::col#0 play_collision::@3/(byte) play_collision::col#1 ) + (byte) play_collision::xp#6 ← phi( play_collision::@1/(byte) play_collision::xp#0 play_collision::@3/(byte) play_collision::xp#1 ) (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@3/(byte) play_collision::i#4 ) (byte*) play_collision::piece_gfx#1 ← phi( play_collision::@1/(byte*) play_collision::piece_gfx#2 play_collision::@3/(byte*) play_collision::piece_gfx#3 ) - (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_collision::$3 ← ! (bool~) play_collision::$2 + (bool~) play_collision::$1 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$2 ← ! (bool~) play_collision::$1 (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - if((bool~) play_collision::$3) goto play_collision::@3 + if((bool~) play_collision::$2) goto play_collision::@3 to:play_collision::@14 play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@7 (byte*) play_collision::playfield_line#6 ← phi( play_collision::@2/(byte*) play_collision::playfield_line#5 play_collision::@7/(byte*) play_collision::playfield_line#7 ) (byte) play_collision::xpos#8 ← phi( play_collision::@2/(byte) play_collision::xpos#9 play_collision::@7/(byte) play_collision::xpos#10 ) (byte) play_collision::l#3 ← phi( play_collision::@2/(byte) play_collision::l#4 play_collision::@7/(byte) play_collision::l#5 ) - (byte) play_collision::ypos2#6 ← phi( play_collision::@2/(byte) play_collision::ypos2#5 play_collision::@7/(byte) play_collision::ypos2#7 ) + (byte) play_collision::yp#6 ← phi( play_collision::@2/(byte) play_collision::yp#5 play_collision::@7/(byte) play_collision::yp#7 ) (byte) play_collision::i#4 ← phi( play_collision::@2/(byte) play_collision::i#1 play_collision::@7/(byte) play_collision::i#6 ) (byte*) play_collision::piece_gfx#3 ← phi( play_collision::@2/(byte*) play_collision::piece_gfx#1 play_collision::@7/(byte*) play_collision::piece_gfx#5 ) (byte) play_collision::c#2 ← phi( play_collision::@2/(byte) play_collision::c#3 play_collision::@7/(byte) play_collision::c#4 ) - (byte) play_collision::col#2 ← phi( play_collision::@2/(byte) play_collision::col#6 play_collision::@7/(byte) play_collision::col#7 ) - (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + (byte) play_collision::xp#2 ← phi( play_collision::@2/(byte) play_collision::xp#6 play_collision::@7/(byte) play_collision::xp#7 ) + (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 (byte) play_collision::c#1 ← (byte) play_collision::c#2 + rangenext(0,3) - (bool~) play_collision::$14 ← (byte) play_collision::c#1 != rangelast(0,3) - if((bool~) play_collision::$14) goto play_collision::@2 + (bool~) play_collision::$12 ← (byte) play_collision::c#1 != rangelast(0,3) + if((bool~) play_collision::$12) goto play_collision::@2 to:play_collision::@17 play_collision::@14: scope:[play_collision] from play_collision::@2 (byte) play_collision::xpos#14 ← phi( play_collision::@2/(byte) play_collision::xpos#9 ) @@ -2337,26 +2351,25 @@ play_collision::@14: scope:[play_collision] from play_collision::@2 (byte*) play_collision::piece_gfx#9 ← phi( play_collision::@2/(byte*) play_collision::piece_gfx#1 ) (byte) play_collision::c#8 ← phi( play_collision::@2/(byte) play_collision::c#3 ) (byte*) play_collision::playfield_line#4 ← phi( play_collision::@2/(byte*) play_collision::playfield_line#5 ) - (byte) play_collision::col#8 ← phi( play_collision::@2/(byte) play_collision::col#6 ) - (byte) play_collision::ypos2#3 ← phi( play_collision::@2/(byte) play_collision::ypos2#5 ) - (byte/signed word/word/dword/signed dword~) play_collision::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 - (bool~) play_collision::$5 ← (byte) play_collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) play_collision::$4 - (bool~) play_collision::$6 ← ! (bool~) play_collision::$5 - if((bool~) play_collision::$6) goto play_collision::@4 + (byte) play_collision::xp#8 ← phi( play_collision::@2/(byte) play_collision::xp#6 ) + (byte) play_collision::yp#3 ← phi( play_collision::@2/(byte) play_collision::yp#5 ) + (bool~) play_collision::$3 ← (byte) play_collision::yp#3 >= (byte) PLAYFIELD_LINES#0 + (bool~) play_collision::$4 ← ! (bool~) play_collision::$3 + if((bool~) play_collision::$4) goto play_collision::@4 to:play_collision::@15 play_collision::@4: scope:[play_collision] from play_collision::@14 (byte) play_collision::xpos#13 ← phi( play_collision::@14/(byte) play_collision::xpos#14 ) (byte) play_collision::l#9 ← phi( play_collision::@14/(byte) play_collision::l#10 ) - (byte) play_collision::ypos2#10 ← phi( play_collision::@14/(byte) play_collision::ypos2#3 ) + (byte) play_collision::yp#10 ← phi( play_collision::@14/(byte) play_collision::yp#3 ) (byte) play_collision::i#9 ← phi( play_collision::@14/(byte) play_collision::i#10 ) (byte*) play_collision::piece_gfx#8 ← phi( play_collision::@14/(byte*) play_collision::piece_gfx#9 ) (byte) play_collision::c#7 ← phi( play_collision::@14/(byte) play_collision::c#8 ) (byte*) play_collision::playfield_line#3 ← phi( play_collision::@14/(byte*) play_collision::playfield_line#4 ) - (byte) play_collision::col#3 ← phi( play_collision::@14/(byte) play_collision::col#8 ) - (byte~) play_collision::$7 ← (byte) play_collision::col#3 & (byte/word/signed word/dword/signed dword) $80 - (bool~) play_collision::$8 ← (byte~) play_collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_collision::$9 ← ! (bool~) play_collision::$8 - if((bool~) play_collision::$9) goto play_collision::@5 + (byte) play_collision::xp#3 ← phi( play_collision::@14/(byte) play_collision::xp#8 ) + (byte~) play_collision::$5 ← (byte) play_collision::xp#3 & (byte/word/signed word/dword/signed dword) $80 + (bool~) play_collision::$6 ← (byte~) play_collision::$5 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$7 ← ! (bool~) play_collision::$6 + if((bool~) play_collision::$7) goto play_collision::@5 to:play_collision::@8 play_collision::@15: scope:[play_collision] from play_collision::@14 (byte) play_collision::return#4 ← (byte) COLLISION_BOTTOM#0 @@ -2369,15 +2382,15 @@ play_collision::@return: scope:[play_collision] from play_collision::@10 play_c play_collision::@5: scope:[play_collision] from play_collision::@4 (byte) play_collision::xpos#12 ← phi( play_collision::@4/(byte) play_collision::xpos#13 ) (byte) play_collision::l#8 ← phi( play_collision::@4/(byte) play_collision::l#9 ) - (byte) play_collision::ypos2#9 ← phi( play_collision::@4/(byte) play_collision::ypos2#10 ) + (byte) play_collision::yp#9 ← phi( play_collision::@4/(byte) play_collision::yp#10 ) (byte) play_collision::i#8 ← phi( play_collision::@4/(byte) play_collision::i#9 ) (byte*) play_collision::piece_gfx#7 ← phi( play_collision::@4/(byte*) play_collision::piece_gfx#8 ) (byte) play_collision::c#6 ← phi( play_collision::@4/(byte) play_collision::c#7 ) (byte*) play_collision::playfield_line#2 ← phi( play_collision::@4/(byte*) play_collision::playfield_line#3 ) - (byte) play_collision::col#4 ← phi( play_collision::@4/(byte) play_collision::col#3 ) - (bool~) play_collision::$10 ← (byte) play_collision::col#4 >= (byte) PLAYFIELD_COLS#0 - (bool~) play_collision::$11 ← ! (bool~) play_collision::$10 - if((bool~) play_collision::$11) goto play_collision::@6 + (byte) play_collision::xp#4 ← phi( play_collision::@4/(byte) play_collision::xp#3 ) + (bool~) play_collision::$8 ← (byte) play_collision::xp#4 >= (byte) PLAYFIELD_COLS#0 + (bool~) play_collision::$9 ← ! (bool~) play_collision::$8 + if((bool~) play_collision::$9) goto play_collision::@6 to:play_collision::@10 play_collision::@8: scope:[play_collision] from play_collision::@4 (byte) play_collision::return#6 ← (byte) COLLISION_LEFT#0 @@ -2385,15 +2398,15 @@ play_collision::@8: scope:[play_collision] from play_collision::@4 play_collision::@6: scope:[play_collision] from play_collision::@5 (byte) play_collision::xpos#11 ← phi( play_collision::@5/(byte) play_collision::xpos#12 ) (byte) play_collision::l#7 ← phi( play_collision::@5/(byte) play_collision::l#8 ) - (byte) play_collision::ypos2#8 ← phi( play_collision::@5/(byte) play_collision::ypos2#9 ) + (byte) play_collision::yp#8 ← phi( play_collision::@5/(byte) play_collision::yp#9 ) (byte) play_collision::i#7 ← phi( play_collision::@5/(byte) play_collision::i#8 ) (byte*) play_collision::piece_gfx#6 ← phi( play_collision::@5/(byte*) play_collision::piece_gfx#7 ) (byte) play_collision::c#5 ← phi( play_collision::@5/(byte) play_collision::c#6 ) - (byte) play_collision::col#5 ← phi( play_collision::@5/(byte) play_collision::col#4 ) + (byte) play_collision::xp#5 ← phi( play_collision::@5/(byte) play_collision::xp#4 ) (byte*) play_collision::playfield_line#1 ← phi( play_collision::@5/(byte*) play_collision::playfield_line#2 ) - (bool~) play_collision::$12 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_collision::$13 ← ! (bool~) play_collision::$12 - if((bool~) play_collision::$13) goto play_collision::@7 + (bool~) play_collision::$10 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$11 ← ! (bool~) play_collision::$10 + if((bool~) play_collision::$11) goto play_collision::@7 to:play_collision::@12 play_collision::@10: scope:[play_collision] from play_collision::@5 (byte) play_collision::return#7 ← (byte) COLLISION_RIGHT#0 @@ -2402,11 +2415,11 @@ play_collision::@7: scope:[play_collision] from play_collision::@6 (byte*) play_collision::playfield_line#7 ← phi( play_collision::@6/(byte*) play_collision::playfield_line#1 ) (byte) play_collision::xpos#10 ← phi( play_collision::@6/(byte) play_collision::xpos#11 ) (byte) play_collision::l#5 ← phi( play_collision::@6/(byte) play_collision::l#7 ) - (byte) play_collision::ypos2#7 ← phi( play_collision::@6/(byte) play_collision::ypos2#8 ) + (byte) play_collision::yp#7 ← phi( play_collision::@6/(byte) play_collision::yp#8 ) (byte) play_collision::i#6 ← phi( play_collision::@6/(byte) play_collision::i#7 ) (byte*) play_collision::piece_gfx#5 ← phi( play_collision::@6/(byte*) play_collision::piece_gfx#6 ) (byte) play_collision::c#4 ← phi( play_collision::@6/(byte) play_collision::c#5 ) - (byte) play_collision::col#7 ← phi( play_collision::@6/(byte) play_collision::col#5 ) + (byte) play_collision::xp#7 ← phi( play_collision::@6/(byte) play_collision::xp#5 ) to:play_collision::@3 play_collision::@12: scope:[play_collision] from play_collision::@6 (byte) play_collision::return#8 ← (byte) COLLISION_PLAYFIELD#0 @@ -2416,11 +2429,11 @@ play_collision::@17: scope:[play_collision] from play_collision::@3 (byte*) play_collision::piece_gfx#4 ← phi( play_collision::@3/(byte*) play_collision::piece_gfx#3 ) (byte) play_collision::xpos#7 ← phi( play_collision::@3/(byte) play_collision::xpos#8 ) (byte) play_collision::l#2 ← phi( play_collision::@3/(byte) play_collision::l#3 ) - (byte) play_collision::ypos2#4 ← phi( play_collision::@3/(byte) play_collision::ypos2#6 ) - (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) play_collision::yp#4 ← phi( play_collision::@3/(byte) play_collision::yp#6 ) + (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#4 (byte) play_collision::l#1 ← (byte) play_collision::l#2 + rangenext(0,3) - (bool~) play_collision::$15 ← (byte) play_collision::l#1 != rangelast(0,3) - if((bool~) play_collision::$15) goto play_collision::@1 + (bool~) play_collision::$13 ← (byte) play_collision::l#1 != rangelast(0,3) + if((bool~) play_collision::$13) goto play_collision::@1 to:play_collision::@18 play_collision::@18: scope:[play_collision] from play_collision::@17 (byte) play_collision::return#9 ← (byte) COLLISION_NONE#0 @@ -2431,8 +2444,7 @@ play_lock_current: scope:[play_lock_current] from play_move_down::@10 (byte) current_xpos#52 ← phi( play_move_down::@10/(byte) current_xpos#70 ) (byte) current_ypos#23 ← phi( play_move_down::@10/(byte) current_ypos#44 ) (byte) play_lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte/signed word/word/dword/signed dword~) play_lock_current::$0 ← (byte) current_ypos#23 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) play_lock_current::ypos2#0 ← (byte/signed word/word/dword/signed dword~) play_lock_current::$0 + (byte) play_lock_current::yp#0 ← (byte) current_ypos#23 (byte) play_lock_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@5 @@ -2441,52 +2453,53 @@ play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lo (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) play_lock_current::i#0 play_lock_current::@5/(byte) play_lock_current::i#5 ) (byte*) current_piece_gfx#39 ← phi( play_lock_current/(byte*) current_piece_gfx#54 play_lock_current::@5/(byte*) current_piece_gfx#55 ) (byte) current_xpos#29 ← phi( play_lock_current/(byte) current_xpos#52 play_lock_current::@5/(byte) current_xpos#53 ) - (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@5/(byte) play_lock_current::ypos2#1 ) - (byte*) play_lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - (byte) play_lock_current::col#0 ← (byte) current_xpos#29 + (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@5/(byte) play_lock_current::yp#1 ) + (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 * (const byte) SIZEOF_POINTER + (byte*) play_lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) + (byte) play_lock_current::xp#0 ← (byte) current_xpos#29 (byte) play_lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@3 (byte) current_xpos#89 ← phi( play_lock_current::@1/(byte) current_xpos#29 play_lock_current::@3/(byte) current_xpos#71 ) (byte) play_lock_current::l#4 ← phi( play_lock_current::@1/(byte) play_lock_current::l#6 play_lock_current::@3/(byte) play_lock_current::l#3 ) - (byte) play_lock_current::ypos2#5 ← phi( play_lock_current::@1/(byte) play_lock_current::ypos2#2 play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) + (byte) play_lock_current::yp#5 ← phi( play_lock_current::@1/(byte) play_lock_current::yp#2 play_lock_current::@3/(byte) play_lock_current::yp#4 ) (byte*) play_lock_current::playfield_line#2 ← phi( play_lock_current::@1/(byte*) play_lock_current::playfield_line#0 play_lock_current::@3/(byte*) play_lock_current::playfield_line#3 ) (byte) current_piece_char#31 ← phi( play_lock_current::@1/(byte) current_piece_char#43 play_lock_current::@3/(byte) current_piece_char#44 ) (byte) play_lock_current::c#3 ← phi( play_lock_current::@1/(byte) play_lock_current::c#0 play_lock_current::@3/(byte) play_lock_current::c#1 ) - (byte) play_lock_current::col#4 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@3/(byte) play_lock_current::col#1 ) + (byte) play_lock_current::xp#4 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@3/(byte) play_lock_current::xp#1 ) (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@3/(byte) play_lock_current::i#4 ) (byte*) current_piece_gfx#22 ← phi( play_lock_current::@1/(byte*) current_piece_gfx#39 play_lock_current::@3/(byte*) current_piece_gfx#40 ) - (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_lock_current::$2 ← ! (bool~) play_lock_current::$1 + (bool~) play_lock_current::$0 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_lock_current::$1 ← ! (bool~) play_lock_current::$0 (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - if((bool~) play_lock_current::$2) goto play_lock_current::@3 + if((bool~) play_lock_current::$1) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 (byte) current_xpos#71 ← phi( play_lock_current::@2/(byte) current_xpos#89 play_lock_current::@4/(byte) current_xpos#90 ) (byte*) play_lock_current::playfield_line#3 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 play_lock_current::@4/(byte*) play_lock_current::playfield_line#1 ) (byte) current_piece_char#44 ← phi( play_lock_current::@2/(byte) current_piece_char#31 play_lock_current::@4/(byte) current_piece_char#17 ) (byte) play_lock_current::l#3 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 play_lock_current::@4/(byte) play_lock_current::l#5 ) - (byte) play_lock_current::ypos2#4 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 play_lock_current::@4/(byte) play_lock_current::ypos2#6 ) + (byte) play_lock_current::yp#4 ← phi( play_lock_current::@2/(byte) play_lock_current::yp#5 play_lock_current::@4/(byte) play_lock_current::yp#6 ) (byte) play_lock_current::i#4 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 play_lock_current::@4/(byte) play_lock_current::i#6 ) (byte*) current_piece_gfx#40 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#22 play_lock_current::@4/(byte*) current_piece_gfx#56 ) (byte) play_lock_current::c#2 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 play_lock_current::@4/(byte) play_lock_current::c#4 ) - (byte) play_lock_current::col#2 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 play_lock_current::@4/(byte) play_lock_current::col#3 ) - (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + (byte) play_lock_current::xp#2 ← phi( play_lock_current::@2/(byte) play_lock_current::xp#4 play_lock_current::@4/(byte) play_lock_current::xp#3 ) + (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 (byte) play_lock_current::c#1 ← (byte) play_lock_current::c#2 + rangenext(0,3) - (bool~) play_lock_current::$3 ← (byte) play_lock_current::c#1 != rangelast(0,3) - if((bool~) play_lock_current::$3) goto play_lock_current::@2 + (bool~) play_lock_current::$2 ← (byte) play_lock_current::c#1 != rangelast(0,3) + if((bool~) play_lock_current::$2) goto play_lock_current::@2 to:play_lock_current::@5 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 (byte) current_xpos#90 ← phi( play_lock_current::@2/(byte) current_xpos#89 ) (byte) play_lock_current::l#5 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 ) - (byte) play_lock_current::ypos2#6 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 ) + (byte) play_lock_current::yp#6 ← phi( play_lock_current::@2/(byte) play_lock_current::yp#5 ) (byte) play_lock_current::i#6 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 ) (byte*) current_piece_gfx#56 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#22 ) (byte) play_lock_current::c#4 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 ) - (byte) play_lock_current::col#3 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 ) + (byte) play_lock_current::xp#3 ← phi( play_lock_current::@2/(byte) play_lock_current::xp#4 ) (byte*) play_lock_current::playfield_line#1 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 ) (byte) current_piece_char#17 ← phi( play_lock_current::@2/(byte) current_piece_char#31 ) - *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::col#3) ← (byte) current_piece_char#17 + *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::xp#3) ← (byte) current_piece_char#17 to:play_lock_current::@3 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 (byte) current_piece_char#60 ← phi( play_lock_current::@3/(byte) current_piece_char#44 ) @@ -2494,11 +2507,11 @@ play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 (byte*) current_piece_gfx#55 ← phi( play_lock_current::@3/(byte*) current_piece_gfx#40 ) (byte) current_xpos#53 ← phi( play_lock_current::@3/(byte) current_xpos#71 ) (byte) play_lock_current::l#2 ← phi( play_lock_current::@3/(byte) play_lock_current::l#3 ) - (byte) play_lock_current::ypos2#3 ← phi( play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) - (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) play_lock_current::yp#3 ← phi( play_lock_current::@3/(byte) play_lock_current::yp#4 ) + (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#3 (byte) play_lock_current::l#1 ← (byte) play_lock_current::l#2 + rangenext(0,3) - (bool~) play_lock_current::$4 ← (byte) play_lock_current::l#1 != rangelast(0,3) - if((bool~) play_lock_current::$4) goto play_lock_current::@1 + (bool~) play_lock_current::$3 ← (byte) play_lock_current::l#1 != rangelast(0,3) + if((bool~) play_lock_current::$3) goto play_lock_current::@1 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 return @@ -2507,12 +2520,12 @@ play_spawn_current: scope:[play_spawn_current] from main::@29 main::@30 play_mo (byte) game_over#75 ← phi( main::@29/(byte) game_over#30 main::@30/(byte) game_over#7 play_move_down::@21/(byte) game_over#26 ) (byte) next_piece_idx#17 ← phi( main::@29/(byte) next_piece_idx#32 main::@30/(byte) next_piece_idx#7 play_move_down::@21/(byte) next_piece_idx#29 ) (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 - (byte/signed word/word/dword/signed dword~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte*) current_piece#5 ← ((byte*)) *((word[]) PIECES#0 + (byte/signed word/word/dword/signed dword~) play_spawn_current::$0) + (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 * (const byte) SIZEOF_WORD + (byte*) current_piece#5 ← ((byte*)) *((word[]) PIECES#0 + (byte) play_spawn_current::$7) (byte) current_piece_char#5 ← *((byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) (byte) current_orientation#8 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) play_spawn_current::$1 ← (byte*) current_piece#5 + (byte) current_orientation#8 - (byte*) current_piece_gfx#8 ← (byte*~) play_spawn_current::$1 + (byte*~) play_spawn_current::$0 ← (byte*) current_piece#5 + (byte) current_orientation#8 + (byte*) current_piece_gfx#8 ← (byte*~) play_spawn_current::$0 (byte) current_xpos#9 ← *((byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) (byte) current_ypos#6 ← *((byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) (byte) play_collision::xpos#4 ← (byte) current_xpos#9 @@ -2530,10 +2543,10 @@ play_spawn_current::@10: scope:[play_spawn_current] from play_spawn_current (byte) current_piece_char#76 ← phi( play_spawn_current/(byte) current_piece_char#5 ) (byte*) current_piece#73 ← phi( play_spawn_current/(byte*) current_piece#5 ) (byte) play_collision::return#16 ← phi( play_spawn_current/(byte) play_collision::return#10 ) - (byte~) play_spawn_current::$2 ← (byte) play_collision::return#16 - (bool~) play_spawn_current::$3 ← (byte~) play_spawn_current::$2 == (byte) COLLISION_PLAYFIELD#0 - (bool~) play_spawn_current::$4 ← ! (bool~) play_spawn_current::$3 - if((bool~) play_spawn_current::$4) goto play_spawn_current::@1 + (byte~) play_spawn_current::$1 ← (byte) play_collision::return#16 + (bool~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 == (byte) COLLISION_PLAYFIELD#0 + (bool~) play_spawn_current::$3 ← ! (bool~) play_spawn_current::$2 + if((bool~) play_spawn_current::$3) goto play_spawn_current::@1 to:play_spawn_current::@2 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@10 play_spawn_current::@2 (byte) game_over#52 ← phi( play_spawn_current::@10/(byte) game_over#65 play_spawn_current::@2/(byte) game_over#5 ) @@ -2563,8 +2576,8 @@ play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 (byte) current_piece_char#45 ← phi( play_spawn_current::@1/(byte) current_piece_char#61 play_spawn_current::@9/(byte) current_piece_char#62 ) (byte*) current_piece#48 ← phi( play_spawn_current::@1/(byte*) current_piece#62 play_spawn_current::@9/(byte*) current_piece#63 ) (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) play_spawn_current::piece_idx#0 play_spawn_current::@9/(byte) play_spawn_current::piece_idx#1 ) - (bool~) play_spawn_current::$5 ← (byte) play_spawn_current::piece_idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 7 - if((bool~) play_spawn_current::$5) goto play_spawn_current::@4 + (bool~) play_spawn_current::$4 ← (byte) play_spawn_current::piece_idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 7 + if((bool~) play_spawn_current::$4) goto play_spawn_current::@4 to:play_spawn_current::@5 play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current::@3 (byte) game_over#85 ← phi( play_spawn_current::@3/(byte) game_over#39 ) @@ -2605,9 +2618,9 @@ play_spawn_current::@9: scope:[play_spawn_current] from play_spawn_current::sid (byte) current_piece_char#62 ← phi( play_spawn_current::sid_rnd1_@return/(byte) current_piece_char#78 ) (byte*) current_piece#63 ← phi( play_spawn_current::sid_rnd1_@return/(byte*) current_piece#75 ) (byte) play_spawn_current::sid_rnd1_return#3 ← phi( play_spawn_current::sid_rnd1_@return/(byte) play_spawn_current::sid_rnd1_return#1 ) - (byte~) play_spawn_current::$6 ← (byte) play_spawn_current::sid_rnd1_return#3 - (byte~) play_spawn_current::$7 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$7 + (byte~) play_spawn_current::$5 ← (byte) play_spawn_current::sid_rnd1_return#3 + (byte~) play_spawn_current::$6 ← (byte~) play_spawn_current::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 to:play_spawn_current::@3 play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@3 (byte) game_over#29 ← phi( play_spawn_current::@3/(byte) game_over#39 ) @@ -2772,18 +2785,18 @@ play_update_score::@2: scope:[play_update_score] from play_update_score (byte~) play_update_score::$2 ← < (word) lines_bcd#16 (byte~) play_update_score::$3 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$3 - (byte/signed word/word/dword/signed dword~) play_update_score::$4 ← (byte) play_update_score::removed#2 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (dword) play_update_score::add_bcd#0 ← *((dword[5]) score_add_bcd#0 + (byte/signed word/word/dword/signed dword~) play_update_score::$4) + (byte) play_update_score::$9 ← (byte) play_update_score::removed#2 * (const byte) SIZEOF_DWORD + (dword) play_update_score::add_bcd#0 ← *((dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) asm { sed } (word) lines_bcd#5 ← (word) lines_bcd#16 + (byte) play_update_score::removed#2 (dword) score_bcd#5 ← (dword) score_bcd#15 + (dword) play_update_score::add_bcd#0 asm { cld } - (byte~) play_update_score::$5 ← < (word) lines_bcd#5 - (byte~) play_update_score::$6 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 - (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$6 - (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 - (bool~) play_update_score::$8 ← ! (bool~) play_update_score::$7 - if((bool~) play_update_score::$8) goto play_update_score::@4 + (byte~) play_update_score::$4 ← < (word) lines_bcd#5 + (byte~) play_update_score::$5 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 + (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 + (bool~) play_update_score::$6 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 + (bool~) play_update_score::$7 ← ! (bool~) play_update_score::$6 + if((bool~) play_update_score::$7) goto play_update_score::@4 to:play_update_score::@3 play_update_score::@4: scope:[play_update_score] from play_update_score::@2 (byte) level_bcd#35 ← phi( play_update_score::@2/(byte) level_bcd#49 ) @@ -2868,12 +2881,11 @@ play_increase_level::@7: scope:[play_increase_level] from play_increase_level:: (byte) current_movedown_slow#56 ← phi( play_increase_level::@3/(byte) current_movedown_slow#69 play_increase_level::@7/(byte) current_movedown_slow#56 ) (byte) level#52 ← phi( play_increase_level::@3/(byte) level#67 play_increase_level::@7/(byte) level#52 ) (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte) play_increase_level::b#0 play_increase_level::@7/(byte) play_increase_level::b#1 ) - (byte/signed word/word/dword/signed dword~) play_increase_level::$4 ← (byte) play_increase_level::b#2 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte) play_increase_level::b4#0 ← (byte/signed word/word/dword/signed dword~) play_increase_level::$4 - *((dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) + (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 * (const byte) SIZEOF_DWORD + *((dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) (byte) play_increase_level::b#1 ← (byte) play_increase_level::b#2 + rangenext(0,4) - (bool~) play_increase_level::$5 ← (byte) play_increase_level::b#1 != rangelast(0,4) - if((bool~) play_increase_level::$5) goto play_increase_level::@7 + (bool~) play_increase_level::$4 ← (byte) play_increase_level::b#1 != rangelast(0,4) + if((bool~) play_increase_level::$4) goto play_increase_level::@7 to:play_increase_level::@8 play_increase_level::@8: scope:[play_increase_level] from play_increase_level::@7 (byte) level_bcd#38 ← phi( play_increase_level::@7/(byte) level_bcd#51 ) @@ -3944,6 +3956,9 @@ SYMBOL TABLE SSA (word*) SID_VOICE3_FREQ#0 (byte*) SID_VOICE3_OSC (byte*) SID_VOICE3_OSC#0 +(const byte) SIZEOF_DWORD = (byte/signed byte/word/signed word/dword/signed dword) 4 +(const byte) SIZEOF_POINTER = (byte/signed byte/word/signed word/dword/signed dword) 2 +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SPRITES_COLS (byte*) SPRITES_COLS#0 (byte*) SPRITES_ENABLE @@ -5747,19 +5762,18 @@ SYMBOL TABLE SSA (byte) next_piece_idx#9 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) (byte*~) play_collision::$0 -(byte/signed word/word/dword/signed dword~) play_collision::$1 +(bool~) play_collision::$1 (bool~) play_collision::$10 (bool~) play_collision::$11 (bool~) play_collision::$12 (bool~) play_collision::$13 -(bool~) play_collision::$14 -(bool~) play_collision::$15 +(byte) play_collision::$14 (bool~) play_collision::$2 (bool~) play_collision::$3 -(byte/signed word/word/dword/signed dword~) play_collision::$4 -(bool~) play_collision::$5 +(bool~) play_collision::$4 +(byte~) play_collision::$5 (bool~) play_collision::$6 -(byte~) play_collision::$7 +(bool~) play_collision::$7 (bool~) play_collision::$8 (bool~) play_collision::$9 (label) play_collision::@1 @@ -5787,16 +5801,6 @@ SYMBOL TABLE SSA (byte) play_collision::c#6 (byte) play_collision::c#7 (byte) play_collision::c#8 -(byte) play_collision::col -(byte) play_collision::col#0 -(byte) play_collision::col#1 -(byte) play_collision::col#2 -(byte) play_collision::col#3 -(byte) play_collision::col#4 -(byte) play_collision::col#5 -(byte) play_collision::col#6 -(byte) play_collision::col#7 -(byte) play_collision::col#8 (byte) play_collision::i (byte) play_collision::i#0 (byte) play_collision::i#1 @@ -5866,6 +5870,16 @@ SYMBOL TABLE SSA (byte) play_collision::return#7 (byte) play_collision::return#8 (byte) play_collision::return#9 +(byte) play_collision::xp +(byte) play_collision::xp#0 +(byte) play_collision::xp#1 +(byte) play_collision::xp#2 +(byte) play_collision::xp#3 +(byte) play_collision::xp#4 +(byte) play_collision::xp#5 +(byte) play_collision::xp#6 +(byte) play_collision::xp#7 +(byte) play_collision::xp#8 (byte) play_collision::xpos (byte) play_collision::xpos#0 (byte) play_collision::xpos#1 @@ -5882,6 +5896,18 @@ SYMBOL TABLE SSA (byte) play_collision::xpos#7 (byte) play_collision::xpos#8 (byte) play_collision::xpos#9 +(byte) play_collision::yp +(byte) play_collision::yp#0 +(byte) play_collision::yp#1 +(byte) play_collision::yp#10 +(byte) play_collision::yp#2 +(byte) play_collision::yp#3 +(byte) play_collision::yp#4 +(byte) play_collision::yp#5 +(byte) play_collision::yp#6 +(byte) play_collision::yp#7 +(byte) play_collision::yp#8 +(byte) play_collision::yp#9 (byte) play_collision::ypos (byte) play_collision::ypos#0 (byte) play_collision::ypos#1 @@ -5889,25 +5915,13 @@ SYMBOL TABLE SSA (byte) play_collision::ypos#3 (byte) play_collision::ypos#4 (byte) play_collision::ypos#5 -(byte) play_collision::ypos2 -(byte) play_collision::ypos2#0 -(byte) play_collision::ypos2#1 -(byte) play_collision::ypos2#10 -(byte) play_collision::ypos2#2 -(byte) play_collision::ypos2#3 -(byte) play_collision::ypos2#4 -(byte) play_collision::ypos2#5 -(byte) play_collision::ypos2#6 -(byte) play_collision::ypos2#7 -(byte) play_collision::ypos2#8 -(byte) play_collision::ypos2#9 (void()) play_increase_level() (bool~) play_increase_level::$0 (byte~) play_increase_level::$1 (bool~) play_increase_level::$2 (bool~) play_increase_level::$3 -(byte/signed word/word/dword/signed dword~) play_increase_level::$4 -(bool~) play_increase_level::$5 +(bool~) play_increase_level::$4 +(byte) play_increase_level::$5 (label) play_increase_level::@1 (label) play_increase_level::@2 (label) play_increase_level::@3 @@ -5920,15 +5934,13 @@ SYMBOL TABLE SSA (byte) play_increase_level::b#0 (byte) play_increase_level::b#1 (byte) play_increase_level::b#2 -(byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 (void()) play_init() (byte~) play_init::$0 (byte/signed word/word/dword/signed dword~) play_init::$1 -(byte/signed word/word/dword/signed dword~) play_init::$2 +(bool~) play_init::$2 (bool~) play_init::$3 -(byte/signed word/word/dword/signed dword~) play_init::$4 -(bool~) play_init::$5 +(byte) play_init::$4 +(byte) play_init::$5 (label) play_init::@1 (label) play_init::@2 (label) play_init::@3 @@ -5937,8 +5949,6 @@ SYMBOL TABLE SSA (byte) play_init::b#0 (byte) play_init::b#1 (byte) play_init::b#2 -(byte) play_init::b4 -(byte) play_init::b4#0 (byte) play_init::idx (byte) play_init::idx#0 (byte) play_init::idx#1 @@ -5952,11 +5962,11 @@ SYMBOL TABLE SSA (byte*) play_init::pli#1 (byte*) play_init::pli#2 (void()) play_lock_current() -(byte/signed word/word/dword/signed dword~) play_lock_current::$0 +(bool~) play_lock_current::$0 (bool~) play_lock_current::$1 (bool~) play_lock_current::$2 (bool~) play_lock_current::$3 -(bool~) play_lock_current::$4 +(byte) play_lock_current::$4 (label) play_lock_current::@1 (label) play_lock_current::@2 (label) play_lock_current::@3 @@ -5969,12 +5979,6 @@ SYMBOL TABLE SSA (byte) play_lock_current::c#2 (byte) play_lock_current::c#3 (byte) play_lock_current::c#4 -(byte) play_lock_current::col -(byte) play_lock_current::col#0 -(byte) play_lock_current::col#1 -(byte) play_lock_current::col#2 -(byte) play_lock_current::col#3 -(byte) play_lock_current::col#4 (byte) play_lock_current::i (byte) play_lock_current::i#0 (byte) play_lock_current::i#1 @@ -5996,14 +6000,20 @@ SYMBOL TABLE SSA (byte*) play_lock_current::playfield_line#1 (byte*) play_lock_current::playfield_line#2 (byte*) play_lock_current::playfield_line#3 -(byte) play_lock_current::ypos2 -(byte) play_lock_current::ypos2#0 -(byte) play_lock_current::ypos2#1 -(byte) play_lock_current::ypos2#2 -(byte) play_lock_current::ypos2#3 -(byte) play_lock_current::ypos2#4 -(byte) play_lock_current::ypos2#5 -(byte) play_lock_current::ypos2#6 +(byte) play_lock_current::xp +(byte) play_lock_current::xp#0 +(byte) play_lock_current::xp#1 +(byte) play_lock_current::xp#2 +(byte) play_lock_current::xp#3 +(byte) play_lock_current::xp#4 +(byte) play_lock_current::yp +(byte) play_lock_current::yp#0 +(byte) play_lock_current::yp#1 +(byte) play_lock_current::yp#2 +(byte) play_lock_current::yp#3 +(byte) play_lock_current::yp#4 +(byte) play_lock_current::yp#5 +(byte) play_lock_current::yp#6 (byte()) play_move_down((byte) play_move_down::key_event) (bool~) play_move_down::$0 (bool~) play_move_down::$1 @@ -6272,14 +6282,14 @@ SYMBOL TABLE SSA (byte) play_remove_lines::y#7 (byte) play_remove_lines::y#8 (void()) play_spawn_current() -(byte/signed word/word/dword/signed dword~) play_spawn_current::$0 -(byte*~) play_spawn_current::$1 -(byte~) play_spawn_current::$2 +(byte*~) play_spawn_current::$0 +(byte~) play_spawn_current::$1 +(bool~) play_spawn_current::$2 (bool~) play_spawn_current::$3 (bool~) play_spawn_current::$4 -(bool~) play_spawn_current::$5 +(byte~) play_spawn_current::$5 (byte~) play_spawn_current::$6 -(byte~) play_spawn_current::$7 +(byte) play_spawn_current::$7 (label) play_spawn_current::@1 (label) play_spawn_current::@10 (label) play_spawn_current::@2 @@ -6307,11 +6317,11 @@ SYMBOL TABLE SSA (bool~) play_update_score::$1 (byte~) play_update_score::$2 (byte~) play_update_score::$3 -(byte/signed word/word/dword/signed dword~) play_update_score::$4 +(byte~) play_update_score::$4 (byte~) play_update_score::$5 -(byte~) play_update_score::$6 +(bool~) play_update_score::$6 (bool~) play_update_score::$7 -(bool~) play_update_score::$8 +(byte) play_update_score::$9 (label) play_update_score::@1 (label) play_update_score::@2 (label) play_update_score::@3 @@ -6392,9 +6402,9 @@ SYMBOL TABLE SSA (byte*~) render_init::$10 (byte*~) render_init::$11 (byte/signed word/word/dword/signed dword~) render_init::$12 -(byte/signed word/word/dword/signed dword~) render_init::$13 -(byte/signed word/word/dword/signed dword~) render_init::$14 -(bool~) render_init::$15 +(bool~) render_init::$13 +(byte) render_init::$14 +(byte) render_init::$15 (byte~) render_init::$2 (byte/word/dword~) render_init::$3 (byte/signed byte/word/signed word/dword/signed dword~) render_init::$6 @@ -6445,13 +6455,13 @@ SYMBOL TABLE SSA (byte) render_init::vicSelectGfxBank1_toDd001_return#2 (byte) render_init::vicSelectGfxBank1_toDd001_return#3 (void()) render_moving() -(byte/signed word/word/dword/signed dword~) render_moving::$0 -(bool~) render_moving::$1 -(byte~) render_moving::$2 +(bool~) render_moving::$0 +(byte~) render_moving::$1 +(bool~) render_moving::$2 (bool~) render_moving::$3 (bool~) render_moving::$4 (bool~) render_moving::$5 -(bool~) render_moving::$6 +(byte) render_moving::$6 (label) render_moving::@1 (label) render_moving::@2 (label) render_moving::@3 @@ -6500,27 +6510,27 @@ SYMBOL TABLE SSA (byte) render_moving::xpos#2 (byte) render_moving::xpos#3 (byte) render_moving::xpos#4 -(byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 -(byte) render_moving::ypos2#1 -(byte) render_moving::ypos2#2 -(byte) render_moving::ypos2#3 -(byte) render_moving::ypos2#4 -(byte) render_moving::ypos2#5 -(byte) render_moving::ypos2#6 -(byte) render_moving::ypos2#7 -(byte) render_moving::ypos2#8 +(byte) render_moving::ypos +(byte) render_moving::ypos#0 +(byte) render_moving::ypos#1 +(byte) render_moving::ypos#2 +(byte) render_moving::ypos#3 +(byte) render_moving::ypos#4 +(byte) render_moving::ypos#5 +(byte) render_moving::ypos#6 +(byte) render_moving::ypos#7 +(byte) render_moving::ypos#8 (void()) render_next() (word/signed word/dword/signed dword~) render_next::$0 (word/signed dword/dword/signed word~) render_next::$1 (word/signed dword/dword/signed word~) render_next::$2 (bool~) render_next::$3 -(byte/signed word/word/dword/signed dword~) render_next::$4 +(byte*~) render_next::$4 (byte*~) render_next::$5 -(byte*~) render_next::$6 +(bool~) render_next::$6 (bool~) render_next::$7 (bool~) render_next::$8 -(bool~) render_next::$9 +(byte) render_next::$9 (label) render_next::@1 (label) render_next::@11 (label) render_next::@2 @@ -6586,11 +6596,11 @@ SYMBOL TABLE SSA (void()) render_playfield() (byte/signed word/word/dword/signed dword~) render_playfield::$0 (byte/signed word/word/dword/signed dword~) render_playfield::$1 -(byte/signed word/word/dword/signed dword~) render_playfield::$2 +(byte~) render_playfield::$2 (byte/signed word/word/dword/signed dword~) render_playfield::$3 -(byte/signed word/word/dword/signed dword~) render_playfield::$4 +(bool~) render_playfield::$4 (bool~) render_playfield::$5 -(bool~) render_playfield::$6 +(byte) render_playfield::$6 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -7191,30 +7201,30 @@ Inversing boolean not [142] (bool~) keyboard_event_scan::$5 ← (byte~) keyboard Inversing boolean not [154] (bool~) keyboard_event_scan::$8 ← (byte~) keyboard_event_scan::$6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [153] (bool~) keyboard_event_scan::$7 ← (byte~) keyboard_event_scan::$6 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [166] (bool~) keyboard_event_scan::$11 ← (byte~) keyboard_event_scan::$9 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [165] (bool~) keyboard_event_scan::$10 ← (byte~) keyboard_event_scan::$9 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [420] (bool~) render_bcd::$2 ← (byte) render_bcd::only_low#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [419] (bool~) render_bcd::$1 ← (byte) render_bcd::only_low#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [523] (bool~) render_moving::$4 ← (byte) render_moving::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [522] (bool~) render_moving::$3 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [795] (bool~) play_movement::$2 ← (byte) game_over#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [794] (bool~) play_movement::$1 ← (byte) game_over#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [837] (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from [836] (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 -Inversing boolean not [846] (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [845] (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [852] (bool~) play_move_down::$6 ← (byte) current_movedown_counter#12 < (byte) current_movedown_slow#19 from [851] (bool~) play_move_down::$5 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 -Inversing boolean not [856] (bool~) play_move_down::$10 ← (byte) current_movedown_counter#13 < (byte) current_movedown_fast#0 from [855] (bool~) play_move_down::$9 ← (byte) current_movedown_counter#13 >= (byte) current_movedown_fast#0 -Inversing boolean not [863] (bool~) play_move_down::$8 ← (byte) play_move_down::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [862] (bool~) play_move_down::$7 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [941] (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (byte) COLLISION_NONE#0 from [940] (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 -Inversing boolean not [945] (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (byte) KEY_DOT#0 from [944] (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 -Inversing boolean not [958] (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (byte) COLLISION_NONE#0 from [957] (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 -Inversing boolean not [1005] (bool~) play_move_rotate::$4 ← (byte~) play_move_rotate::$2 != (byte) COLLISION_NONE#0 from [1004] (bool~) play_move_rotate::$3 ← (byte~) play_move_rotate::$2 == (byte) COLLISION_NONE#0 -Inversing boolean not [1033] (bool~) play_collision::$3 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1032] (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1044] (bool~) play_collision::$6 ← (byte) play_collision::ypos2#3 < (byte/signed word/word/dword/signed dword~) play_collision::$4 from [1043] (bool~) play_collision::$5 ← (byte) play_collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) play_collision::$4 -Inversing boolean not [1049] (bool~) play_collision::$9 ← (byte~) play_collision::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1048] (bool~) play_collision::$8 ← (byte~) play_collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1057] (bool~) play_collision::$11 ← (byte) play_collision::col#4 < (byte) PLAYFIELD_COLS#0 from [1056] (bool~) play_collision::$10 ← (byte) play_collision::col#4 >= (byte) PLAYFIELD_COLS#0 -Inversing boolean not [1062] (bool~) play_collision::$13 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1061] (bool~) play_collision::$12 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1084] (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1083] (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1118] (bool~) play_spawn_current::$4 ← (byte~) play_spawn_current::$2 != (byte) COLLISION_PLAYFIELD#0 from [1117] (bool~) play_spawn_current::$3 ← (byte~) play_spawn_current::$2 == (byte) COLLISION_PLAYFIELD#0 -Inversing boolean not [1165] (bool~) play_remove_lines::$7 ← (byte) play_remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [1164] (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1177] (bool~) play_remove_lines::$10 ← (byte) play_remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from [1176] (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 -Inversing boolean not [1200] (bool~) play_update_score::$1 ← (byte) play_update_score::removed#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1199] (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [1217] (bool~) play_update_score::$8 ← (byte) play_update_score::lines_before#0 == (byte) play_update_score::lines_after#0 from [1216] (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 -Inversing boolean not [1245] (bool~) play_increase_level::$3 ← (byte~) play_increase_level::$1 != (byte/signed byte/word/signed word/dword/signed dword) $a from [1244] (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte/signed byte/word/signed word/dword/signed dword) $a -Inversing boolean not [1358] (bool~) main::$17 ← (byte) main::render#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1357] (bool~) main::$16 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [523] (bool~) render_moving::$3 ← (byte) render_moving::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [522] (bool~) render_moving::$2 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [794] (bool~) play_movement::$2 ← (byte) game_over#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [793] (bool~) play_movement::$1 ← (byte) game_over#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [836] (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from [835] (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 +Inversing boolean not [845] (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [844] (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [851] (bool~) play_move_down::$6 ← (byte) current_movedown_counter#12 < (byte) current_movedown_slow#19 from [850] (bool~) play_move_down::$5 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 +Inversing boolean not [855] (bool~) play_move_down::$10 ← (byte) current_movedown_counter#13 < (byte) current_movedown_fast#0 from [854] (bool~) play_move_down::$9 ← (byte) current_movedown_counter#13 >= (byte) current_movedown_fast#0 +Inversing boolean not [862] (bool~) play_move_down::$8 ← (byte) play_move_down::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [861] (bool~) play_move_down::$7 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [940] (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (byte) COLLISION_NONE#0 from [939] (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 +Inversing boolean not [944] (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (byte) KEY_DOT#0 from [943] (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 +Inversing boolean not [957] (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (byte) COLLISION_NONE#0 from [956] (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 +Inversing boolean not [1004] (bool~) play_move_rotate::$4 ← (byte~) play_move_rotate::$2 != (byte) COLLISION_NONE#0 from [1003] (bool~) play_move_rotate::$3 ← (byte~) play_move_rotate::$2 == (byte) COLLISION_NONE#0 +Inversing boolean not [1032] (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1031] (bool~) play_collision::$1 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1042] (bool~) play_collision::$4 ← (byte) play_collision::yp#3 < (byte) PLAYFIELD_LINES#0 from [1041] (bool~) play_collision::$3 ← (byte) play_collision::yp#3 >= (byte) PLAYFIELD_LINES#0 +Inversing boolean not [1047] (bool~) play_collision::$7 ← (byte~) play_collision::$5 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1046] (bool~) play_collision::$6 ← (byte~) play_collision::$5 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1055] (bool~) play_collision::$9 ← (byte) play_collision::xp#4 < (byte) PLAYFIELD_COLS#0 from [1054] (bool~) play_collision::$8 ← (byte) play_collision::xp#4 >= (byte) PLAYFIELD_COLS#0 +Inversing boolean not [1060] (bool~) play_collision::$11 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1059] (bool~) play_collision::$10 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1082] (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1081] (bool~) play_lock_current::$0 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1116] (bool~) play_spawn_current::$3 ← (byte~) play_spawn_current::$1 != (byte) COLLISION_PLAYFIELD#0 from [1115] (bool~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 == (byte) COLLISION_PLAYFIELD#0 +Inversing boolean not [1163] (bool~) play_remove_lines::$7 ← (byte) play_remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [1162] (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1175] (bool~) play_remove_lines::$10 ← (byte) play_remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from [1174] (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 +Inversing boolean not [1198] (bool~) play_update_score::$1 ← (byte) play_update_score::removed#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1197] (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [1215] (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 == (byte) play_update_score::lines_after#0 from [1214] (bool~) play_update_score::$6 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 +Inversing boolean not [1243] (bool~) play_increase_level::$3 ← (byte~) play_increase_level::$1 != (byte/signed byte/word/signed word/dword/signed dword) $a from [1242] (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte/signed byte/word/signed word/dword/signed dword) $a +Inversing boolean not [1355] (bool~) main::$17 ← (byte) main::render#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [1354] (bool~) main::$16 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_showing#6 (byte) render_screen_showing#2 Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_raster_next#0 (byte) irq_raster_next#24 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#20 (byte) irq_raster_next#17 (byte) irq_raster_next#10 @@ -7309,9 +7319,8 @@ Alias (byte) render_playfield::i#0 = (byte/signed word/word/dword/signed dword~) Alias (byte) render_playfield::l#3 = (byte) render_playfield::l#4 Alias (byte) render_screen_render#23 = (byte) render_screen_render#32 Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 -Alias (byte) render_moving::ypos2#0 = (byte/signed word/word/dword/signed dword~) render_moving::$0 Alias (byte) render_screen_render#14 = (byte) render_screen_render#24 (byte) render_screen_render#42 -Alias (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#3 (byte) render_moving::ypos2#6 +Alias (byte) render_moving::ypos#2 = (byte) render_moving::ypos#3 (byte) render_moving::ypos#6 Alias (byte) current_xpos#16 = (byte) current_xpos#36 (byte) current_xpos#82 Alias (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#46 (byte*) current_piece_gfx#83 Alias (byte) render_moving::i#3 = (byte) render_moving::i#6 (byte) render_moving::i#5 @@ -7321,7 +7330,7 @@ Alias (byte) current_piece_char#12 = (byte) current_piece_char#24 Alias (byte*) render_moving::screen_line#1 = (byte*) render_moving::screen_line#2 Alias (byte) render_moving::xpos#3 = (byte) render_moving::xpos#4 Alias (byte) render_moving::c#3 = (byte) render_moving::c#4 -Alias (byte) render_moving::ypos2#7 = (byte) render_moving::ypos2#8 +Alias (byte) render_moving::ypos#7 = (byte) render_moving::ypos#8 Alias (byte) render_moving::l#6 = (byte) render_moving::l#7 Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#47 Alias (byte) render_moving::i#2 = (byte) render_moving::i#9 @@ -7329,8 +7338,8 @@ Alias (byte) render_screen_render#46 = (byte) render_screen_render#47 Alias (byte) current_xpos#98 = (byte) current_xpos#99 Alias (word) render_next::next_area_offset#0 = (word/signed dword/dword/signed word~) render_next::$2 (word) render_next::next_area_offset#1 (word) render_next::next_area_offset#2 Alias (byte) next_piece_idx#24 = (byte) next_piece_idx#36 (byte) next_piece_idx#25 -Alias (byte*) render_next::screen_next_area#1 = (byte*~) render_next::$6 -Alias (byte*) render_next::screen_next_area#2 = (byte*~) render_next::$5 +Alias (byte*) render_next::screen_next_area#1 = (byte*~) render_next::$5 +Alias (byte*) render_next::screen_next_area#2 = (byte*~) render_next::$4 Alias (byte) render_next::next_piece_char#1 = (byte) render_next::next_piece_char#2 (byte) render_next::next_piece_char#6 Alias (byte*) render_next::screen_next_area#5 = (byte*) render_next::screen_next_area#9 (byte*) render_next::screen_next_area#6 Alias (byte) render_next::c#3 = (byte) render_next::c#5 (byte) render_next::c#4 @@ -7376,7 +7385,6 @@ Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#8 (byte) irq_sprite_ypo Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#8 (byte) irq_sprite_ptr#4 Alias (byte) irq_cnt#0 = (byte) irq_cnt#20 (byte) irq_cnt#19 (byte) irq_cnt#17 Alias (byte) level#13 = (byte) level#28 -Alias (byte) play_init::b4#0 = (byte/signed word/word/dword/signed dword~) play_init::$4 Alias (byte) current_movedown_slow#16 = (byte) current_movedown_slow#29 (byte) current_movedown_slow#2 Alias (byte) play_move_down::return#0 = (byte) play_move_down::return#4 Alias (byte) play_movement::render#0 = (byte) play_movement::render#4 @@ -7544,10 +7552,10 @@ Alias (byte) current_orientation#0 = (byte) current_orientation#62 (byte) curren Alias (byte) next_piece_idx#0 = (byte) next_piece_idx#46 (byte) next_piece_idx#35 Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#35 (byte) current_movedown_counter#27 Alias (byte*) play_collision::piece_gfx#0 = (byte*~) play_collision::$0 -Alias (byte) play_collision::ypos2#0 = (byte/signed word/word/dword/signed dword~) play_collision::$1 -Alias (byte) play_collision::col#0 = (byte) play_collision::xpos#5 -Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#3 (byte) play_collision::ypos2#5 (byte) play_collision::ypos2#9 (byte) play_collision::ypos2#8 (byte) play_collision::ypos2#7 -Alias (byte) play_collision::col#3 = (byte) play_collision::col#8 (byte) play_collision::col#6 (byte) play_collision::col#4 (byte) play_collision::col#5 (byte) play_collision::col#7 +Alias (byte) play_collision::yp#0 = (byte) play_collision::ypos#5 +Alias (byte) play_collision::xp#0 = (byte) play_collision::xpos#5 +Alias (byte) play_collision::yp#10 = (byte) play_collision::yp#3 (byte) play_collision::yp#5 (byte) play_collision::yp#9 (byte) play_collision::yp#8 (byte) play_collision::yp#7 +Alias (byte) play_collision::xp#3 = (byte) play_collision::xp#8 (byte) play_collision::xp#6 (byte) play_collision::xp#4 (byte) play_collision::xp#5 (byte) play_collision::xp#7 Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#4 (byte*) play_collision::playfield_line#5 (byte*) play_collision::playfield_line#3 (byte*) play_collision::playfield_line#2 (byte*) play_collision::playfield_line#7 Alias (byte) play_collision::c#3 = (byte) play_collision::c#8 (byte) play_collision::c#7 (byte) play_collision::c#6 (byte) play_collision::c#5 (byte) play_collision::c#4 Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#9 (byte*) play_collision::piece_gfx#8 (byte*) play_collision::piece_gfx#7 (byte*) play_collision::piece_gfx#6 (byte*) play_collision::piece_gfx#5 @@ -7555,28 +7563,27 @@ Alias (byte) play_collision::i#1 = (byte) play_collision::i#10 (byte) play_colli Alias (byte) play_collision::l#10 = (byte) play_collision::l#4 (byte) play_collision::l#9 (byte) play_collision::l#8 (byte) play_collision::l#7 (byte) play_collision::l#5 Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#14 (byte) play_collision::xpos#9 (byte) play_collision::xpos#13 (byte) play_collision::xpos#12 (byte) play_collision::xpos#11 Alias (byte) play_collision::return#15 = (byte) play_collision::return#5 -Alias (byte) play_collision::ypos2#4 = (byte) play_collision::ypos2#6 +Alias (byte) play_collision::yp#4 = (byte) play_collision::yp#6 Alias (byte) play_collision::l#2 = (byte) play_collision::l#3 Alias (byte) play_collision::xpos#7 = (byte) play_collision::xpos#8 Alias (byte*) play_collision::piece_gfx#3 = (byte*) play_collision::piece_gfx#4 Alias (byte) play_collision::i#4 = (byte) play_collision::i#5 -Alias (byte) play_lock_current::ypos2#0 = (byte/signed word/word/dword/signed dword~) play_lock_current::$0 Alias (byte) current_piece_char#17 = (byte) current_piece_char#31 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#2 -Alias (byte) play_lock_current::col#3 = (byte) play_lock_current::col#4 +Alias (byte) play_lock_current::xp#3 = (byte) play_lock_current::xp#4 Alias (byte) play_lock_current::c#3 = (byte) play_lock_current::c#4 Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#56 Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#6 -Alias (byte) play_lock_current::ypos2#5 = (byte) play_lock_current::ypos2#6 +Alias (byte) play_lock_current::yp#5 = (byte) play_lock_current::yp#6 Alias (byte) play_lock_current::l#4 = (byte) play_lock_current::l#5 Alias (byte) current_xpos#89 = (byte) current_xpos#90 -Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#4 +Alias (byte) play_lock_current::yp#3 = (byte) play_lock_current::yp#4 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#3 Alias (byte) current_xpos#53 = (byte) current_xpos#71 Alias (byte*) current_piece_gfx#40 = (byte*) current_piece_gfx#55 Alias (byte) play_lock_current::i#4 = (byte) play_lock_current::i#5 Alias (byte) current_piece_char#44 = (byte) current_piece_char#60 -Alias (byte*) current_piece_gfx#8 = (byte*~) play_spawn_current::$1 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#92 +Alias (byte*) current_piece_gfx#8 = (byte*~) play_spawn_current::$0 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#92 Alias (byte) play_collision::return#10 = (byte) play_collision::return#16 Alias (byte*) current_piece#5 = (byte*) current_piece#73 (byte*) current_piece#74 Alias (byte) current_piece_char#5 = (byte) current_piece_char#76 (byte) current_piece_char#77 @@ -7591,8 +7598,8 @@ Alias (byte*) current_piece_gfx#101 = (byte*) current_piece_gfx#110 (byte*) curr Alias (byte) current_xpos#10 = (byte) current_xpos#120 (byte) current_xpos#72 (byte) current_xpos#114 (byte) current_xpos#105 (byte) current_xpos#92 (byte) current_xpos#54 (byte) current_xpos#30 Alias (byte) current_ypos#24 = (byte) current_ypos#96 (byte) current_ypos#57 (byte) current_ypos#90 (byte) current_ypos#82 (byte) current_ypos#71 (byte) current_ypos#45 (byte) current_ypos#7 Alias (byte) game_over#16 = (byte) game_over#85 (byte) game_over#39 (byte) game_over#76 (byte) game_over#66 (byte) game_over#53 (byte) game_over#29 (byte) game_over#6 -Alias (byte) play_spawn_current::sid_rnd1_return#0 = (byte) play_spawn_current::sid_rnd1_return#2 (byte) play_spawn_current::sid_rnd1_return#1 (byte) play_spawn_current::sid_rnd1_return#3 (byte~) play_spawn_current::$6 -Alias (byte) play_spawn_current::piece_idx#1 = (byte~) play_spawn_current::$7 +Alias (byte) play_spawn_current::sid_rnd1_return#0 = (byte) play_spawn_current::sid_rnd1_return#2 (byte) play_spawn_current::sid_rnd1_return#1 (byte) play_spawn_current::sid_rnd1_return#3 (byte~) play_spawn_current::$5 +Alias (byte) play_spawn_current::piece_idx#1 = (byte~) play_spawn_current::$6 Alias (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#3 Alias (byte) next_piece_idx#18 = (byte) next_piece_idx#5 (byte) next_piece_idx#6 Alias (byte) play_remove_lines::r#0 = (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 @@ -7618,7 +7625,7 @@ Alias (byte) current_movedown_slow#39 = (byte) current_movedown_slow#40 (byte) c Alias (byte) level_bcd#33 = (byte) level_bcd#34 (byte) level_bcd#48 (byte) level_bcd#49 (byte) level_bcd#35 Alias (byte) play_update_score::removed#1 = (byte) play_update_score::removed#2 Alias (byte) play_update_score::lines_before#0 = (byte~) play_update_score::$3 -Alias (byte) play_update_score::lines_after#0 = (byte~) play_update_score::$6 +Alias (byte) play_update_score::lines_after#0 = (byte~) play_update_score::$5 Alias (word) lines_bcd#30 = (word) lines_bcd#5 (word) lines_bcd#41 (word) lines_bcd#31 Alias (dword) score_bcd#30 = (dword) score_bcd#5 (dword) score_bcd#41 (dword) score_bcd#31 Alias (byte) level#18 = (byte) level#5 @@ -7634,7 +7641,6 @@ Alias (byte) level#21 = (byte) level#90 (byte) level#7 Alias (byte) level_bcd#21 = (byte) level_bcd#7 Alias (byte) level#79 = (byte) level#80 Alias (byte) current_movedown_slow#76 = (byte) current_movedown_slow#77 -Alias (byte) play_increase_level::b4#0 = (byte/signed word/word/dword/signed dword~) play_increase_level::$4 Alias (byte) level#22 = (byte) level#38 (byte) level#52 (byte) level#8 Alias (byte) current_movedown_slow#11 = (byte) current_movedown_slow#42 (byte) current_movedown_slow#56 (byte) current_movedown_slow#24 Alias (byte) level_bcd#22 = (byte) level_bcd#38 (byte) level_bcd#51 (byte) level_bcd#9 @@ -7815,7 +7821,7 @@ Alias (byte) level_bcd#13 = (byte) level_bcd#87 Alias (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#7 Alias (byte) render_moving::xpos#2 = (byte) render_moving::xpos#3 Alias (byte) render_moving::c#2 = (byte) render_moving::c#3 -Alias (byte) render_moving::ypos2#5 = (byte) render_moving::ypos2#7 +Alias (byte) render_moving::ypos#5 = (byte) render_moving::ypos#7 Alias (byte) render_moving::l#3 = (byte) render_moving::l#6 Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#30 Alias (byte) render_moving::i#2 = (byte) render_moving::i#7 @@ -7864,19 +7870,19 @@ Alias (byte) current_ypos#22 = (byte) current_ypos#42 Alias (byte*) current_piece#16 = (byte*) current_piece#46 Alias (byte) current_orientation#23 = (byte) current_orientation#43 Alias (byte*) current_piece_gfx#37 = (byte*) current_piece_gfx#38 -Alias (byte) play_collision::col#2 = (byte) play_collision::col#3 +Alias (byte) play_collision::xp#2 = (byte) play_collision::xp#3 Alias (byte) play_collision::c#2 = (byte) play_collision::c#3 Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#3 Alias (byte) play_collision::i#1 = (byte) play_collision::i#4 -Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#4 +Alias (byte) play_collision::yp#10 = (byte) play_collision::yp#4 Alias (byte) play_collision::l#10 = (byte) play_collision::l#2 Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#7 Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#6 -Alias (byte) play_lock_current::col#2 = (byte) play_lock_current::col#3 +Alias (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#3 Alias (byte) play_lock_current::c#2 = (byte) play_lock_current::c#3 Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#40 Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#4 -Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#5 +Alias (byte) play_lock_current::yp#3 = (byte) play_lock_current::yp#5 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#4 Alias (byte) current_piece_char#17 = (byte) current_piece_char#44 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#3 @@ -7917,7 +7923,7 @@ Self Phi Eliminated (byte) render_screen_render#23 Self Phi Eliminated (byte*) current_piece_gfx#15 Self Phi Eliminated (byte) current_piece_char#12 Self Phi Eliminated (byte*) render_moving::screen_line#1 -Self Phi Eliminated (byte) render_moving::ypos2#5 +Self Phi Eliminated (byte) render_moving::ypos#5 Self Phi Eliminated (byte) render_moving::l#3 Self Phi Eliminated (byte) render_screen_render#41 Self Phi Eliminated (byte) current_xpos#81 @@ -7932,14 +7938,14 @@ Self Phi Eliminated (byte) irq_sprite_ypos#10 Self Phi Eliminated (byte) level#13 Self Phi Eliminated (byte) current_movedown_slow#16 Self Phi Eliminated (byte*) play_collision::piece_gfx#1 -Self Phi Eliminated (byte) play_collision::ypos2#10 +Self Phi Eliminated (byte) play_collision::yp#10 Self Phi Eliminated (byte) play_collision::l#10 Self Phi Eliminated (byte) play_collision::xpos#10 Self Phi Eliminated (byte*) play_collision::playfield_line#1 Self Phi Eliminated (byte*) current_piece_gfx#22 Self Phi Eliminated (byte) current_piece_char#17 Self Phi Eliminated (byte*) play_lock_current::playfield_line#1 -Self Phi Eliminated (byte) play_lock_current::ypos2#3 +Self Phi Eliminated (byte) play_lock_current::yp#3 Self Phi Eliminated (byte) play_lock_current::l#2 Self Phi Eliminated (byte) current_xpos#53 Self Phi Eliminated (byte*) current_piece#18 @@ -8022,7 +8028,7 @@ Redundant Phi (byte) render_screen_render#23 (byte) render_screen_render#13 Redundant Phi (byte*) current_piece_gfx#15 (byte*) current_piece_gfx#29 Redundant Phi (byte) current_piece_char#12 (byte) current_piece_char#37 Redundant Phi (byte*) render_moving::screen_line#1 (byte*) render_moving::screen_line#0 -Redundant Phi (byte) render_moving::ypos2#5 (byte) render_moving::ypos2#2 +Redundant Phi (byte) render_moving::ypos#5 (byte) render_moving::ypos#2 Redundant Phi (byte) render_moving::l#3 (byte) render_moving::l#4 Redundant Phi (byte) render_screen_render#41 (byte) render_screen_render#14 Redundant Phi (byte) current_xpos#81 (byte) current_xpos#16 @@ -8128,9 +8134,9 @@ Redundant Phi (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#18 Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#20 Redundant Phi (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#18 Redundant Phi (byte*) play_collision::piece_gfx#1 (byte*) play_collision::piece_gfx#2 -Redundant Phi (byte) play_collision::ypos2#10 (byte) play_collision::ypos2#2 +Redundant Phi (byte) play_collision::yp#10 (byte) play_collision::yp#2 Redundant Phi (byte) play_collision::l#10 (byte) play_collision::l#6 -Redundant Phi (byte) play_collision::xpos#10 (byte) play_collision::col#0 +Redundant Phi (byte) play_collision::xpos#10 (byte) play_collision::xp#0 Redundant Phi (byte*) play_collision::playfield_line#1 (byte*) play_collision::playfield_line#0 Redundant Phi (byte) current_ypos#23 (byte) current_ypos#16 Redundant Phi (byte) current_xpos#52 (byte) current_xpos#101 @@ -8139,7 +8145,7 @@ Redundant Phi (byte) current_piece_char#59 (byte) current_piece_char#28 Redundant Phi (byte*) current_piece_gfx#22 (byte*) current_piece_gfx#39 Redundant Phi (byte) current_piece_char#17 (byte) current_piece_char#43 Redundant Phi (byte*) play_lock_current::playfield_line#1 (byte*) play_lock_current::playfield_line#0 -Redundant Phi (byte) play_lock_current::ypos2#3 (byte) play_lock_current::ypos2#2 +Redundant Phi (byte) play_lock_current::yp#3 (byte) play_lock_current::yp#2 Redundant Phi (byte) play_lock_current::l#2 (byte) play_lock_current::l#6 Redundant Phi (byte) current_xpos#53 (byte) current_xpos#29 Redundant Phi (byte*) current_piece#18 (byte*) current_piece#5 @@ -8287,7 +8293,7 @@ Redundant Phi (byte) level#11 (byte) level#10 Redundant Phi (byte) level_bcd#12 (byte) level_bcd#11 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 -Redundant Phi (byte) render_moving::ypos2#4 (byte) render_moving::ypos2#2 +Redundant Phi (byte) render_moving::ypos#4 (byte) render_moving::ypos#2 Redundant Phi (byte) render_moving::l#2 (byte) render_moving::l#4 Redundant Phi (byte) render_screen_render#34 (byte) render_screen_render#14 Redundant Phi (byte) current_xpos#60 (byte) current_xpos#16 @@ -8310,7 +8316,7 @@ Simple Condition (bool~) keyboard_event_scan::$5 [143] if((byte~) keyboard_event Simple Condition (bool~) keyboard_event_scan::$8 [155] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 Simple Condition (bool~) keyboard_event_scan::$11 [167] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 Simple Condition (bool~) keyboard_event_get::$0 [190] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 -Simple Condition (bool~) render_init::$15 [289] if((byte) render_init::i#1!=rangelast(0,render_init::$12)) goto render_init::@1 +Simple Condition (bool~) render_init::$13 [289] if((byte) render_init::i#1!=rangelast(0,render_init::$12)) goto render_init::@1 Simple Condition (bool~) render_show::$0 [299] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::@1 Simple Condition (bool~) render_score::$0 [356] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@1 Simple Condition (bool~) render_bcd::$2 [421] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 @@ -8318,62 +8324,62 @@ Simple Condition (bool~) render_screen_original::$4 [452] if((byte) render_scree Simple Condition (bool~) render_screen_original::$5 [462] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@4 Simple Condition (bool~) render_screen_original::$6 [470] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@6 Simple Condition (bool~) render_screen_original::$7 [474] if((byte) render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 -Simple Condition (bool~) render_playfield::$5 [493] if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$4)) goto render_playfield::@2 -Simple Condition (bool~) render_playfield::$6 [497] if((byte) render_playfield::l#1!=rangelast(2,render_playfield::$1)) goto render_playfield::@1 -Simple Condition (bool~) render_moving::$1 [506] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -Simple Condition (bool~) render_moving::$6 [518] if((byte) render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 -Simple Condition (bool~) render_moving::$4 [524] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -Simple Condition (bool~) render_moving::$5 [529] if((byte) render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 +Simple Condition (bool~) render_playfield::$4 [493] if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$3)) goto render_playfield::@2 +Simple Condition (bool~) render_playfield::$5 [497] if((byte) render_playfield::l#1!=rangelast(2,render_playfield::$1)) goto render_playfield::@1 +Simple Condition (bool~) render_moving::$0 [505] if((byte) render_moving::ypos#2>(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 +Simple Condition (bool~) render_moving::$5 [518] if((byte) render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 +Simple Condition (bool~) render_moving::$3 [524] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 +Simple Condition (bool~) render_moving::$4 [529] if((byte) render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 Simple Condition (bool~) render_next::$3 [540] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@1 -Simple Condition (bool~) render_next::$7 [558] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@7 -Simple Condition (bool~) render_next::$8 [567] if((byte) render_next::c#1!=rangelast(0,3)) goto render_next::@6 -Simple Condition (bool~) render_next::$9 [572] if((byte) render_next::l#1!=rangelast(0,3)) goto render_next::@5 +Simple Condition (bool~) render_next::$6 [558] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@7 +Simple Condition (bool~) render_next::$7 [567] if((byte) render_next::c#1!=rangelast(0,3)) goto render_next::@6 +Simple Condition (bool~) render_next::$8 [572] if((byte) render_next::l#1!=rangelast(0,3)) goto render_next::@5 Simple Condition (bool~) sprites_init::$4 [593] if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 Simple Condition (bool~) sprites_irq::$4 [639] if(*((byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@11 Simple Condition (bool~) sprites_irq::$1 [643] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 Simple Condition (bool~) sprites_irq::$2 [661] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 Simple Condition (bool~) sprites_irq::$3 [678] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -Simple Condition (bool~) play_init::$3 [756] if((byte) play_init::j#1!=rangelast(0,play_init::$1)) goto play_init::@1 -Simple Condition (bool~) play_init::$5 [768] if((byte) play_init::b#1!=rangelast(0,4)) goto play_init::@3 -Simple Condition (bool~) play_movement::$2 [796] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -Simple Condition (bool~) play_move_down::$1 [838] if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 -Simple Condition (bool~) play_move_down::$4 [847] 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::$6 [853] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -Simple Condition (bool~) play_move_down::$10 [857] if((byte) current_movedown_counter#12<(byte) current_movedown_fast#0) goto play_move_down::@13 -Simple Condition (bool~) play_move_down::$8 [864] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@4 -Simple Condition (bool~) play_move_down::$13 [879] if((byte~) play_move_down::$12==(byte) COLLISION_NONE#0) goto play_move_down::@14 -Simple Condition (bool~) play_move_leftright::$0 [930] if((byte) play_move_leftright::key_event#0==(byte) KEY_COMMA#0) goto play_move_leftright::@1 -Simple Condition (bool~) play_move_leftright::$10 [942] if((byte~) play_move_leftright::$8!=(byte) COLLISION_NONE#0) goto play_move_leftright::@13 -Simple Condition (bool~) play_move_leftright::$2 [946] if((byte) play_move_leftright::key_event#0!=(byte) KEY_DOT#0) goto play_move_leftright::@2 -Simple Condition (bool~) play_move_leftright::$6 [959] if((byte~) play_move_leftright::$4!=(byte) COLLISION_NONE#0) goto play_move_leftright::@12 -Simple Condition (bool~) play_move_rotate::$0 [977] if((byte) play_move_rotate::key_event#0==(byte) KEY_Z#0) goto play_move_rotate::@1 -Simple Condition (bool~) play_move_rotate::$1 [984] if((byte) play_move_rotate::key_event#0==(byte) KEY_X#0) goto play_move_rotate::@2 -Simple Condition (bool~) play_move_rotate::$4 [1006] if((byte~) play_move_rotate::$2!=(byte) COLLISION_NONE#0) goto play_move_rotate::@5 -Simple Condition (bool~) play_collision::$3 [1035] if(*((byte*) play_collision::piece_gfx#2 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -Simple Condition (bool~) play_collision::$14 [1040] if((byte) play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 -Simple Condition (bool~) play_collision::$6 [1045] if((byte) play_collision::ypos2#2<(byte/signed word/word/dword/signed dword~) play_collision::$4) goto play_collision::@4 -Simple Condition (bool~) play_collision::$9 [1050] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -Simple Condition (bool~) play_collision::$11 [1058] if((byte) play_collision::col#2<(byte) PLAYFIELD_COLS#0) goto play_collision::@6 -Simple Condition (bool~) play_collision::$13 [1063] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@7 -Simple Condition (bool~) play_collision::$15 [1071] if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 -Simple Condition (bool~) play_lock_current::$2 [1086] if(*((byte*) current_piece_gfx#39 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -Simple Condition (bool~) play_lock_current::$3 [1091] if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 -Simple Condition (bool~) play_lock_current::$4 [1098] if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 -Simple Condition (bool~) play_spawn_current::$4 [1119] if((byte~) play_spawn_current::$2!=(byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@1 -Simple Condition (bool~) play_spawn_current::$5 [1126] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@4 -Simple Condition (bool~) play_remove_lines::$7 [1166] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@3 -Simple Condition (bool~) play_remove_lines::$8 [1172] if((byte) play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 -Simple Condition (bool~) play_remove_lines::$10 [1178] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@7 -Simple Condition (bool~) play_remove_lines::$12 [1182] if((byte) play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 -Simple Condition (bool~) play_remove_lines::$13 [1189] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@10 -Simple Condition (bool~) play_update_score::$1 [1201] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@1 -Simple Condition (bool~) play_update_score::$8 [1218] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@4 -Simple Condition (bool~) play_increase_level::$0 [1236] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@1 -Simple Condition (bool~) play_increase_level::$3 [1246] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@3 -Simple Condition (bool~) play_increase_level::$5 [1258] if((byte) play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 -Simple Condition (bool~) main::$10 [1312] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@5 -Simple Condition (bool~) main::$14 [1330] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -Simple Condition (bool~) main::$17 [1359] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@20 +Simple Condition (bool~) play_init::$2 [756] if((byte) play_init::j#1!=rangelast(0,play_init::$1)) goto play_init::@1 +Simple Condition (bool~) play_init::$3 [767] if((byte) play_init::b#1!=rangelast(0,4)) goto play_init::@3 +Simple Condition (bool~) play_movement::$2 [795] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 +Simple Condition (bool~) play_move_down::$1 [837] if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 +Simple Condition (bool~) play_move_down::$4 [846] 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::$6 [852] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 +Simple Condition (bool~) play_move_down::$10 [856] if((byte) current_movedown_counter#12<(byte) current_movedown_fast#0) goto play_move_down::@13 +Simple Condition (bool~) play_move_down::$8 [863] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$13 [878] if((byte~) play_move_down::$12==(byte) COLLISION_NONE#0) goto play_move_down::@14 +Simple Condition (bool~) play_move_leftright::$0 [929] if((byte) play_move_leftright::key_event#0==(byte) KEY_COMMA#0) goto play_move_leftright::@1 +Simple Condition (bool~) play_move_leftright::$10 [941] if((byte~) play_move_leftright::$8!=(byte) COLLISION_NONE#0) goto play_move_leftright::@13 +Simple Condition (bool~) play_move_leftright::$2 [945] if((byte) play_move_leftright::key_event#0!=(byte) KEY_DOT#0) goto play_move_leftright::@2 +Simple Condition (bool~) play_move_leftright::$6 [958] if((byte~) play_move_leftright::$4!=(byte) COLLISION_NONE#0) goto play_move_leftright::@12 +Simple Condition (bool~) play_move_rotate::$0 [976] if((byte) play_move_rotate::key_event#0==(byte) KEY_Z#0) goto play_move_rotate::@1 +Simple Condition (bool~) play_move_rotate::$1 [983] if((byte) play_move_rotate::key_event#0==(byte) KEY_X#0) goto play_move_rotate::@2 +Simple Condition (bool~) play_move_rotate::$4 [1005] if((byte~) play_move_rotate::$2!=(byte) COLLISION_NONE#0) goto play_move_rotate::@5 +Simple Condition (bool~) play_collision::$2 [1034] if(*((byte*) play_collision::piece_gfx#2 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 +Simple Condition (bool~) play_collision::$12 [1039] if((byte) play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 +Simple Condition (bool~) play_collision::$4 [1043] if((byte) play_collision::yp#2<(byte) PLAYFIELD_LINES#0) goto play_collision::@4 +Simple Condition (bool~) play_collision::$7 [1048] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 +Simple Condition (bool~) play_collision::$9 [1056] if((byte) play_collision::xp#2<(byte) PLAYFIELD_COLS#0) goto play_collision::@6 +Simple Condition (bool~) play_collision::$11 [1061] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@7 +Simple Condition (bool~) play_collision::$13 [1069] if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 +Simple Condition (bool~) play_lock_current::$1 [1084] if(*((byte*) current_piece_gfx#39 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 +Simple Condition (bool~) play_lock_current::$2 [1089] if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 +Simple Condition (bool~) play_lock_current::$3 [1096] if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 +Simple Condition (bool~) play_spawn_current::$3 [1117] if((byte~) play_spawn_current::$1!=(byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@1 +Simple Condition (bool~) play_spawn_current::$4 [1124] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@4 +Simple Condition (bool~) play_remove_lines::$7 [1164] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@3 +Simple Condition (bool~) play_remove_lines::$8 [1170] if((byte) play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 +Simple Condition (bool~) play_remove_lines::$10 [1176] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@7 +Simple Condition (bool~) play_remove_lines::$12 [1180] if((byte) play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 +Simple Condition (bool~) play_remove_lines::$13 [1187] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@10 +Simple Condition (bool~) play_update_score::$1 [1199] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@1 +Simple Condition (bool~) play_update_score::$7 [1216] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@4 +Simple Condition (bool~) play_increase_level::$0 [1234] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@1 +Simple Condition (bool~) play_increase_level::$3 [1244] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@3 +Simple Condition (bool~) play_increase_level::$4 [1255] if((byte) play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 +Simple Condition (bool~) main::$10 [1309] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@5 +Simple Condition (bool~) main::$14 [1327] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 +Simple Condition (bool~) main::$17 [1356] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@20 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -8462,7 +8468,7 @@ Constant (const byte*) current_piece_gfx#0 = 0 Constant (const byte) current_piece_char#0 = 0 Constant (const byte) current_xpos#0 = 0 Constant (const byte) current_ypos#0 = 0 -Constant (const byte) render_screen_render#0 = $40 +Constant (const byte) render_screen_render#0 = $20 Constant (const byte) render_screen_show#0 = 0 Constant (const dword) score_bcd#0 = 0 Constant (const word) lines_bcd#0 = 0 @@ -8473,7 +8479,7 @@ Constant (const byte/signed byte/word/signed word/dword/signed dword) render_ini Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$9 = 2*$28 Constant (const byte) render_init::i#0 = 0 Constant (const byte) render_screen_show#1 = 0 -Constant (const byte) render_screen_render#1 = $40 +Constant (const byte) render_screen_render#1 = $20 Constant (const byte) render_show::d018val#0 = 0 Constant (const byte*) render_score::screen#0 = 0 Constant (const dword*) render_score::$1 = &score_bcd#42 @@ -8604,7 +8610,7 @@ Constant (const byte*) render_screen_original::ocols#0 = PLAYFIELD_COLORS_ORIGIN Constant (const byte*) render_screen_original::cols#0 = COLS#0 Constant (const byte) render_playfield::i#0 = PLAYFIELD_COLS#0*2 Constant (const byte/signed word/word/dword/signed dword) render_playfield::$1 = PLAYFIELD_LINES#0-1 -Constant (const byte/signed word/word/dword/signed dword) render_playfield::$4 = PLAYFIELD_COLS#0-1 +Constant (const byte/signed word/word/dword/signed dword) render_playfield::$3 = PLAYFIELD_COLS#0-1 Constant (const word/signed dword/dword/signed word) render_next::$1 = render_next::$0+$18 Constant (const byte) sprites_init::xpos#0 = $18+sprites_init::$0 Constant (const byte/signed word/word/dword/signed dword) $4 = SPRITES_FIRST_YPOS#0+$13 @@ -8631,7 +8637,6 @@ Constant (const byte/signed word/word/dword/signed dword) play_init::$1 = PLAYFI Constant (const byte) play_init::$0 = PLAYFIELD_COLS#0*PLAYFIELD_LINES#0 Constant (const byte) keyboard_event_pressed::keycode#4 = KEY_SPACE#0 Constant (const byte) play_move_down::movedown#1 = ++play_move_down::movedown#0 -Constant (const byte/signed word/word/dword/signed dword) play_collision::$4 = 2*PLAYFIELD_LINES#0 Constant (const byte) play_collision::return#4 = COLLISION_BOTTOM#0 Constant (const byte) play_collision::return#6 = COLLISION_LEFT#0 Constant (const byte) play_collision::return#7 = COLLISION_RIGHT#0 @@ -8722,7 +8727,7 @@ Consolidated array index constant in *(MOVEDOWN_SLOW_SPEEDS#0+level#0) Removed zero-constant in assignment play_movement::render#1 Removed zero-constant in assignment current_piece_gfx#74 Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [515] if(true) goto main::@2 +if() condition always true - replacing block destination [517] if(true) goto main::@2 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 @@ -8738,7 +8743,7 @@ Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 -if() condition always true - replacing block destination [527] if(true) goto main::@13 +if() condition always true - replacing block destination [529] if(true) goto main::@13 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars @@ -8750,8 +8755,8 @@ Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars -Eliminating Noop Cast (byte*) render_next::next_piece_gfx#0 ← ((byte*)) *((const word[]) PIECES#0 + (byte/signed word/word/dword/signed dword~) render_next::$4) -Eliminating Noop Cast (byte*) current_piece#5 ← ((byte*)) *((const word[]) PIECES#0 + (byte/signed word/word/dword/signed dword~) play_spawn_current::$0) +Eliminating Noop Cast (byte*) render_next::next_piece_gfx#0 ← ((byte*)) *((const word[]) PIECES#0 + (byte) render_next::$9) +Eliminating Noop Cast (byte*) current_piece#5 ← ((byte*)) *((const word[]) PIECES#0 + (byte) play_spawn_current::$7) Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -8764,7 +8769,7 @@ Resolved ranged comparison value if(render_init::i#1!=rangelast(0,render_init::$ Resolved ranged next value render_screen_original::y#1 ← ++ render_screen_original::y#6 to ++ Resolved ranged comparison value if(render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 to (byte/signed byte/word/signed word/dword/signed dword) $19 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::$4)) goto render_playfield::@2 to (const byte/signed word/word/dword/signed dword) render_playfield::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged comparison value if(render_playfield::c#1!=rangelast(0,render_playfield::$3)) goto render_playfield::@2 to (const byte/signed word/word/dword/signed dword) render_playfield::$3+(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(2,render_playfield::$1)) goto render_playfield::@1 to (const byte/signed word/word/dword/signed dword) render_playfield::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_moving::l#1 ← ++ render_moving::l#4 to ++ @@ -8795,21 +8800,21 @@ Resolved ranged next value play_remove_lines::y#1 ← ++ play_remove_lines::y#8 Resolved ranged comparison value if(play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 to (const byte/signed word/word/dword/signed dword) play_remove_lines::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value play_increase_level::b#1 ← ++ play_increase_level::b#2 to ++ Resolved ranged comparison value if(play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 to (byte/signed byte/word/signed word/dword/signed dword) 5 -Rewriting conditional comparison if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 +Rewriting conditional comparison if((byte) render_moving::ypos#2>(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 Rewriting conditional comparison if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@1 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) render_init::$13 ← (byte) render_init::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) render_init::$14 ← (byte) render_init::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) render_playfield::$2 ← (byte) render_playfield::l#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) render_next::$4 ← (byte) next_piece_idx#12 * (byte/signed byte/word/signed word/dword/signed dword) 2 +Rewriting multiplication to use shift (byte) render_init::$14 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) render_init::$15 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) render_playfield::$6 ← (byte~) render_playfield::$2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) render_moving::$6 ← (byte~) render_moving::$1 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) render_next::$9 ← (byte) next_piece_idx#12 * (const byte) SIZEOF_WORD Rewriting multiplication to use shift (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) play_init::$2 ← (byte) play_init::j#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte) play_init::b4#0 ← (byte) play_init::b#2 * (byte/signed byte/word/signed word/dword/signed dword) 4 -Rewriting multiplication to use shift (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) play_update_score::$4 ← (byte) play_update_score::removed#0 * (byte/signed byte/word/signed word/dword/signed dword) 4 -Rewriting multiplication to use shift (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 * (byte/signed byte/word/signed word/dword/signed dword) 4 +Rewriting multiplication to use shift (byte) play_init::$4 ← (byte) play_init::j#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) play_init::$5 ← (byte) play_init::b#2 * (const byte) SIZEOF_DWORD +Rewriting multiplication to use shift (byte) play_collision::$14 ← (byte) play_collision::yp#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 * (const byte) SIZEOF_DWORD +Rewriting multiplication to use shift (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 * (const byte) SIZEOF_DWORD Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) @5 Culled Empty Block (label) @9 @@ -8876,7 +8881,7 @@ Self Phi Eliminated (byte) current_xpos#16 Self Phi Eliminated (byte*) current_piece_gfx#29 Self Phi Eliminated (byte) current_piece_char#37 Self Phi Eliminated (byte) render_next::next_piece_char#3 -Self Phi Eliminated (byte) play_collision::col#0 +Self Phi Eliminated (byte) play_collision::xp#0 Self Phi Eliminated (byte*) play_collision::piece_gfx#2 Self Phi Eliminated (byte) current_xpos#29 Self Phi Eliminated (byte*) current_piece_gfx#39 @@ -8890,7 +8895,7 @@ Redundant Phi (byte) current_xpos#16 (byte) current_xpos#59 Redundant Phi (byte*) current_piece_gfx#29 (byte*) current_piece_gfx#64 Redundant Phi (byte) current_piece_char#37 (byte) current_piece_char#68 Redundant Phi (byte) render_next::next_piece_char#3 (byte) render_next::next_piece_char#0 -Redundant Phi (byte) play_collision::col#0 (byte) play_collision::xpos#6 +Redundant Phi (byte) play_collision::xp#0 (byte) play_collision::xpos#6 Redundant Phi (byte*) play_collision::piece_gfx#2 (byte*) play_collision::piece_gfx#0 Redundant Phi (byte) current_xpos#29 (byte) current_xpos#124 Redundant Phi (byte*) current_piece_gfx#39 (byte*) current_piece_gfx#114 @@ -8910,14 +8915,7 @@ Redundant Phi (dword) score_bcd#42 (dword) score_bcd#14 Redundant Phi (byte) level#102 (byte) level#17 Redundant Phi (byte) level_bcd#100 (byte) level_bcd#17 Successful SSA optimization Pass2RedundantPhiElimination -Inferred type updated to byte in [76] (byte/signed word/word/dword/signed dword~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [78] (byte/signed word/word/dword/signed dword~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [158] (byte/signed word/word/dword/signed dword~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [159] (byte/signed word/word/dword/signed dword~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -Inferred type updated to byte in [194] (byte/signed word/word/dword/signed dword~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [280] (byte/signed word/word/dword/signed dword~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [420] (byte/signed word/word/dword/signed dword~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to byte in [462] (byte/signed word/word/dword/signed dword~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 +Successful SSA optimization PassNEliminateUnusedVars Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0 Inlining constant with var siblings (const byte) keyboard_event_scan::row#0 @@ -9029,7 +9027,6 @@ Constant inlined render_screen_original::y#0 = (byte/signed byte/word/signed wor Constant inlined current_movedown_slow#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0182_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0/(byte/signed byte/word/signed word/dword/signed dword) 4&(byte/signed byte/word/signed word/dword/signed dword) $f Constant inlined render_playfield::i#0 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined play_collision::$4 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined render_show::toD0182_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN_2#0&(word/signed word/dword/signed dword) $3fff*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined render_init::$12 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 @@ -9125,7 +9122,7 @@ Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dwo Constant inlined render_next::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 -Constant inlined render_screen_render#1 = (byte/signed byte/word/signed word/dword/signed dword) $40 +Constant inlined render_screen_render#1 = (byte/signed byte/word/signed word/dword/signed dword) $20 Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined $3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined play_lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -9167,7 +9164,7 @@ Constant inlined keyboard_event_scan::row#0 = (byte/signed byte/word/signed word Constant inlined render_playfield::$1 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_init::b#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_next::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined render_playfield::$4 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined render_playfield::$3 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_remove_lines::$5 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined level_bcd#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined level#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -9303,14 +9300,14 @@ CALL GRAPH Calls in [] to main:12 Calls in [main] to sid_rnd_init:15 render_init:17 sprites_init:19 sprites_irq_init:21 play_init:23 play_spawn_current:25 play_spawn_current:28 render_playfield:30 render_moving:35 render_next:37 render_show:49 keyboard_event_scan:51 keyboard_event_get:53 play_movement:59 render_playfield:64 render_moving:70 render_next:73 render_score:75 render_screen_swap:77 Calls in [render_score] to render_bcd:120 render_bcd:125 render_bcd:130 render_bcd:135 render_bcd:140 render_bcd:145 -Calls in [play_movement] to play_move_down:245 play_move_leftright:256 play_move_rotate:261 -Calls in [play_move_rotate] to play_collision:286 -Calls in [play_move_leftright] to play_collision:338 play_collision:355 -Calls in [play_move_down] to keyboard_event_pressed:366 play_collision:386 play_lock_current:391 play_remove_lines:393 play_update_score:397 play_spawn_current:400 -Calls in [play_spawn_current] to play_collision:472 -Calls in [play_update_score] to play_increase_level:499 -Calls in [keyboard_event_scan] to keyboard_matrix_read:619 keyboard_event_pressed:630 keyboard_event_pressed:636 keyboard_event_pressed:642 keyboard_event_pressed:648 -Calls in [render_init] to render_screen_original:754 render_screen_original:756 +Calls in [play_movement] to play_move_down:246 play_move_leftright:257 play_move_rotate:262 +Calls in [play_move_rotate] to play_collision:287 +Calls in [play_move_leftright] to play_collision:339 play_collision:356 +Calls in [play_move_down] to keyboard_event_pressed:367 play_collision:387 play_lock_current:392 play_remove_lines:394 play_update_score:398 play_spawn_current:401 +Calls in [play_spawn_current] to play_collision:473 +Calls in [play_update_score] to play_increase_level:500 +Calls in [keyboard_event_scan] to keyboard_matrix_read:621 keyboard_event_pressed:632 keyboard_event_pressed:638 keyboard_event_pressed:644 keyboard_event_pressed:650 +Calls in [render_init] to render_screen_original:756 render_screen_original:758 Created 172 initial phi equivalence classes Coalesced [26] next_piece_idx#90 ← next_piece_idx#18 @@ -9390,238 +9387,238 @@ Coalesced [186] render_next::l#8 ← render_next::l#1 Coalesced (already) [187] render_next::next_piece_gfx#11 ← render_next::next_piece_gfx#1 Coalesced [188] render_next::screen_next_area#15 ← render_next::screen_next_area#3 Coalesced [189] render_next::c#6 ← render_next::c#1 -Coalesced [193] render_moving::ypos2#9 ← render_moving::ypos2#0 +Coalesced [193] render_moving::ypos#9 ← render_moving::ypos#0 Coalesced [197] render_moving::i#12 ← render_moving::i#1 -Coalesced [203] render_moving::ypos2#10 ← render_moving::ypos2#1 +Coalesced [203] render_moving::ypos#10 ← render_moving::ypos#1 Coalesced [204] render_moving::i#10 ← render_moving::i#8 Coalesced [205] render_moving::l#9 ← render_moving::l#1 -Coalesced [209] render_moving::i#13 ← render_moving::i#3 -Coalesced [210] render_moving::xpos#5 ← render_moving::xpos#0 -Coalesced [219] render_moving::i#11 ← render_moving::i#2 -Coalesced (already) [220] render_moving::i#14 ← render_moving::i#2 -Coalesced [221] render_moving::xpos#6 ← render_moving::xpos#1 -Coalesced [222] render_moving::c#5 ← render_moving::c#1 -Coalesced [228] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [229] render_playfield::screen_line#3 ← render_playfield::screen_line#0 -Coalesced [239] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [240] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [241] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [242] render_playfield::screen_line#4 ← render_playfield::screen_line#1 -Coalesced [243] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [249] play_movement::return#6 ← play_movement::render#1 -Coalesced [250] current_orientation#103 ← current_orientation#20 -Coalesced [251] current_piece_gfx#122 ← current_piece_gfx#20 -Coalesced [252] current_xpos#132 ← current_xpos#22 -Coalesced [265] play_movement::return#7 ← play_movement::return#0 -Coalesced [266] current_orientation#104 ← current_orientation#25 -Coalesced [267] current_piece_gfx#123 ← current_piece_gfx#21 -Coalesced [268] current_xpos#133 ← current_xpos#26 -Coalesced (already) [271] current_orientation#107 ← current_orientation#20 -Coalesced (already) [272] current_piece_gfx#126 ← current_piece_gfx#20 -Coalesced [277] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [282] current_piece#103 ← current_piece#15 -Coalesced [283] play_collision::orientation#9 ← play_collision::orientation#3 -Coalesced [284] play_collision::ypos#9 ← play_collision::ypos#3 -Coalesced [285] play_collision::xpos#18 ← play_collision::xpos#3 -Coalesced [292] current_orientation#105 ← current_orientation#7 -Coalesced [293] current_piece_gfx#124 ← current_piece_gfx#7 -Coalesced (already) [294] current_orientation#106 ← current_orientation#20 -Coalesced (already) [295] current_piece_gfx#125 ← current_piece_gfx#20 -Coalesced [298] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [302] play_collision::ypos2#11 ← play_collision::ypos2#0 -Coalesced [305] play_collision::i#12 ← play_collision::i#3 -Not coalescing [306] play_collision::col#9 ← play_collision::xpos#6 -Coalesced [323] play_collision::ypos2#12 ← play_collision::ypos2#1 -Not coalescing [324] play_collision::i#11 ← play_collision::i#1 -Coalesced [325] play_collision::l#11 ← play_collision::l#1 -Not coalescing [326] play_collision::i#13 ← play_collision::i#1 -Coalesced [327] play_collision::col#10 ← play_collision::col#1 -Coalesced [328] play_collision::c#9 ← play_collision::c#1 -Not coalescing [334] current_piece#102 ← current_piece#15 -Coalesced [335] play_collision::orientation#8 ← play_collision::orientation#2 -Coalesced [336] play_collision::ypos#8 ← play_collision::ypos#2 -Coalesced [337] play_collision::xpos#17 ← play_collision::xpos#2 -Coalesced [343] current_xpos#135 ← current_xpos#6 -Coalesced (already) [346] current_xpos#137 ← current_xpos#22 -Coalesced (already) [347] current_xpos#138 ← current_xpos#22 -Not coalescing [351] current_piece#101 ← current_piece#15 -Coalesced [352] play_collision::orientation#7 ← play_collision::orientation#1 -Coalesced [353] play_collision::ypos#7 ← play_collision::ypos#1 -Coalesced [354] play_collision::xpos#16 ← play_collision::xpos#1 -Coalesced [360] current_xpos#136 ← current_xpos#8 -Coalesced (already) [361] current_xpos#134 ← current_xpos#22 -Coalesced [372] play_move_down::movedown#15 ← play_move_down::movedown#2 -Coalesced [376] play_move_down::movedown#17 ← play_move_down::movedown#3 -Not coalescing [382] current_piece#100 ← current_piece#10 -Coalesced [383] play_collision::orientation#6 ← play_collision::orientation#0 -Coalesced [384] play_collision::ypos#6 ← play_collision::ypos#0 -Coalesced [385] play_collision::xpos#15 ← play_collision::xpos#0 -Coalesced (already) [398] next_piece_idx#91 ← next_piece_idx#10 -Coalesced (already) [399] game_over#99 ← game_over#10 -Coalesced [401] current_ypos#109 ← current_ypos#6 -Coalesced [402] lines_bcd#97 ← lines_bcd#17 -Coalesced [403] score_bcd#93 ← score_bcd#16 -Coalesced [404] level#113 ← level#19 -Coalesced [405] current_movedown_slow#98 ← current_movedown_slow#23 -Coalesced [406] level_bcd#110 ← level_bcd#19 -Coalesced [408] current_piece_char#111 ← current_piece_char#5 -Coalesced [409] current_piece_gfx#128 ← current_piece_gfx#74 -Coalesced [410] current_xpos#140 ← current_xpos#103 -Coalesced [411] game_over#95 ← game_over#52 -Coalesced [412] next_piece_idx#87 ← next_piece_idx#18 -Coalesced (already) [414] current_ypos#110 ← current_ypos#38 -Coalesced [415] lines_bcd#98 ← lines_bcd#26 -Coalesced [416] score_bcd#94 ← score_bcd#26 -Coalesced [417] level#114 ← level#33 -Coalesced [418] current_movedown_slow#99 ← current_movedown_slow#37 -Coalesced [419] level_bcd#111 ← level_bcd#31 -Coalesced [420] current_piece#107 ← current_piece#28 -Coalesced (already) [421] current_piece_char#112 ← current_piece_char#29 -Coalesced [422] current_orientation#109 ← current_orientation#37 -Coalesced (already) [423] current_piece_gfx#129 ← current_piece_gfx#35 -Coalesced (already) [424] current_xpos#141 ← current_xpos#43 -Coalesced (already) [425] game_over#96 ← game_over#27 -Coalesced (already) [426] next_piece_idx#88 ← next_piece_idx#30 -Coalesced [430] current_ypos#108 ← current_ypos#3 -Coalesced (already) [431] lines_bcd#96 ← lines_bcd#19 -Coalesced (already) [432] score_bcd#92 ← score_bcd#18 -Coalesced (already) [433] level#112 ← level#10 -Coalesced (already) [434] current_movedown_slow#97 ← current_movedown_slow#14 -Coalesced (already) [435] level_bcd#109 ← level_bcd#11 -Coalesced (already) [436] current_piece#105 ← current_piece#10 -Coalesced (already) [437] current_piece_char#110 ← current_piece_char#10 -Coalesced (already) [438] current_orientation#108 ← current_orientation#13 -Coalesced (already) [439] current_piece_gfx#127 ← current_piece_gfx#114 -Coalesced (already) [440] current_xpos#139 ← current_xpos#124 -Coalesced (already) [441] game_over#94 ← game_over#10 -Coalesced (already) [442] next_piece_idx#86 ← next_piece_idx#10 -Coalesced [443] current_movedown_counter#65 ← current_movedown_counter#12 -Coalesced (already) [444] current_ypos#111 ← current_ypos#100 -Coalesced (already) [445] lines_bcd#99 ← lines_bcd#19 -Coalesced (already) [446] score_bcd#95 ← score_bcd#18 -Coalesced (already) [447] level#115 ← level#10 -Coalesced (already) [448] current_movedown_slow#100 ← current_movedown_slow#14 -Coalesced (already) [449] level_bcd#112 ← level_bcd#11 -Coalesced (already) [450] current_piece#108 ← current_piece#10 -Coalesced (already) [451] current_piece_char#113 ← current_piece_char#10 -Coalesced (already) [452] current_orientation#110 ← current_orientation#13 -Coalesced (already) [453] current_piece_gfx#130 ← current_piece_gfx#114 -Coalesced (already) [454] current_xpos#142 ← current_xpos#124 -Coalesced (already) [455] game_over#97 ← game_over#10 -Coalesced (already) [456] next_piece_idx#89 ← next_piece_idx#10 -Coalesced [457] play_move_down::movedown#16 ← play_move_down::movedown#7 -Coalesced [458] play_move_down::movedown#13 ← play_move_down::movedown#10 -Coalesced (already) [459] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [470] play_collision::ypos#10 ← play_collision::ypos#4 -Coalesced [471] play_collision::xpos#19 ← play_collision::xpos#4 -Coalesced [480] next_piece_idx#18 ← play_spawn_current::piece_idx#2 -Coalesced [484] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced (already) [485] game_over#100 ← game_over#65 -Coalesced [500] lines_bcd#102 ← lines_bcd#30 -Coalesced [501] score_bcd#98 ← score_bcd#30 -Coalesced [502] level#118 ← level#21 -Coalesced [503] current_movedown_slow#103 ← current_movedown_slow#69 -Coalesced [504] level_bcd#115 ← level_bcd#64 -Coalesced (already) [507] lines_bcd#101 ← lines_bcd#30 -Coalesced (already) [508] score_bcd#97 ← score_bcd#30 -Coalesced (already) [509] level#117 ← level#10 -Coalesced (already) [510] current_movedown_slow#102 ← current_movedown_slow#14 -Coalesced (already) [511] level_bcd#114 ← level_bcd#11 -Coalesced (already) [512] lines_bcd#100 ← lines_bcd#19 -Coalesced (already) [513] score_bcd#96 ← score_bcd#18 -Coalesced (already) [514] level#116 ← level#10 -Coalesced (already) [515] current_movedown_slow#101 ← current_movedown_slow#14 -Coalesced (already) [516] level_bcd#113 ← level_bcd#11 -Coalesced [520] current_movedown_slow#104 ← current_movedown_slow#10 -Coalesced [526] level_bcd#117 ← level_bcd#8 -Coalesced [536] play_increase_level::b#3 ← play_increase_level::b#1 -Coalesced [537] level_bcd#116 ← level_bcd#21 -Coalesced [540] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [541] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [555] play_remove_lines::w#17 ← play_remove_lines::w#2 -Coalesced [556] play_remove_lines::removed#14 ← play_remove_lines::removed#1 -Coalesced [560] play_remove_lines::w#19 ← play_remove_lines::w#11 -Coalesced [566] play_remove_lines::w#18 ← play_remove_lines::w#3 -Coalesced [567] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [568] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [569] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [570] play_remove_lines::removed#12 ← play_remove_lines::removed#8 -Coalesced [571] play_remove_lines::w#16 ← play_remove_lines::w#1 -Coalesced (already) [572] play_remove_lines::removed#13 ← play_remove_lines::removed#11 -Coalesced (already) [573] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [574] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [575] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [576] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [577] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [579] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 -Coalesced [583] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [584] play_lock_current::col#5 ← play_lock_current::col#0 -Coalesced [596] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 -Not coalescing [597] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [598] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [599] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [600] play_lock_current::col#6 ← play_lock_current::col#1 -Coalesced [601] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [611] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [612] keyboard_events_size#88 ← keyboard_events_size#4 -Coalesced [615] keyboard_events_size#87 ← keyboard_events_size#13 -Coalesced [616] keyboard_events_size#89 ← keyboard_events_size#19 -Coalesced [624] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#1 -Coalesced (already) [625] keyboard_events_size#92 ← keyboard_events_size#30 -Coalesced [654] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [655] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [656] keyboard_events_size#90 ← keyboard_events_size#13 -Coalesced [657] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#11 -Coalesced [658] keyboard_events_size#94 ← keyboard_events_size#30 -Coalesced [668] keyboard_events_size#98 ← keyboard_events_size#2 -Coalesced [674] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#15 -Coalesced [675] keyboard_events_size#91 ← keyboard_events_size#29 -Coalesced [676] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [677] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#15 -Coalesced (already) [678] keyboard_events_size#93 ← keyboard_events_size#29 -Coalesced [682] keyboard_events_size#97 ← keyboard_events_size#1 -Coalesced (already) [683] keyboard_events_size#96 ← keyboard_events_size#10 -Coalesced (already) [684] keyboard_events_size#95 ← keyboard_events_size#10 -Coalesced [714] play_init::b#3 ← play_init::b#1 -Coalesced [715] play_init::j#3 ← play_init::j#1 -Coalesced [716] play_init::pli#3 ← play_init::pli#1 -Coalesced [717] play_init::idx#3 ← play_init::idx#1 -Coalesced [742] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [743] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [767] render_init::i#3 ← render_init::i#1 -Coalesced [768] render_init::li_1#3 ← render_init::li_1#1 -Coalesced [769] render_init::li_2#3 ← render_init::li_2#1 -Coalesced [771] render_screen_original::screen#11 ← render_screen_original::screen#9 -Coalesced [773] render_screen_original::screen#13 ← render_screen_original::screen#8 -Coalesced [774] render_screen_original::cols#10 ← render_screen_original::cols#7 -Coalesced [782] render_screen_original::oscr#8 ← render_screen_original::oscr#4 -Coalesced [783] render_screen_original::screen#15 ← render_screen_original::screen#2 -Coalesced [784] render_screen_original::ocols#8 ← render_screen_original::ocols#4 -Coalesced [785] render_screen_original::cols#12 ← render_screen_original::cols#1 -Coalesced [786] render_screen_original::x#8 ← render_screen_original::x#1 -Coalesced [796] render_screen_original::screen#17 ← render_screen_original::screen#3 -Coalesced [797] render_screen_original::cols#14 ← render_screen_original::cols#2 -Coalesced [798] render_screen_original::x#10 ← render_screen_original::x#2 -Coalesced [809] render_screen_original::screen#12 ← render_screen_original::screen#10 -Coalesced [810] render_screen_original::cols#9 ← render_screen_original::cols#3 -Coalesced [811] render_screen_original::oscr#7 ← render_screen_original::oscr#1 -Coalesced [812] render_screen_original::ocols#7 ← render_screen_original::ocols#1 -Coalesced [813] render_screen_original::y#7 ← render_screen_original::y#1 -Coalesced [814] render_screen_original::screen#18 ← render_screen_original::screen#10 -Coalesced [815] render_screen_original::cols#15 ← render_screen_original::cols#3 -Coalesced [816] render_screen_original::x#11 ← render_screen_original::x#3 -Coalesced (already) [817] render_screen_original::oscr#9 ← render_screen_original::oscr#1 -Coalesced [818] render_screen_original::screen#16 ← render_screen_original::screen#3 -Coalesced (already) [819] render_screen_original::ocols#9 ← render_screen_original::ocols#1 -Coalesced [820] render_screen_original::cols#13 ← render_screen_original::cols#2 -Coalesced [821] render_screen_original::x#9 ← render_screen_original::x#2 -Coalesced (already) [822] render_screen_original::screen#14 ← render_screen_original::screen#2 -Coalesced (already) [823] render_screen_original::cols#11 ← render_screen_original::cols#1 -Coalesced [824] render_screen_original::x#7 ← render_screen_original::x#1 -Coalesced [851] irq_raster_next#27 ← irq_raster_next#3 -Coalesced [860] irq_raster_next#26 ← irq_raster_next#2 -Coalesced [865] irq_raster_next#25 ← irq_raster_next#1 -Coalesced down to 96 phi equivalence classes +Coalesced [210] render_moving::i#13 ← render_moving::i#3 +Coalesced [211] render_moving::xpos#5 ← render_moving::xpos#0 +Coalesced [220] render_moving::i#11 ← render_moving::i#2 +Coalesced (already) [221] render_moving::i#14 ← render_moving::i#2 +Coalesced [222] render_moving::xpos#6 ← render_moving::xpos#1 +Coalesced [223] render_moving::c#5 ← render_moving::c#1 +Coalesced [229] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [230] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [240] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [241] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [242] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [243] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [244] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [250] play_movement::return#6 ← play_movement::render#1 +Coalesced [251] current_orientation#103 ← current_orientation#20 +Coalesced [252] current_piece_gfx#122 ← current_piece_gfx#20 +Coalesced [253] current_xpos#132 ← current_xpos#22 +Coalesced [266] play_movement::return#7 ← play_movement::return#0 +Coalesced [267] current_orientation#104 ← current_orientation#25 +Coalesced [268] current_piece_gfx#123 ← current_piece_gfx#21 +Coalesced [269] current_xpos#133 ← current_xpos#26 +Coalesced (already) [272] current_orientation#107 ← current_orientation#20 +Coalesced (already) [273] current_piece_gfx#126 ← current_piece_gfx#20 +Coalesced [278] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [283] current_piece#103 ← current_piece#15 +Coalesced [284] play_collision::orientation#9 ← play_collision::orientation#3 +Coalesced [285] play_collision::yp#14 ← play_collision::ypos#3 +Coalesced [286] play_collision::xpos#18 ← play_collision::xpos#3 +Coalesced [293] current_orientation#105 ← current_orientation#7 +Coalesced [294] current_piece_gfx#124 ← current_piece_gfx#7 +Coalesced (already) [295] current_orientation#106 ← current_orientation#20 +Coalesced (already) [296] current_piece_gfx#125 ← current_piece_gfx#20 +Coalesced [299] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [302] play_collision::yp#16 ← play_collision::yp#0 +Coalesced [306] play_collision::i#12 ← play_collision::i#3 +Not coalescing [307] play_collision::xp#9 ← play_collision::xpos#6 +Coalesced [324] play_collision::yp#17 ← play_collision::yp#1 +Not coalescing [325] play_collision::i#11 ← play_collision::i#1 +Coalesced [326] play_collision::l#11 ← play_collision::l#1 +Not coalescing [327] play_collision::i#13 ← play_collision::i#1 +Coalesced [328] play_collision::xp#10 ← play_collision::xp#1 +Coalesced [329] play_collision::c#9 ← play_collision::c#1 +Not coalescing [335] current_piece#102 ← current_piece#15 +Coalesced [336] play_collision::orientation#8 ← play_collision::orientation#2 +Coalesced [337] play_collision::yp#13 ← play_collision::ypos#2 +Coalesced [338] play_collision::xpos#17 ← play_collision::xpos#2 +Coalesced [344] current_xpos#135 ← current_xpos#6 +Coalesced (already) [347] current_xpos#137 ← current_xpos#22 +Coalesced (already) [348] current_xpos#138 ← current_xpos#22 +Not coalescing [352] current_piece#101 ← current_piece#15 +Coalesced [353] play_collision::orientation#7 ← play_collision::orientation#1 +Coalesced [354] play_collision::yp#12 ← play_collision::ypos#1 +Coalesced [355] play_collision::xpos#16 ← play_collision::xpos#1 +Coalesced [361] current_xpos#136 ← current_xpos#8 +Coalesced (already) [362] current_xpos#134 ← current_xpos#22 +Coalesced [373] play_move_down::movedown#15 ← play_move_down::movedown#2 +Coalesced [377] play_move_down::movedown#17 ← play_move_down::movedown#3 +Not coalescing [383] current_piece#100 ← current_piece#10 +Coalesced [384] play_collision::orientation#6 ← play_collision::orientation#0 +Coalesced [385] play_collision::yp#11 ← play_collision::ypos#0 +Coalesced [386] play_collision::xpos#15 ← play_collision::xpos#0 +Coalesced (already) [399] next_piece_idx#91 ← next_piece_idx#10 +Coalesced (already) [400] game_over#99 ← game_over#10 +Coalesced [402] current_ypos#109 ← current_ypos#6 +Coalesced [403] lines_bcd#97 ← lines_bcd#17 +Coalesced [404] score_bcd#93 ← score_bcd#16 +Coalesced [405] level#113 ← level#19 +Coalesced [406] current_movedown_slow#98 ← current_movedown_slow#23 +Coalesced [407] level_bcd#110 ← level_bcd#19 +Coalesced [409] current_piece_char#111 ← current_piece_char#5 +Coalesced [410] current_piece_gfx#128 ← current_piece_gfx#74 +Coalesced [411] current_xpos#140 ← current_xpos#103 +Coalesced [412] game_over#95 ← game_over#52 +Coalesced [413] next_piece_idx#87 ← next_piece_idx#18 +Coalesced (already) [415] current_ypos#110 ← current_ypos#38 +Coalesced [416] lines_bcd#98 ← lines_bcd#26 +Coalesced [417] score_bcd#94 ← score_bcd#26 +Coalesced [418] level#114 ← level#33 +Coalesced [419] current_movedown_slow#99 ← current_movedown_slow#37 +Coalesced [420] level_bcd#111 ← level_bcd#31 +Coalesced [421] current_piece#107 ← current_piece#28 +Coalesced (already) [422] current_piece_char#112 ← current_piece_char#29 +Coalesced [423] current_orientation#109 ← current_orientation#37 +Coalesced (already) [424] current_piece_gfx#129 ← current_piece_gfx#35 +Coalesced (already) [425] current_xpos#141 ← current_xpos#43 +Coalesced (already) [426] game_over#96 ← game_over#27 +Coalesced (already) [427] next_piece_idx#88 ← next_piece_idx#30 +Coalesced [431] current_ypos#108 ← current_ypos#3 +Coalesced (already) [432] lines_bcd#96 ← lines_bcd#19 +Coalesced (already) [433] score_bcd#92 ← score_bcd#18 +Coalesced (already) [434] level#112 ← level#10 +Coalesced (already) [435] current_movedown_slow#97 ← current_movedown_slow#14 +Coalesced (already) [436] level_bcd#109 ← level_bcd#11 +Coalesced (already) [437] current_piece#105 ← current_piece#10 +Coalesced (already) [438] current_piece_char#110 ← current_piece_char#10 +Coalesced (already) [439] current_orientation#108 ← current_orientation#13 +Coalesced (already) [440] current_piece_gfx#127 ← current_piece_gfx#114 +Coalesced (already) [441] current_xpos#139 ← current_xpos#124 +Coalesced (already) [442] game_over#94 ← game_over#10 +Coalesced (already) [443] next_piece_idx#86 ← next_piece_idx#10 +Coalesced [444] current_movedown_counter#65 ← current_movedown_counter#12 +Coalesced (already) [445] current_ypos#111 ← current_ypos#100 +Coalesced (already) [446] lines_bcd#99 ← lines_bcd#19 +Coalesced (already) [447] score_bcd#95 ← score_bcd#18 +Coalesced (already) [448] level#115 ← level#10 +Coalesced (already) [449] current_movedown_slow#100 ← current_movedown_slow#14 +Coalesced (already) [450] level_bcd#112 ← level_bcd#11 +Coalesced (already) [451] current_piece#108 ← current_piece#10 +Coalesced (already) [452] current_piece_char#113 ← current_piece_char#10 +Coalesced (already) [453] current_orientation#110 ← current_orientation#13 +Coalesced (already) [454] current_piece_gfx#130 ← current_piece_gfx#114 +Coalesced (already) [455] current_xpos#142 ← current_xpos#124 +Coalesced (already) [456] game_over#97 ← game_over#10 +Coalesced (already) [457] next_piece_idx#89 ← next_piece_idx#10 +Coalesced [458] play_move_down::movedown#16 ← play_move_down::movedown#7 +Coalesced [459] play_move_down::movedown#13 ← play_move_down::movedown#10 +Coalesced (already) [460] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [471] play_collision::yp#15 ← play_collision::ypos#4 +Coalesced [472] play_collision::xpos#19 ← play_collision::xpos#4 +Coalesced [481] next_piece_idx#18 ← play_spawn_current::piece_idx#2 +Coalesced [485] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced (already) [486] game_over#100 ← game_over#65 +Coalesced [501] lines_bcd#102 ← lines_bcd#30 +Coalesced [502] score_bcd#98 ← score_bcd#30 +Coalesced [503] level#118 ← level#21 +Coalesced [504] current_movedown_slow#103 ← current_movedown_slow#69 +Coalesced [505] level_bcd#115 ← level_bcd#64 +Coalesced (already) [508] lines_bcd#101 ← lines_bcd#30 +Coalesced (already) [509] score_bcd#97 ← score_bcd#30 +Coalesced (already) [510] level#117 ← level#10 +Coalesced (already) [511] current_movedown_slow#102 ← current_movedown_slow#14 +Coalesced (already) [512] level_bcd#114 ← level_bcd#11 +Coalesced (already) [513] lines_bcd#100 ← lines_bcd#19 +Coalesced (already) [514] score_bcd#96 ← score_bcd#18 +Coalesced (already) [515] level#116 ← level#10 +Coalesced (already) [516] current_movedown_slow#101 ← current_movedown_slow#14 +Coalesced (already) [517] level_bcd#113 ← level_bcd#11 +Coalesced [521] current_movedown_slow#104 ← current_movedown_slow#10 +Coalesced [527] level_bcd#117 ← level_bcd#8 +Coalesced [537] play_increase_level::b#3 ← play_increase_level::b#1 +Coalesced [538] level_bcd#116 ← level_bcd#21 +Coalesced [541] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [542] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [556] play_remove_lines::w#17 ← play_remove_lines::w#2 +Coalesced [557] play_remove_lines::removed#14 ← play_remove_lines::removed#1 +Coalesced [561] play_remove_lines::w#19 ← play_remove_lines::w#11 +Coalesced [567] play_remove_lines::w#18 ← play_remove_lines::w#3 +Coalesced [568] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [569] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [570] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [571] play_remove_lines::removed#12 ← play_remove_lines::removed#8 +Coalesced [572] play_remove_lines::w#16 ← play_remove_lines::w#1 +Coalesced (already) [573] play_remove_lines::removed#13 ← play_remove_lines::removed#11 +Coalesced (already) [574] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [575] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [576] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [577] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [578] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [580] play_lock_current::yp#7 ← play_lock_current::yp#0 +Coalesced [585] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [586] play_lock_current::xp#5 ← play_lock_current::xp#0 +Coalesced [598] play_lock_current::yp#8 ← play_lock_current::yp#1 +Not coalescing [599] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [600] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [601] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [602] play_lock_current::xp#6 ← play_lock_current::xp#1 +Coalesced [603] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [613] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [614] keyboard_events_size#88 ← keyboard_events_size#4 +Coalesced [617] keyboard_events_size#87 ← keyboard_events_size#13 +Coalesced [618] keyboard_events_size#89 ← keyboard_events_size#19 +Coalesced [626] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#1 +Coalesced (already) [627] keyboard_events_size#92 ← keyboard_events_size#30 +Coalesced [656] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [657] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [658] keyboard_events_size#90 ← keyboard_events_size#13 +Coalesced [659] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#11 +Coalesced [660] keyboard_events_size#94 ← keyboard_events_size#30 +Coalesced [670] keyboard_events_size#98 ← keyboard_events_size#2 +Coalesced [676] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#15 +Coalesced [677] keyboard_events_size#91 ← keyboard_events_size#29 +Coalesced [678] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [679] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#15 +Coalesced (already) [680] keyboard_events_size#93 ← keyboard_events_size#29 +Coalesced [684] keyboard_events_size#97 ← keyboard_events_size#1 +Coalesced (already) [685] keyboard_events_size#96 ← keyboard_events_size#10 +Coalesced (already) [686] keyboard_events_size#95 ← keyboard_events_size#10 +Coalesced [716] play_init::b#3 ← play_init::b#1 +Coalesced [717] play_init::j#3 ← play_init::j#1 +Coalesced [718] play_init::pli#3 ← play_init::pli#1 +Coalesced [719] play_init::idx#3 ← play_init::idx#1 +Coalesced [744] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [745] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [769] render_init::i#3 ← render_init::i#1 +Coalesced [770] render_init::li_1#3 ← render_init::li_1#1 +Coalesced [771] render_init::li_2#3 ← render_init::li_2#1 +Coalesced [773] render_screen_original::screen#11 ← render_screen_original::screen#9 +Coalesced [775] render_screen_original::screen#13 ← render_screen_original::screen#8 +Coalesced [776] render_screen_original::cols#10 ← render_screen_original::cols#7 +Coalesced [784] render_screen_original::oscr#8 ← render_screen_original::oscr#4 +Coalesced [785] render_screen_original::screen#15 ← render_screen_original::screen#2 +Coalesced [786] render_screen_original::ocols#8 ← render_screen_original::ocols#4 +Coalesced [787] render_screen_original::cols#12 ← render_screen_original::cols#1 +Coalesced [788] render_screen_original::x#8 ← render_screen_original::x#1 +Coalesced [798] render_screen_original::screen#17 ← render_screen_original::screen#3 +Coalesced [799] render_screen_original::cols#14 ← render_screen_original::cols#2 +Coalesced [800] render_screen_original::x#10 ← render_screen_original::x#2 +Coalesced [811] render_screen_original::screen#12 ← render_screen_original::screen#10 +Coalesced [812] render_screen_original::cols#9 ← render_screen_original::cols#3 +Coalesced [813] render_screen_original::oscr#7 ← render_screen_original::oscr#1 +Coalesced [814] render_screen_original::ocols#7 ← render_screen_original::ocols#1 +Coalesced [815] render_screen_original::y#7 ← render_screen_original::y#1 +Coalesced [816] render_screen_original::screen#18 ← render_screen_original::screen#10 +Coalesced [817] render_screen_original::cols#15 ← render_screen_original::cols#3 +Coalesced [818] render_screen_original::x#11 ← render_screen_original::x#3 +Coalesced (already) [819] render_screen_original::oscr#9 ← render_screen_original::oscr#1 +Coalesced [820] render_screen_original::screen#16 ← render_screen_original::screen#3 +Coalesced (already) [821] render_screen_original::ocols#9 ← render_screen_original::ocols#1 +Coalesced [822] render_screen_original::cols#13 ← render_screen_original::cols#2 +Coalesced [823] render_screen_original::x#9 ← render_screen_original::x#2 +Coalesced (already) [824] render_screen_original::screen#14 ← render_screen_original::screen#2 +Coalesced (already) [825] render_screen_original::cols#11 ← render_screen_original::cols#1 +Coalesced [826] render_screen_original::x#7 ← render_screen_original::x#1 +Coalesced [853] irq_raster_next#27 ← irq_raster_next#3 +Coalesced [862] irq_raster_next#26 ← irq_raster_next#2 +Coalesced [867] irq_raster_next#25 ← irq_raster_next#1 +Coalesced down to 95 phi equivalence classes Culled Empty Block (label) main::@44 Culled Empty Block (label) render_bcd::@3 Culled Empty Block (label) render_next::@13 @@ -9936,7 +9933,7 @@ main::@15: scope:[main] from main::@14 main::@16: scope:[main] from main::@15 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 [36] call render_next - [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) to:main::@1 main::@1: scope:[main] from main::@16 main::@24 main::@6 [38] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@24/(byte) level_bcd#17 ) @@ -9954,7 +9951,7 @@ main::@1: scope:[main] from main::@16 main::@24 main::@6 [38] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@16/(byte) current_piece_char#5 main::@24/(byte) current_piece_char#16 ) [38] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@16/(byte*~) current_piece#98 main::@24/(byte*) current_piece#15 ) [38] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@16/(byte) current_movedown_slow#1 main::@24/(byte) current_movedown_slow#21 ) - [38] (byte) render_screen_render#18 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@24/(byte) render_screen_render#11 ) + [38] (byte) render_screen_render#18 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@24/(byte) render_screen_render#11 ) [38] (byte) render_screen_show#16 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@24/(byte) render_screen_show#13 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 @@ -10017,8 +10014,8 @@ main::@24: scope:[main] from main::@23 [69] call render_screen_swap to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@24 - [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 - [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 + [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 + [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap [72] return @@ -10088,7 +10085,7 @@ render_bcd::@return: scope:[render_bcd] from render_bcd::@1 to:@return render_next: scope:[render_next] from main::@16 main::@22 [107] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#84 main::@22/(byte~) next_piece_idx#85 ) - [107] (byte) render_screen_render#15 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@22/(byte~) render_screen_render#68 ) + [107] (byte) render_screen_render#15 ← phi( main::@16/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@22/(byte~) render_screen_render#68 ) [108] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@1 to:render_next::@2 render_next::@2: scope:[render_next] from render_next @@ -10096,9 +10093,9 @@ render_next::@2: scope:[render_next] from render_next to:render_next::@1 render_next::@1: scope:[render_next] from render_next render_next::@2 [110] (byte*) render_next::screen_next_area#11 ← phi( render_next/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next::@2/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 ) - [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [112] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) - [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) + [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) to:render_next::@3 render_next::@3: scope:[render_next] from render_next::@1 render_next::@8 [114] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) @@ -10136,22 +10133,22 @@ render_moving: scope:[render_moving] from main::@15 main::@21 [128] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#108 main::@21/(byte~) current_piece_char#109 ) [128] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#120 main::@21/(byte*~) current_piece_gfx#121 ) [128] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#130 main::@21/(byte~) current_xpos#131 ) - [128] (byte) render_screen_render#33 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@21/(byte~) render_screen_render#69 ) + [128] (byte) render_screen_render#33 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) $20 main::@21/(byte~) render_screen_render#69 ) [128] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#106 main::@21/(byte~) current_ypos#107 ) - [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 [130] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) [130] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) - [130] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) - [131] if((byte) render_moving::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 + [130] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 ) + [131] if((byte) render_moving::ypos#2>=(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 [133] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 ) - [134] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [134] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 [135] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 [136] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 to:render_moving::@return @@ -10159,898 +10156,900 @@ render_moving::@return: scope:[render_moving] from render_moving::@3 [137] return to:@return render_moving::@2: scope:[render_moving] from render_moving::@1 - [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 - [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) - [140] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 + [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 + [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) + [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [141] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) - [141] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [141] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) - [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) - [143] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 - [144] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 + [142] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) + [142] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [142] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 ) + [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) + [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 + [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 to:render_moving::@6 render_moving::@6: scope:[render_moving] from render_moving::@4 - [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 + [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6 - [146] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [147] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [148] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 + [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 to:render_moving::@3 render_playfield: scope:[render_playfield] from main::@14 main::@7 - [149] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#70 main::@14/(byte/signed byte/word/signed word/dword/signed dword) $40 ) + [150] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#70 main::@14/(byte/signed byte/word/signed word/dword/signed dword) $20 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [150] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [150] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 - [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [151] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [151] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 + [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [154] (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 ) - [154] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [154] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [156] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [157] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [158] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [159] 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 + [155] (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 ) + [155] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [155] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [160] 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 - [160] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [161] 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 + [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [162] 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 - [162] return + [163] return to:@return play_movement: scope:[play_movement] from main::@4 - [163] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 - [164] call play_move_down - [165] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [165] call play_move_down + [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:play_movement::@2 play_movement::@2: scope:[play_movement] from play_movement - [166] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 - [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 + [167] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 + [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 to:play_movement::@return play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@4 - [168] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) - [168] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) - [168] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) - [168] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) - [169] return + [169] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 ) + [169] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 ) + [169] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 ) + [169] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 ) + [170] return to:@return play_movement::@1: scope:[play_movement] from play_movement::@2 - [170] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 - [171] call play_move_leftright - [172] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [171] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [172] call play_move_leftright + [173] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:play_movement::@3 play_movement::@3: scope:[play_movement] from play_movement::@1 - [173] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 - [175] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 - [176] call play_move_rotate - [177] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [174] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [176] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [177] call play_move_rotate + [178] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:play_movement::@4 play_movement::@4: scope:[play_movement] from play_movement::@3 - [178] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + [179] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 to:play_movement::@return play_move_rotate: scope:[play_move_rotate] from play_movement::@3 - [180] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate - [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [182] 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::@4 play_move_rotate::@5 play_move_rotate::@6 - [182] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) - [182] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) - [182] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [183] return + [183] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 ) + [183] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 ) + [183] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [184] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@4 - [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 - [185] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f + [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 + [186] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f to:play_move_rotate::@3 play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [186] (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 ) - [187] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 - [188] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 - [189] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 - [191] call play_collision - [192] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + [187] (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 ) + [188] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 + [189] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 + [190] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 + [192] call play_collision + [193] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@3 - [193] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - [194] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [194] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + [195] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@5 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@6 - [195] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 - [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 + [196] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 - [198] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f + [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 + [199] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f to:play_move_rotate::@3 play_collision: scope:[play_collision] from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current - [199] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) - [199] (byte) play_collision::ypos#5 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) - [199] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [199] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#100 play_move_leftright::@1/(byte*~) current_piece#101 play_move_leftright::@3/(byte*~) current_piece#102 play_move_rotate::@3/(byte*~) current_piece#103 play_spawn_current/(byte*~) current_piece#104 ) - [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 - [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [200] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 ) + [200] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 ) + [200] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [200] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#100 play_move_leftright::@1/(byte*~) current_piece#101 play_move_leftright::@3/(byte*~) current_piece#102 play_move_rotate::@3/(byte*~) current_piece#103 play_spawn_current/(byte*~) current_piece#104 ) + [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@9 [202] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@9/(byte) play_collision::l#1 ) [202] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@9/(byte~) play_collision::i#11 ) - [202] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@9/(byte) play_collision::ypos2#1 ) - [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [204] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 + [202] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 ) + [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) + [205] (byte~) play_collision::xp#9 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@10 - [205] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@10/(byte) play_collision::c#1 ) - [205] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@10/(byte) play_collision::col#1 ) - [205] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#13 ) - [206] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [206] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@10/(byte) play_collision::c#1 ) + [206] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#9 play_collision::@10/(byte) play_collision::xp#1 ) + [206] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#13 ) + [207] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@7 play_collision::@7: scope:[play_collision] from play_collision::@2 - [208] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [209] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8 - [209] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) - [210] return + [210] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 ) + [211] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@7 - [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 - [212] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 + [213] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [213] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [215] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [216] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [217] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 + [216] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 + [217] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [218] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@3 - [218] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [219] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [220] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 + [219] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 + [220] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [221] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 to:play_collision::@return play_collision::@9: scope:[play_collision] from play_collision::@8 - [221] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@10: scope:[play_collision] from play_collision::@3 - [222] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [223] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from play_movement::@1 - [223] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [224] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@2 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright - [224] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [225] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@3 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@2 - [225] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [226] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 - [227] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 - [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 - [229] call play_collision - [230] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + [226] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [227] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 + [228] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 + [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 + [230] call play_collision + [231] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@3 - [231] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - [232] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [232] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [233] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@4 play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@7 - [233] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 + [234] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7 - [234] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) - [234] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [235] return + [235] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 ) + [235] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [236] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [236] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [237] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 - [238] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 - [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 - [240] call play_collision - [241] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + [237] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [238] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 + [239] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 + [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 + [241] call play_collision + [242] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@1 - [242] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [243] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [243] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [244] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@5 play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@6 - [244] (byte) current_xpos#8 ← -- (byte) current_xpos#22 + [245] (byte) current_xpos#8 ← -- (byte) current_xpos#22 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from play_movement - [245] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 - [246] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [247] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down - [247] phi() + [248] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@4 - [248] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [249] call keyboard_event_pressed - [250] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [249] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [250] call keyboard_event_pressed + [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@1 - [251] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [252] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [252] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [253] 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::@5 play_move_down::@5: scope:[play_move_down] from play_move_down::@12 - [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@6 play_move_down::@6: scope:[play_move_down] from play_move_down::@5 - [254] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [255] (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::@12 play_move_down::@5 play_move_down::@6 - [255] (byte) play_move_down::movedown#7 ← phi( play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) - [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 + [256] (byte) play_move_down::movedown#7 ← phi( play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 ) + [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@2 - [257] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@3 play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@7 - [258] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) - [259] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [259] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 ) + [260] 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::@8 play_move_down::@8: scope:[play_move_down] from play_move_down::@3 - [260] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [261] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 - [262] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 - [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 - [264] call play_collision - [265] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + [261] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [262] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 + [263] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 + [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 + [265] call play_collision + [266] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@8 - [266] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [267] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 + [267] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [268] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@13 - [268] phi() - [269] call play_lock_current + [269] phi() + [270] call play_lock_current to:play_move_down::@14 play_move_down::@14: scope:[play_move_down] from play_move_down::@9 - [270] phi() - [271] call play_remove_lines - [272] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 + [271] phi() + [272] call play_remove_lines + [273] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 to:play_move_down::@15 play_move_down::@15: scope:[play_move_down] from play_move_down::@14 - [273] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [274] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [275] call play_update_score + [274] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [275] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [276] call play_update_score to:play_move_down::@16 play_move_down::@16: scope:[play_move_down] from play_move_down::@15 - [276] phi() - [277] call play_spawn_current - [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + [277] phi() + [278] call play_spawn_current + [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@10 play_move_down::@16 - [279] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@16/(byte) play_spawn_current::piece_idx#2 ) - [279] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@16/(byte) game_over#52 ) - [279] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#124 play_move_down::@16/(byte) current_xpos#103 ) - [279] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#114 play_move_down::@16/(byte*) current_piece_gfx#74 ) - [279] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [279] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@16/(byte) current_piece_char#5 ) - [279] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@16/(byte*~) current_piece#106 ) - [279] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@16/(byte) level_bcd#19 ) - [279] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@16/(byte) current_movedown_slow#23 ) - [279] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@16/(byte) level#19 ) - [279] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@16/(dword) score_bcd#16 ) - [279] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@16/(word) lines_bcd#17 ) - [279] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@16/(byte) current_ypos#6 ) + [280] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@16/(byte) play_spawn_current::piece_idx#2 ) + [280] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@16/(byte) game_over#52 ) + [280] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#124 play_move_down::@16/(byte) current_xpos#103 ) + [280] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#114 play_move_down::@16/(byte*) current_piece_gfx#74 ) + [280] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [280] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@16/(byte) current_piece_char#5 ) + [280] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@16/(byte*~) current_piece#106 ) + [280] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@16/(byte) level_bcd#19 ) + [280] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@16/(byte) current_movedown_slow#23 ) + [280] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@16/(byte) level#19 ) + [280] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@16/(dword) score_bcd#16 ) + [280] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@16/(word) lines_bcd#17 ) + [280] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@16/(byte) current_ypos#6 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@11 play_move_down::@3 - [280] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) - [280] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) - [280] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#124 ) - [280] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#114 ) - [280] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) - [280] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) - [280] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) - [280] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) - [280] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) - [280] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) - [280] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) - [280] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) - [280] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#100 ) - [280] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) - [280] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_down::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [281] return + [281] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 ) + [281] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 ) + [281] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#124 ) + [281] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#114 ) + [281] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 ) + [281] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 ) + [281] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 ) + [281] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 ) + [281] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 ) + [281] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 ) + [281] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 ) + [281] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 ) + [281] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#100 ) + [281] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@3/(byte) current_movedown_counter#12 ) + [281] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_down::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [282] return to:@return play_move_down::@10: scope:[play_move_down] from play_move_down::@13 - [282] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 + [283] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 to:play_move_down::@11 play_spawn_current: scope:[play_spawn_current] from main::@12 main::@13 play_move_down::@16 - [283] (byte) game_over#65 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) - [283] (byte) next_piece_idx#17 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) - [284] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 - [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) - [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) - [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) - [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) - [290] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 - [291] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 - [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) - [293] call play_collision - [294] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + [284] (byte) game_over#65 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 ) + [284] (byte) next_piece_idx#17 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 ) + [285] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 + [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) + [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) + [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) + [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) + [291] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 + [292] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 + [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) + [294] call play_collision + [295] (byte) play_collision::return#10 ← (byte) play_collision::return#15 to:play_spawn_current::@4 play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current - [295] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - [296] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 + [296] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + [297] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@5 - [297] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [298] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) to:play_spawn_current::@2 play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@3 - [298] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) - [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 + [299] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 ) + [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@2 - [300] return + [301] return to:@return play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@2 - [301] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [302] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::sid_rnd1 - [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@2 play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@4 - [303] phi() + [304] phi() to:play_spawn_current::@1 play_update_score: scope:[play_update_score] from play_move_down::@15 - [304] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return + [305] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return to:play_update_score::@1 play_update_score::@1: scope:[play_update_score] from play_update_score - [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 - [306] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 - [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) + [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [307] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 + [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) asm { sed } - [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 - [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 + [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 - [314] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 - [315] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 + [315] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 + [316] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@2 play_update_score::@2: scope:[play_update_score] from play_update_score::@1 - [316] phi() - [317] call play_increase_level + [317] phi() + [318] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@2 - [318] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#64 ) - [318] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#69 ) - [318] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) - [318] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#30 play_update_score::@2/(dword) score_bcd#30 ) - [318] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#30 play_update_score::@2/(word) lines_bcd#30 ) - [319] return + [319] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#64 ) + [319] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#69 ) + [319] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 ) + [319] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#30 play_update_score::@2/(dword) score_bcd#30 ) + [319] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#30 play_update_score::@2/(word) lines_bcd#30 ) + [320] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@2 - [320] (byte) level#21 ← ++ (byte) level#10 - [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 + [321] (byte) level#21 ← ++ (byte) level#10 + [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level - [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) + [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) to:play_increase_level::@1 play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@3 - [323] (byte) current_movedown_slow#69 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) - [324] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 - [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f - [326] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 + [324] (byte) current_movedown_slow#69 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@3/(byte) current_movedown_slow#10 ) + [325] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f + [327] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@1 - [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 + [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4 - [328] (byte) level_bcd#64 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) + [329] (byte) level_bcd#64 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5 - [330] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) - [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) - [333] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [334] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 + [331] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@5/(byte) play_increase_level::b#1 ) + [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) + [334] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [335] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 to:play_increase_level::@6 play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@5 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@6 - [336] return + [337] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@14 - [337] phi() + [338] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@6 - [338] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) - [338] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) - [338] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [338] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) + [339] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 ) + [339] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 ) + [339] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [339] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [339] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [339] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [339] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [339] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [340] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [341] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [342] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 + [340] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [340] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [340] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [340] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [341] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [342] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [343] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@9 - [343] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [344] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [345] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [346] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [347] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 + [344] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [345] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [346] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [347] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [348] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@3 - [348] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 + [349] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 - [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [350] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [351] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@6 play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@5 - [351] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) - [351] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) - [352] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [353] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 + [352] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 ) + [352] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 ) + [353] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [354] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@7 play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@6 play_remove_lines::@8 - [354] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) - [355] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 + [355] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 ) + [356] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@7 - [356] return + [357] return to:@return play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7 - [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [358] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [359] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@7 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@2 - [359] phi() + [360] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@9 - [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#100 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@6 - [361] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) - [361] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) - [361] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@6/(byte) play_lock_current::ypos2#1 ) - [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [363] (byte) play_lock_current::col#0 ← (byte) current_xpos#124 + [362] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte) play_lock_current::l#1 ) + [362] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 ) + [362] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 ) + [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) + [365] (byte) play_lock_current::xp#0 ← (byte) current_xpos#124 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@7 - [364] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) - [364] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@7/(byte) play_lock_current::col#1 ) - [364] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) - [365] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [366] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::c#1 ) + [366] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 ) + [366] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 ) + [367] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 + [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [368] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [369] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [370] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [370] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 + [371] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [372] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [371] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [372] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [373] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 + [373] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 + [374] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [375] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [374] return + [376] return to:@return play_lock_current::@6: scope:[play_lock_current] from play_lock_current::@5 - [375] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [377] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@3 - [376] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [378] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1 - [377] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [378] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [379] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [380] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [381] (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) + [379] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [383] (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 - [382] return + [384] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@18 - [383] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [385] 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::@1 keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get - [384] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [387] (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::@1 - [386] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) - [386] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) - [387] return + [388] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 ) + [388] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 ) + [389] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@17 - [388] phi() + [390] phi() to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [389] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) - [389] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) - [389] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) - [390] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [391] call keyboard_matrix_read - [392] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [391] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 ) + [391] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) + [391] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) + [392] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [393] call keyboard_matrix_read + [394] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@7 - [393] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [394] 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::@9 + [395] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [396] 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::@9 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@19 - [395] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [397] (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::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [396] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) - [396] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) - [397] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 + [398] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 ) + [398] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) + [399] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@8 - [399] phi() - [400] call keyboard_event_pressed - [401] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [401] phi() + [402] call keyboard_event_pressed + [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@17 - [402] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - [403] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 + [404] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + [405] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 to:keyboard_event_scan::@18 keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [404] phi() + [406] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@20 - [405] phi() - [406] call keyboard_event_pressed - [407] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [407] phi() + [408] call keyboard_event_pressed + [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - [409] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 + [410] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + [411] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 to:keyboard_event_scan::@4 keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@21 - [410] phi() + [412] phi() to:keyboard_event_scan::@2 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@4 - [411] phi() - [412] call keyboard_event_pressed - [413] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [413] phi() + [414] call keyboard_event_pressed + [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@2 - [414] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - [415] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 + [416] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + [417] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@22 - [416] phi() + [418] phi() to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@5 - [417] phi() - [418] call keyboard_event_pressed - [419] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [419] phi() + [420] call keyboard_event_pressed + [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [420] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - [421] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [422] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + [423] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@6 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@23 - [422] phi() + [424] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@6 - [423] return + [425] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [424] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [424] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) - [424] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [425] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [427] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [426] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [426] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) + [426] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [429] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@12 keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 + [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@12 - [429] (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) - [430] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [431] (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) + [432] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@14 keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [431] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [432] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [433] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [434] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [433] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) - [434] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [435] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [436] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 + [435] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [436] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [437] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [438] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [437] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [439] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@8 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@13 - [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 - [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 - [440] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 + [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 + [442] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@10 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7 - [441] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [443] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [444] (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 - [443] return + [445] return to:@return render_show: scope:[render_show] from main::@3 - [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [445] phi() + [447] phi() to:render_show::@1 render_show::@1: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [446] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [447] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) - [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) - [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [448] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [449] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) + [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) + [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@1 - [451] return + [453] return to:@return render_show::toD0181: scope:[render_show] from render_show - [452] phi() + [454] phi() to:render_show::@1 play_init: scope:[play_init] from main::@11 - [453] phi() + [455] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [454] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) - [454] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [454] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) - [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 - [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [460] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [461] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 + [456] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [456] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [456] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 + [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [462] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [463] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@1 - [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 - [464] (byte) play_init::b#2 ← phi( play_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@3/(byte) play_init::b#1 ) - [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) - [467] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [468] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 + [466] (byte) play_init::b#2 ← phi( play_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@3/(byte) play_init::b#1 ) + [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) + [469] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [470] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@3 - [469] return + [471] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@10 asm { sei } - [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f - [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f + [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [481] return + [483] return to:@return sprites_init: scope:[sprites_init] from main::@9 - [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f - [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f + [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [486] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [486] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 - [491] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [492] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [488] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [488] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 + [493] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [494] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [493] return + [495] return to:@return render_init: scope:[render_init] from main::@8 - [494] phi() + [496] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [496] phi() + [498] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) - [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) - [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [504] call render_screen_original + [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) + [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) + [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [506] call render_screen_original to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 - [505] phi() - [506] call render_screen_original + [507] phi() + [508] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@3 - [507] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) - [507] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) - [507] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 - [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 - [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [514] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [515] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [509] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) + [509] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 ) + [509] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 + [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 + [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [516] return + [518] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@2 render_init::@3 - [517] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [519] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5 - [518] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) - [518] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) - [518] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) - [518] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) - [518] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) + [520] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@5/(byte) render_screen_original::y#1 ) + [520] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 ) + [520] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 ) + [520] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 ) + [520] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [519] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [519] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [519] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [521] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [523] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [524] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [525] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [521] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [521] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [521] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [527] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [526] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [526] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [526] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [526] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [526] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [528] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [529] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [531] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [532] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [533] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [534] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 + [528] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [528] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [528] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [528] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [528] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [536] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [535] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [535] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [535] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [537] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [539] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [540] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [541] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 + [537] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [537] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [537] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [543] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 to:render_screen_original::@5 render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4 - [542] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [543] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 + [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [545] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5 - [544] return + [546] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff - [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff + [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [547] return + [549] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [549] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [550] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [551] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 - [552] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 - [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 - [554] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [555] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 + [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [554] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [555] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [556] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [557] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 + [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [559] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [560] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [563] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [565] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 + [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 + [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 - [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 + [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [571] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [573] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [574] return + [576] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 - [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 + [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [581] phi() + [583] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [583] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [584] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [587] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 @@ -11185,34 +11184,34 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece#28 6.0 (byte*~) current_piece#98 4.0 (byte) current_piece_char -(byte) current_piece_char#10 187.38888888888889 +(byte) current_piece_char#10 183.9818181818182 (byte~) current_piece_char#108 4.0 (byte~) current_piece_char#109 22.0 (byte) current_piece_char#16 3.4324324324324325 (byte) current_piece_char#29 6.0 (byte) current_piece_char#5 0.25806451612903225 -(byte) current_piece_char#68 50.699999999999996 +(byte) current_piece_char#68 48.285714285714285 (byte*) current_piece_gfx -(byte*) current_piece_gfx#114 187.38888888888889 +(byte*) current_piece_gfx#114 183.9818181818182 (byte*~) current_piece_gfx#120 2.0 (byte*~) current_piece_gfx#121 11.0 (byte*) current_piece_gfx#18 6.047619047619047 (byte*) current_piece_gfx#20 0.37037037037037035 (byte*) current_piece_gfx#21 1.3333333333333333 (byte*) current_piece_gfx#35 6.0 -(byte*) current_piece_gfx#64 50.699999999999996 +(byte*) current_piece_gfx#64 48.285714285714285 (byte*) current_piece_gfx#7 4.0 (byte*) current_piece_gfx#74 0.26666666666666666 (byte) current_xpos (byte) current_xpos#103 0.3448275862068966 -(byte) current_xpos#124 20.75925925925926 +(byte) current_xpos#124 20.38181818181818 (byte~) current_xpos#130 1.3333333333333333 (byte~) current_xpos#131 7.333333333333333 (byte) current_xpos#19 6.047619047619047 (byte) current_xpos#22 0.7999999999999999 (byte) current_xpos#26 0.4666666666666666 (byte) current_xpos#43 6.0 -(byte) current_xpos#59 5.7 +(byte) current_xpos#59 5.428571428571429 (byte) current_xpos#6 4.0 (byte) current_xpos#8 4.0 (byte) current_ypos @@ -11349,23 +11348,20 @@ VARIABLE REGISTER WEIGHTS (byte~) next_piece_idx#84 4.0 (byte~) next_piece_idx#85 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 20002.0 +(byte) play_collision::$14 2002.0 +(byte~) play_collision::$5 20002.0 (byte) play_collision::c (byte) play_collision::c#1 10001.0 (byte) play_collision::c#2 2222.4444444444443 -(byte) play_collision::col -(byte) play_collision::col#1 5000.5 -(byte) play_collision::col#2 6375.75 -(byte~) play_collision::col#9 2002.0 (byte) play_collision::i (byte) play_collision::i#1 1615.6153846153845 (byte~) play_collision::i#11 2002.0 (byte~) play_collision::i#13 20002.0 (byte) play_collision::i#2 15502.0 -(byte) play_collision::i#3 667.3333333333334 +(byte) play_collision::i#3 500.5 (byte) play_collision::l (byte) play_collision::l#1 1001.0 -(byte) play_collision::l#6 125.125 +(byte) play_collision::l#6 117.76470588235294 (byte) play_collision::orientation (byte) play_collision::orientation#0 2.0 (byte) play_collision::orientation#1 2.0 @@ -11383,6 +11379,10 @@ VARIABLE REGISTER WEIGHTS (byte) play_collision::return#13 4.0 (byte) play_collision::return#14 4.0 (byte) play_collision::return#15 1.4285714285714284 +(byte) play_collision::xp +(byte) play_collision::xp#1 5000.5 +(byte) play_collision::xp#2 6375.75 +(byte~) play_collision::xp#9 2002.0 (byte) play_collision::xpos (byte) play_collision::xpos#0 1.3333333333333333 (byte) play_collision::xpos#1 1.0 @@ -11390,31 +11390,28 @@ VARIABLE REGISTER WEIGHTS (byte) play_collision::xpos#3 1.0 (byte) play_collision::xpos#4 1.3333333333333333 (byte) play_collision::xpos#6 45.95454545454545 +(byte) play_collision::yp +(byte) play_collision::yp#0 6.0 +(byte) play_collision::yp#1 500.5 +(byte) play_collision::yp#2 812.875 (byte) play_collision::ypos (byte) play_collision::ypos#0 1.0 (byte) play_collision::ypos#1 1.3333333333333333 (byte) play_collision::ypos#2 1.3333333333333333 (byte) play_collision::ypos#3 1.3333333333333333 (byte) play_collision::ypos#4 2.0 -(byte) play_collision::ypos#5 6.0 -(byte) play_collision::ypos2 -(byte) play_collision::ypos2#0 4.0 -(byte) play_collision::ypos2#1 500.5 -(byte) play_collision::ypos2#2 867.0666666666667 (void()) play_increase_level() (byte~) play_increase_level::$1 4.0 +(byte) play_increase_level::$5 4004.0 (byte) play_increase_level::b (byte) play_increase_level::b#1 1501.5 (byte) play_increase_level::b#2 1001.0 -(byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 4004.0 (void()) play_init() -(byte~) play_init::$2 22.0 +(byte) play_init::$4 22.0 +(byte) play_init::$5 33.0 (byte) play_init::b (byte) play_init::b#1 16.5 (byte) play_init::b#2 11.0 -(byte) play_init::b4 -(byte) play_init::b4#0 33.0 (byte) play_init::idx (byte) play_init::idx#1 7.333333333333333 (byte) play_init::idx#2 6.6000000000000005 @@ -11425,28 +11422,29 @@ VARIABLE REGISTER WEIGHTS (byte*) play_init::pli#1 5.5 (byte*) play_init::pli#2 8.25 (void()) play_lock_current() +(byte) play_lock_current::$4 2002.0 (byte) play_lock_current::c (byte) play_lock_current::c#1 10001.0 (byte) play_lock_current::c#2 4000.4 -(byte) play_lock_current::col -(byte) play_lock_current::col#0 2002.0 -(byte) play_lock_current::col#1 5000.5 -(byte) play_lock_current::col#2 7751.0 (byte) play_lock_current::i (byte) play_lock_current::i#1 2333.6666666666665 (byte) play_lock_current::i#2 15502.0 -(byte) play_lock_current::i#3 667.3333333333334 +(byte) play_lock_current::i#3 500.5 (byte~) play_lock_current::i#7 2002.0 (byte~) play_lock_current::i#9 20002.0 (byte) play_lock_current::l (byte) play_lock_current::l#1 1001.0 -(byte) play_lock_current::l#6 166.83333333333334 +(byte) play_lock_current::l#6 154.0 (byte*) play_lock_current::playfield_line (byte*) play_lock_current::playfield_line#0 1100.2 -(byte) play_lock_current::ypos2 -(byte) play_lock_current::ypos2#0 4.0 -(byte) play_lock_current::ypos2#1 500.5 -(byte) play_lock_current::ypos2#2 273.1818181818182 +(byte) play_lock_current::xp +(byte) play_lock_current::xp#0 2002.0 +(byte) play_lock_current::xp#1 5000.5 +(byte) play_lock_current::xp#2 7751.0 +(byte) play_lock_current::yp +(byte) play_lock_current::yp#0 4.0 +(byte) play_lock_current::yp#1 500.5 +(byte) play_lock_current::yp#2 250.41666666666669 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 4.0 (byte~) play_move_down::$2 4.0 @@ -11527,8 +11525,8 @@ VARIABLE REGISTER WEIGHTS (byte) play_remove_lines::y#1 1501.5 (byte) play_remove_lines::y#8 133.46666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$0 0.06666666666666667 -(byte~) play_spawn_current::$2 4.0 +(byte~) play_spawn_current::$1 4.0 +(byte) play_spawn_current::$7 0.06666666666666667 (byte) play_spawn_current::current_piece_idx (byte) play_spawn_current::current_piece_idx#0 2.0 (byte) play_spawn_current::piece_idx @@ -11539,7 +11537,7 @@ VARIABLE REGISTER WEIGHTS (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 4.0 (byte~) play_update_score::$4 4.0 -(byte~) play_update_score::$5 4.0 +(byte) play_update_score::$9 4.0 (dword) play_update_score::add_bcd (dword) play_update_score::add_bcd#0 1.3333333333333333 (byte) play_update_score::lines_after @@ -11582,8 +11580,8 @@ VARIABLE REGISTER WEIGHTS (byte*) render_bcd::screen_pos#2 4.0 (byte*) render_bcd::screen_pos#3 2.0 (void()) render_init() -(byte~) render_init::$13 22.0 -(byte~) render_init::$14 22.0 +(byte) render_init::$14 22.0 +(byte) render_init::$15 22.0 (byte) render_init::i (byte) render_init::i#1 16.5 (byte) render_init::i#2 6.285714285714286 @@ -11602,7 +11600,8 @@ VARIABLE REGISTER WEIGHTS (byte*) render_init::vicSelectGfxBank1_toDd001_gfx (byte) render_init::vicSelectGfxBank1_toDd001_return (void()) render_moving() -(byte~) render_moving::$2 202.0 +(byte~) render_moving::$1 202.0 +(byte) render_moving::$6 202.0 (byte) render_moving::c (byte) render_moving::c#1 1501.5 (byte) render_moving::c#2 333.6666666666667 @@ -11611,24 +11610,24 @@ VARIABLE REGISTER WEIGHTS (byte) render_moving::i (byte) render_moving::i#1 202.0 (byte) render_moving::i#2 500.5 -(byte) render_moving::i#3 60.599999999999994 +(byte) render_moving::i#3 50.5 (byte) render_moving::i#4 1552.0 (byte) render_moving::i#8 300.75 (byte) render_moving::l (byte) render_moving::l#1 151.5 -(byte) render_moving::l#4 12.625 +(byte) render_moving::l#4 11.882352941176471 (byte*) render_moving::screen_line (byte*) render_moving::screen_line#0 110.19999999999999 (byte) render_moving::xpos (byte) render_moving::xpos#0 202.0 (byte) render_moving::xpos#1 667.3333333333334 (byte) render_moving::xpos#2 620.8 -(byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 4.0 -(byte) render_moving::ypos2#1 67.33333333333333 -(byte) render_moving::ypos2#2 27.06666666666667 +(byte) render_moving::ypos +(byte) render_moving::ypos#0 4.0 +(byte) render_moving::ypos#1 67.33333333333333 +(byte) render_moving::ypos#2 25.375 (void()) render_next() -(byte~) render_next::$4 1.0 +(byte) render_next::$9 1.0 (byte) render_next::c (byte) render_next::c#1 1501.5 (byte) render_next::c#2 286.0 @@ -11653,7 +11652,7 @@ VARIABLE REGISTER WEIGHTS (byte*) render_next::screen_next_area#5 684.1666666666667 (void()) render_playfield() (byte~) render_playfield::$2 202.0 -(byte~) render_playfield::$3 202.0 +(byte) render_playfield::$6 202.0 (byte) render_playfield::c (byte) render_playfield::c#1 1501.5 (byte) render_playfield::c#2 500.5 @@ -11717,7 +11716,7 @@ VARIABLE REGISTER WEIGHTS (byte) render_screen_render#15 13.0 (byte) render_screen_render#18 0.923076923076923 (byte) render_screen_render#22 8.615384615384615 -(byte) render_screen_render#33 5.6 +(byte) render_screen_render#33 5.333333333333333 (byte~) render_screen_render#68 11.0 (byte~) render_screen_render#69 5.5 (byte~) render_screen_render#70 22.0 @@ -11819,7 +11818,7 @@ Initial phi equivalence classes [ current_xpos#59 current_xpos#130 current_xpos#131 ] [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -[ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +[ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] [ render_moving::l#4 render_moving::l#1 ] [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] @@ -11834,12 +11833,11 @@ Initial phi equivalence classes [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -[ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -[ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +[ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] [ play_collision::l#6 play_collision::l#1 ] [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -[ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +[ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] [ play_collision::c#2 play_collision::c#1 ] [ play_collision::return#15 ] [ play_move_leftright::return#2 ] @@ -11865,10 +11863,10 @@ Initial phi equivalence classes [ play_remove_lines::x#2 play_remove_lines::x#1 ] [ play_remove_lines::full#4 play_remove_lines::full#2 ] [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -[ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +[ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] [ play_lock_current::l#6 play_lock_current::l#1 ] [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -[ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +[ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] [ play_lock_current::c#2 play_lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] @@ -11912,14 +11910,15 @@ Added variable render_bcd::$5 to zero page equivalence class [ render_bcd::$5 ] Added variable render_bcd::$6 to zero page equivalence class [ render_bcd::$6 ] Added variable render_bcd::$3 to zero page equivalence class [ render_bcd::$3 ] Added variable render_bcd::$4 to zero page equivalence class [ render_bcd::$4 ] -Added variable render_next::$4 to zero page equivalence class [ render_next::$4 ] +Added variable render_next::$9 to zero page equivalence class [ render_next::$9 ] Added variable render_next::next_piece_char#0 to zero page equivalence class [ render_next::next_piece_char#0 ] Added variable render_next::cell#0 to zero page equivalence class [ render_next::cell#0 ] -Added variable render_moving::$2 to zero page equivalence class [ render_moving::$2 ] +Added variable render_moving::$1 to zero page equivalence class [ render_moving::$1 ] +Added variable render_moving::$6 to zero page equivalence class [ render_moving::$6 ] Added variable render_moving::screen_line#0 to zero page equivalence class [ render_moving::screen_line#0 ] Added variable render_moving::current_cell#0 to zero page equivalence class [ render_moving::current_cell#0 ] Added variable render_playfield::$2 to zero page equivalence class [ render_playfield::$2 ] -Added variable render_playfield::$3 to zero page equivalence class [ render_playfield::$3 ] +Added variable render_playfield::$6 to zero page equivalence class [ render_playfield::$6 ] Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] Added variable play_move_down::return#0 to zero page equivalence class [ play_move_down::return#0 ] Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] @@ -11934,9 +11933,10 @@ Added variable play_collision::return#14 to zero page equivalence class [ play_c Added variable play_move_rotate::$2 to zero page equivalence class [ play_move_rotate::$2 ] Added variable play_move_rotate::$7 to zero page equivalence class [ play_move_rotate::$7 ] Added variable play_collision::piece_gfx#0 to zero page equivalence class [ play_collision::piece_gfx#0 ] +Added variable play_collision::$14 to zero page equivalence class [ play_collision::$14 ] Added variable play_collision::playfield_line#0 to zero page equivalence class [ play_collision::playfield_line#0 ] Added variable play_collision::i#1 to zero page equivalence class [ play_collision::i#1 ] -Added variable play_collision::$7 to zero page equivalence class [ play_collision::$7 ] +Added variable play_collision::$5 to zero page equivalence class [ play_collision::$5 ] Added variable play_collision::return#13 to zero page equivalence class [ play_collision::return#13 ] Added variable play_move_leftright::$4 to zero page equivalence class [ play_move_leftright::$4 ] Added variable play_collision::return#1 to zero page equivalence class [ play_collision::return#1 ] @@ -11949,19 +11949,20 @@ Added variable play_remove_lines::return#0 to zero page equivalence class [ play Added variable play_move_down::removed#0 to zero page equivalence class [ play_move_down::removed#0 ] Added variable play_update_score::removed#0 to zero page equivalence class [ play_update_score::removed#0 ] Added variable play_spawn_current::current_piece_idx#0 to zero page equivalence class [ play_spawn_current::current_piece_idx#0 ] -Added variable play_spawn_current::$0 to zero page equivalence class [ play_spawn_current::$0 ] +Added variable play_spawn_current::$7 to zero page equivalence class [ play_spawn_current::$7 ] Added variable play_collision::return#10 to zero page equivalence class [ play_collision::return#10 ] -Added variable play_spawn_current::$2 to zero page equivalence class [ play_spawn_current::$2 ] +Added variable play_spawn_current::$1 to zero page equivalence class [ play_spawn_current::$1 ] Added variable play_spawn_current::sid_rnd1_return#0 to zero page equivalence class [ play_spawn_current::sid_rnd1_return#0 ] Added variable play_update_score::$2 to zero page equivalence class [ play_update_score::$2 ] Added variable play_update_score::lines_before#0 to zero page equivalence class [ play_update_score::lines_before#0 ] -Added variable play_update_score::$4 to zero page equivalence class [ play_update_score::$4 ] +Added variable play_update_score::$9 to zero page equivalence class [ play_update_score::$9 ] Added variable play_update_score::add_bcd#0 to zero page equivalence class [ play_update_score::add_bcd#0 ] -Added variable play_update_score::$5 to zero page equivalence class [ play_update_score::$5 ] +Added variable play_update_score::$4 to zero page equivalence class [ play_update_score::$4 ] Added variable play_update_score::lines_after#0 to zero page equivalence class [ play_update_score::lines_after#0 ] Added variable play_increase_level::$1 to zero page equivalence class [ play_increase_level::$1 ] -Added variable play_increase_level::b4#0 to zero page equivalence class [ play_increase_level::b4#0 ] +Added variable play_increase_level::$5 to zero page equivalence class [ play_increase_level::$5 ] Added variable play_remove_lines::c#0 to zero page equivalence class [ play_remove_lines::c#0 ] +Added variable play_lock_current::$4 to zero page equivalence class [ play_lock_current::$4 ] Added variable play_lock_current::playfield_line#0 to zero page equivalence class [ play_lock_current::playfield_line#0 ] Added variable play_lock_current::i#1 to zero page equivalence class [ play_lock_current::i#1 ] Added variable keyboard_event_pressed::$0 to zero page equivalence class [ keyboard_event_pressed::$0 ] @@ -11984,11 +11985,11 @@ Added variable keyboard_event_scan::$16 to zero page equivalence class [ keyboar Added variable keyboard_event_scan::event_type#0 to zero page equivalence class [ keyboard_event_scan::event_type#0 ] Added variable keyboard_event_scan::$23 to zero page equivalence class [ keyboard_event_scan::$23 ] Added variable keyboard_matrix_read::return#0 to zero page equivalence class [ keyboard_matrix_read::return#0 ] -Added variable play_init::$2 to zero page equivalence class [ play_init::$2 ] -Added variable play_init::b4#0 to zero page equivalence class [ play_init::b4#0 ] +Added variable play_init::$4 to zero page equivalence class [ play_init::$4 ] +Added variable play_init::$5 to zero page equivalence class [ play_init::$5 ] Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init::s2#0 ] -Added variable render_init::$13 to zero page equivalence class [ render_init::$13 ] Added variable render_init::$14 to zero page equivalence class [ render_init::$14 ] +Added variable render_init::$15 to zero page equivalence class [ render_init::$15 ] Added variable sprites_irq::ypos#0 to zero page equivalence class [ sprites_irq::ypos#0 ] Added variable sprites_irq::$0 to zero page equivalence class [ sprites_irq::$0 ] Added variable sprites_irq::ptr#0 to zero page equivalence class [ sprites_irq::ptr#0 ] @@ -12017,7 +12018,7 @@ Complete equivalence classes [ current_xpos#59 current_xpos#130 current_xpos#131 ] [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -[ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +[ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] [ render_moving::l#4 render_moving::l#1 ] [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] @@ -12032,12 +12033,11 @@ Complete equivalence classes [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -[ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -[ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +[ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] [ play_collision::l#6 play_collision::l#1 ] [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -[ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +[ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] [ play_collision::c#2 play_collision::c#1 ] [ play_collision::return#15 ] [ play_move_leftright::return#2 ] @@ -12063,10 +12063,10 @@ Complete equivalence classes [ play_remove_lines::x#2 play_remove_lines::x#1 ] [ play_remove_lines::full#4 play_remove_lines::full#2 ] [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -[ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +[ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] [ play_lock_current::l#6 play_lock_current::l#1 ] [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -[ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +[ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] [ play_lock_current::c#2 play_lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] @@ -12105,14 +12105,15 @@ Complete equivalence classes [ render_bcd::$6 ] [ render_bcd::$3 ] [ render_bcd::$4 ] -[ render_next::$4 ] +[ render_next::$9 ] [ render_next::next_piece_char#0 ] [ render_next::cell#0 ] -[ render_moving::$2 ] +[ render_moving::$1 ] +[ render_moving::$6 ] [ render_moving::screen_line#0 ] [ render_moving::current_cell#0 ] [ render_playfield::$2 ] -[ render_playfield::$3 ] +[ render_playfield::$6 ] [ play_move_down::key_event#0 ] [ play_move_down::return#0 ] [ play_move_leftright::key_event#0 ] @@ -12127,9 +12128,10 @@ Complete equivalence classes [ play_move_rotate::$2 ] [ play_move_rotate::$7 ] [ play_collision::piece_gfx#0 ] +[ play_collision::$14 ] [ play_collision::playfield_line#0 ] [ play_collision::i#1 ] -[ play_collision::$7 ] +[ play_collision::$5 ] [ play_collision::return#13 ] [ play_move_leftright::$4 ] [ play_collision::return#1 ] @@ -12142,19 +12144,20 @@ Complete equivalence classes [ play_move_down::removed#0 ] [ play_update_score::removed#0 ] [ play_spawn_current::current_piece_idx#0 ] -[ play_spawn_current::$0 ] +[ play_spawn_current::$7 ] [ play_collision::return#10 ] -[ play_spawn_current::$2 ] +[ play_spawn_current::$1 ] [ play_spawn_current::sid_rnd1_return#0 ] [ play_update_score::$2 ] [ play_update_score::lines_before#0 ] -[ play_update_score::$4 ] +[ play_update_score::$9 ] [ play_update_score::add_bcd#0 ] -[ play_update_score::$5 ] +[ play_update_score::$4 ] [ play_update_score::lines_after#0 ] [ play_increase_level::$1 ] -[ play_increase_level::b4#0 ] +[ play_increase_level::$5 ] [ play_remove_lines::c#0 ] +[ play_lock_current::$4 ] [ play_lock_current::playfield_line#0 ] [ play_lock_current::i#1 ] [ keyboard_event_pressed::$0 ] @@ -12177,11 +12180,11 @@ Complete equivalence classes [ keyboard_event_scan::event_type#0 ] [ keyboard_event_scan::$23 ] [ keyboard_matrix_read::return#0 ] -[ play_init::$2 ] -[ play_init::b4#0 ] +[ play_init::$4 ] +[ play_init::$5 ] [ sprites_init::s2#0 ] -[ render_init::$13 ] [ render_init::$14 ] +[ render_init::$15 ] [ sprites_irq::ypos#0 ] [ sprites_irq::$0 ] [ sprites_irq::ptr#0 ] @@ -12209,7 +12212,7 @@ Allocated zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] Allocated zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] Allocated zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] Allocated zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -Allocated zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +Allocated zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Allocated zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] Allocated zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] Allocated zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] @@ -12224,87 +12227,87 @@ Allocated zp ZP_BYTE:41 [ play_move_rotate::return#2 ] Allocated zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Allocated zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] Allocated zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Allocated zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] -Allocated zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Allocated zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Allocated zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] -Allocated zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated zp ZP_BYTE:52 [ play_collision::c#2 play_collision::c#1 ] -Allocated zp ZP_BYTE:53 [ play_collision::return#15 ] -Allocated zp ZP_BYTE:54 [ play_move_leftright::return#2 ] -Allocated zp ZP_BYTE:55 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -Allocated zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] -Allocated zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] -Allocated zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] -Allocated zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] -Allocated zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Allocated zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] -Allocated zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] -Allocated zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Allocated zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Allocated zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] -Allocated zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Allocated zp ZP_BYTE:73 [ play_move_down::return#3 ] -Allocated zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Allocated zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Allocated zp ZP_BYTE:76 [ play_increase_level::b#2 play_increase_level::b#1 ] -Allocated zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Allocated zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Allocated zp ZP_BYTE:79 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Allocated zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Allocated zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Allocated zp ZP_BYTE:82 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -Allocated zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Allocated zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] -Allocated zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Allocated zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Allocated zp ZP_BYTE:87 [ play_lock_current::c#2 play_lock_current::c#1 ] -Allocated zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] -Allocated zp ZP_BYTE:89 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Allocated zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] -Allocated zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Allocated zp ZP_BYTE:94 [ render_show::d018val#3 ] -Allocated zp ZP_BYTE:95 [ play_init::j#2 play_init::j#1 ] -Allocated zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ] -Allocated zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] -Allocated zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] -Allocated zp ZP_BYTE:100 [ sprites_init::s#2 sprites_init::s#1 ] -Allocated zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Allocated zp ZP_BYTE:102 [ render_init::i#2 render_init::i#1 ] -Allocated zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ] -Allocated zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] -Allocated zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Allocated zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] -Allocated zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] -Allocated zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -Allocated zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -Allocated zp ZP_BYTE:116 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Allocated zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] -Allocated zp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] -Allocated zp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] -Allocated zp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Allocated zp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Allocated zp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] -Allocated zp ZP_BYTE:123 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:124 [ main::key_event#0 ] -Allocated zp ZP_BYTE:125 [ play_movement::key_event#0 ] -Allocated zp ZP_BYTE:126 [ play_movement::return#3 ] -Allocated zp ZP_BYTE:127 [ main::render#1 ] -Allocated zp ZP_BYTE:128 [ render_bcd::$5 ] -Allocated zp ZP_BYTE:129 [ render_bcd::$6 ] -Allocated zp ZP_BYTE:130 [ render_bcd::$3 ] -Allocated zp ZP_BYTE:131 [ render_bcd::$4 ] -Allocated zp ZP_BYTE:132 [ render_next::$4 ] -Allocated zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] -Allocated zp ZP_BYTE:134 [ render_next::cell#0 ] -Allocated zp ZP_BYTE:135 [ render_moving::$2 ] +Allocated zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Allocated zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] +Allocated zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] +Allocated zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Allocated zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] +Allocated zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] +Allocated zp ZP_BYTE:52 [ play_collision::return#15 ] +Allocated zp ZP_BYTE:53 [ play_move_leftright::return#2 ] +Allocated zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] +Allocated zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Allocated zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] +Allocated zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] +Allocated zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] +Allocated zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Allocated zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Allocated zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] +Allocated zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Allocated zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Allocated zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] +Allocated zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Allocated zp ZP_BYTE:72 [ play_move_down::return#3 ] +Allocated zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Allocated zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Allocated zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] +Allocated zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Allocated zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Allocated zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Allocated zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Allocated zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Allocated zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] +Allocated zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Allocated zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] +Allocated zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Allocated zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Allocated zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] +Allocated zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Allocated zp ZP_BYTE:88 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Allocated zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] +Allocated zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Allocated zp ZP_BYTE:93 [ render_show::d018val#3 ] +Allocated zp ZP_BYTE:94 [ play_init::j#2 play_init::j#1 ] +Allocated zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] +Allocated zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] +Allocated zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] +Allocated zp ZP_BYTE:99 [ sprites_init::s#2 sprites_init::s#1 ] +Allocated zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Allocated zp ZP_BYTE:101 [ render_init::i#2 render_init::i#1 ] +Allocated zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] +Allocated zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] +Allocated zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Allocated zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] +Allocated zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] +Allocated zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +Allocated zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +Allocated zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Allocated zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Allocated zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] +Allocated zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Allocated zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Allocated zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Allocated zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Allocated zp ZP_BYTE:122 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:123 [ main::key_event#0 ] +Allocated zp ZP_BYTE:124 [ play_movement::key_event#0 ] +Allocated zp ZP_BYTE:125 [ play_movement::return#3 ] +Allocated zp ZP_BYTE:126 [ main::render#1 ] +Allocated zp ZP_BYTE:127 [ render_bcd::$5 ] +Allocated zp ZP_BYTE:128 [ render_bcd::$6 ] +Allocated zp ZP_BYTE:129 [ render_bcd::$3 ] +Allocated zp ZP_BYTE:130 [ render_bcd::$4 ] +Allocated zp ZP_BYTE:131 [ render_next::$9 ] +Allocated zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] +Allocated zp ZP_BYTE:133 [ render_next::cell#0 ] +Allocated zp ZP_BYTE:134 [ render_moving::$1 ] +Allocated zp ZP_BYTE:135 [ render_moving::$6 ] Allocated zp ZP_WORD:136 [ render_moving::screen_line#0 ] Allocated zp ZP_BYTE:138 [ render_moving::current_cell#0 ] Allocated zp ZP_BYTE:139 [ render_playfield::$2 ] -Allocated zp ZP_BYTE:140 [ render_playfield::$3 ] +Allocated zp ZP_BYTE:140 [ render_playfield::$6 ] Allocated zp ZP_BYTE:141 [ play_move_down::key_event#0 ] Allocated zp ZP_BYTE:142 [ play_move_down::return#0 ] Allocated zp ZP_BYTE:143 [ play_move_leftright::key_event#0 ] @@ -12319,68 +12322,70 @@ Allocated zp ZP_BYTE:151 [ play_collision::return#14 ] Allocated zp ZP_BYTE:152 [ play_move_rotate::$2 ] Allocated zp ZP_BYTE:153 [ play_move_rotate::$7 ] Allocated zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] -Allocated zp ZP_WORD:156 [ play_collision::playfield_line#0 ] -Allocated zp ZP_BYTE:158 [ play_collision::i#1 ] -Allocated zp ZP_BYTE:159 [ play_collision::$7 ] -Allocated zp ZP_BYTE:160 [ play_collision::return#13 ] -Allocated zp ZP_BYTE:161 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:162 [ play_collision::return#1 ] -Allocated zp ZP_BYTE:163 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:164 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:165 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:166 [ play_collision::return#0 ] -Allocated zp ZP_BYTE:167 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:168 [ play_remove_lines::return#0 ] -Allocated zp ZP_BYTE:169 [ play_move_down::removed#0 ] -Allocated zp ZP_BYTE:170 [ play_update_score::removed#0 ] -Allocated zp ZP_BYTE:171 [ play_spawn_current::current_piece_idx#0 ] -Allocated zp ZP_BYTE:172 [ play_spawn_current::$0 ] -Allocated zp ZP_BYTE:173 [ play_collision::return#10 ] -Allocated zp ZP_BYTE:174 [ play_spawn_current::$2 ] -Allocated zp ZP_BYTE:175 [ play_spawn_current::sid_rnd1_return#0 ] -Allocated zp ZP_BYTE:176 [ play_update_score::$2 ] -Allocated zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] -Allocated zp ZP_BYTE:178 [ play_update_score::$4 ] -Allocated zp ZP_DWORD:179 [ play_update_score::add_bcd#0 ] -Allocated zp ZP_BYTE:183 [ play_update_score::$5 ] -Allocated zp ZP_BYTE:184 [ play_update_score::lines_after#0 ] -Allocated zp ZP_BYTE:185 [ play_increase_level::$1 ] -Allocated zp ZP_BYTE:186 [ play_increase_level::b4#0 ] -Allocated zp ZP_BYTE:187 [ play_remove_lines::c#0 ] -Allocated zp ZP_WORD:188 [ play_lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:190 [ play_lock_current::i#1 ] -Allocated zp ZP_BYTE:191 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:193 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:194 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:195 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:196 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:198 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:199 [ keyboard_event_scan::$0 ] -Allocated zp ZP_BYTE:200 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:201 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:202 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:203 [ keyboard_event_scan::$6 ] -Allocated zp ZP_BYTE:204 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:205 [ keyboard_event_scan::$9 ] -Allocated zp ZP_BYTE:206 [ keyboard_event_scan::$15 ] -Allocated zp ZP_BYTE:207 [ keyboard_event_scan::$16 ] -Allocated zp ZP_BYTE:208 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:209 [ keyboard_event_scan::$23 ] -Allocated zp ZP_BYTE:210 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:211 [ play_init::$2 ] -Allocated zp ZP_BYTE:212 [ play_init::b4#0 ] -Allocated zp ZP_BYTE:213 [ sprites_init::s2#0 ] -Allocated zp ZP_BYTE:214 [ render_init::$13 ] -Allocated zp ZP_BYTE:215 [ render_init::$14 ] -Allocated zp ZP_BYTE:216 [ sprites_irq::ypos#0 ] -Allocated zp ZP_BYTE:217 [ sprites_irq::$0 ] -Allocated zp ZP_BYTE:218 [ sprites_irq::ptr#0 ] -Allocated zp ZP_BYTE:219 [ sprites_irq::ptr#3 ] -Allocated zp ZP_BYTE:220 [ sprites_irq::ptr#4 ] -Allocated zp ZP_BYTE:221 [ sprites_irq::ptr#1 ] -Allocated zp ZP_BYTE:222 [ sprites_irq::ptr#2 ] +Allocated zp ZP_BYTE:156 [ play_collision::$14 ] +Allocated zp ZP_WORD:157 [ play_collision::playfield_line#0 ] +Allocated zp ZP_BYTE:159 [ play_collision::i#1 ] +Allocated zp ZP_BYTE:160 [ play_collision::$5 ] +Allocated zp ZP_BYTE:161 [ play_collision::return#13 ] +Allocated zp ZP_BYTE:162 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:163 [ play_collision::return#1 ] +Allocated zp ZP_BYTE:164 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:165 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:166 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:167 [ play_collision::return#0 ] +Allocated zp ZP_BYTE:168 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:169 [ play_remove_lines::return#0 ] +Allocated zp ZP_BYTE:170 [ play_move_down::removed#0 ] +Allocated zp ZP_BYTE:171 [ play_update_score::removed#0 ] +Allocated zp ZP_BYTE:172 [ play_spawn_current::current_piece_idx#0 ] +Allocated zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Allocated zp ZP_BYTE:174 [ play_collision::return#10 ] +Allocated zp ZP_BYTE:175 [ play_spawn_current::$1 ] +Allocated zp ZP_BYTE:176 [ play_spawn_current::sid_rnd1_return#0 ] +Allocated zp ZP_BYTE:177 [ play_update_score::$2 ] +Allocated zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Allocated zp ZP_BYTE:179 [ play_update_score::$9 ] +Allocated zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] +Allocated zp ZP_BYTE:184 [ play_update_score::$4 ] +Allocated zp ZP_BYTE:185 [ play_update_score::lines_after#0 ] +Allocated zp ZP_BYTE:186 [ play_increase_level::$1 ] +Allocated zp ZP_BYTE:187 [ play_increase_level::$5 ] +Allocated zp ZP_BYTE:188 [ play_remove_lines::c#0 ] +Allocated zp ZP_BYTE:189 [ play_lock_current::$4 ] +Allocated zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:192 [ play_lock_current::i#1 ] +Allocated zp ZP_BYTE:193 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:195 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:197 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:198 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:200 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] +Allocated zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] +Allocated zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] +Allocated zp ZP_BYTE:208 [ keyboard_event_scan::$15 ] +Allocated zp ZP_BYTE:209 [ keyboard_event_scan::$16 ] +Allocated zp ZP_BYTE:210 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:211 [ keyboard_event_scan::$23 ] +Allocated zp ZP_BYTE:212 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:213 [ play_init::$4 ] +Allocated zp ZP_BYTE:214 [ play_init::$5 ] +Allocated zp ZP_BYTE:215 [ sprites_init::s2#0 ] +Allocated zp ZP_BYTE:216 [ render_init::$14 ] +Allocated zp ZP_BYTE:217 [ render_init::$15 ] +Allocated zp ZP_BYTE:218 [ sprites_irq::ypos#0 ] +Allocated zp ZP_BYTE:219 [ sprites_irq::$0 ] +Allocated zp ZP_BYTE:220 [ sprites_irq::ptr#0 ] +Allocated zp ZP_BYTE:221 [ sprites_irq::ptr#3 ] +Allocated zp ZP_BYTE:222 [ sprites_irq::ptr#4 ] +Allocated zp ZP_BYTE:223 [ sprites_irq::ptr#1 ] +Allocated zp ZP_BYTE:224 [ sprites_irq::ptr#2 ] INITIAL ASM //SEG0 File Comments @@ -12506,31 +12511,31 @@ INITIAL ASM // The line of the first IRQ .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES/$40 - .label keyboard_events_size = $5d - .label render_screen_showing = $76 - .label irq_raster_next = $77 - .label irq_sprite_ypos = $78 - .label irq_sprite_ptr = $79 - .label irq_cnt = $7a - .label current_movedown_slow = $40 - .label current_ypos = $38 - .label current_xpos = $48 - .label current_orientation = $45 - .label current_piece_gfx = $46 - .label current_piece_char = $44 - .label level_bcd = $41 - .label current_piece = $42 - .label game_over = $4b - .label next_piece_idx = $4a - .label level = $3f + .label keyboard_events_size = $5c + .label render_screen_showing = $75 + .label irq_raster_next = $76 + .label irq_sprite_ypos = $77 + .label irq_sprite_ptr = $78 + .label irq_cnt = $79 + .label current_movedown_slow = $3f + .label current_ypos = $37 + .label current_xpos = $47 + .label current_orientation = $44 + .label current_piece_gfx = $45 + .label current_piece_char = $43 + .label level_bcd = $40 + .label current_piece = $41 + .label game_over = $4a + .label next_piece_idx = $49 + .label level = $3e .label render_screen_render = 3 .label render_screen_show = 2 .label current_ypos_13 = $17 .label render_screen_render_15 = $f .label next_piece_idx_12 = $10 .label current_movedown_counter = 4 - .label lines_bcd = $39 - .label score_bcd = $3b + .label lines_bcd = $38 + .label score_bcd = $3a .label current_piece_17 = $2b .label render_screen_render_22 = $22 .label render_screen_render_33 = $18 @@ -12561,7 +12566,7 @@ bbegin: //SEG4 @1 b1: //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -12615,8 +12620,8 @@ bend_from_b4: bend: //SEG25 main main: { - .label key_event = $7c - .label render = $7f + .label key_event = $7b + .label render = $7e //SEG26 [15] call sid_rnd_init jsr sid_rnd_init jmp b8 @@ -12625,7 +12630,7 @@ main: { //SEG28 asm { sei } sei //SEG29 [17] call render_init - //SEG30 [494] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [496] phi from main::@8 to render_init [phi:main::@8->render_init] render_init_from_b8: jsr render_init //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -12648,7 +12653,7 @@ main: { //SEG38 main::@11 b11: //SEG39 [23] call play_init - //SEG40 [453] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG40 [455] phi from main::@11 to play_init [phi:main::@11->play_init] play_init_from_b11: jsr play_init //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] @@ -12657,12 +12662,12 @@ main: { //SEG42 main::@12 b12: //SEG43 [25] call play_spawn_current - //SEG44 [283] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG44 [284] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] play_spawn_current_from_b12: - //SEG45 [283] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG45 [284] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [283] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [284] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current @@ -12672,10 +12677,10 @@ main: { //SEG48 main::@13 b13: //SEG49 [27] call play_spawn_current - //SEG50 [283] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG50 [284] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] play_spawn_current_from_b13: - //SEG51 [283] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [283] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG51 [284] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG52 [284] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: @@ -12683,10 +12688,10 @@ main: { //SEG54 main::@14 b14: //SEG55 [29] call render_playfield - //SEG56 [149] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG56 [150] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] render_playfield_from_b14: - //SEG57 [149] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@14->render_playfield#0] -- vbuz1=vbuc1 - lda #$40 + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@14->render_playfield#0] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render_22 jsr render_playfield jmp b15 @@ -12712,8 +12717,8 @@ main: { //SEG65 [128] phi (byte) current_piece_char#68 = (byte~) current_piece_char#108 [phi:main::@15->render_moving#0] -- register_copy //SEG66 [128] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#120 [phi:main::@15->render_moving#1] -- register_copy //SEG67 [128] phi (byte) current_xpos#59 = (byte~) current_xpos#130 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 - lda #$40 + //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render_33 //SEG69 [128] phi (byte) current_ypos#13 = (byte~) current_ypos#106 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving @@ -12727,12 +12732,12 @@ main: { //SEG73 [107] phi from main::@16 to render_next [phi:main::@16->render_next] render_next_from_b16: //SEG74 [107] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->render_next#1] -- vbuz1=vbuc1 - lda #$40 + //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->render_next#1] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render_15 jsr render_next - //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y @@ -12774,8 +12779,8 @@ main: { //SEG90 [38] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@16->main::@1#12] -- register_copy //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#98 [phi:main::@16->main::@1#13] -- register_copy //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@16->main::@1#14] -- register_copy - //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 - lda #$40 + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@16->main::@1#16] -- vbuz1=vbuc1 lda #0 @@ -12822,7 +12827,7 @@ main: { //SEG118 main::@17 b17: //SEG119 [43] call keyboard_event_scan - //SEG120 [388] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] + //SEG120 [390] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] keyboard_event_scan_from_b17: jsr keyboard_event_scan //SEG121 [44] phi from main::@17 to main::@18 [phi:main::@17->main::@18] @@ -12881,9 +12886,9 @@ main: { lda render_screen_render sta render_screen_render_70 //SEG140 [56] call render_playfield - //SEG141 [149] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG141 [150] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] render_playfield_from_b7: - //SEG142 [149] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield jmp b21 //SEG143 main::@21 @@ -12967,12 +12972,12 @@ main: { //SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_render sta render_screen_render - //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_show sta render_screen_show jmp breturn @@ -13178,10 +13183,10 @@ render_score: { // render_bcd(byte* zeropage(7) screen, word zeropage(9) offset, byte zeropage($c) bcd, byte zeropage($b) only_low) render_bcd: { .const ZERO_CHAR = $35 - .label _3 = $82 - .label _4 = $83 - .label _5 = $80 - .label _6 = $81 + .label _3 = $81 + .label _4 = $82 + .label _5 = $7f + .label _6 = $80 .label screen = 7 .label bcd = $c .label screen_pos = $d @@ -13251,9 +13256,9 @@ render_bcd: { // Render the next tetromino in the "next" area render_next: { .const next_area_offset = $28*$c+$18+4 - .label _4 = $84 - .label next_piece_char = $85 - .label cell = $86 + .label _9 = $83 + .label next_piece_char = $84 + .label cell = $85 .label next_piece_gfx = $12 .label screen_next_area = $14 .label c = $16 @@ -13285,16 +13290,16 @@ render_next: { jmp b1 //SEG280 render_next::@1 b1: - //SEG281 [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG281 [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda next_piece_idx_12 asl - sta _4 + sta _9 //SEG282 [112] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuz2 ldy next_piece_idx_12 lda PIECES_NEXT_CHARS,y sta next_piece_char - //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _4 + //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _9 lda PIECES,y sta next_piece_gfx lda PIECES+1,y @@ -13399,18 +13404,18 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label _2 = $87 - .label ypos2 = $1d + .label _1 = $86 + .label _6 = $87 + .label ypos = $1d .label screen_line = $88 .label xpos = $20 .label i = $1f .label l = $1e .label current_cell = $8a .label c = $21 - //SEG320 [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG320 [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos_13 - asl - sta ypos2 + sta ypos //SEG321 [130] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: //SEG322 [130] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 @@ -13419,19 +13424,19 @@ render_moving: { //SEG323 [130] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG324 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG324 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 //SEG325 [130] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: //SEG326 [130] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy //SEG327 [130] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG328 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 //SEG329 render_moving::@1 b1: - //SEG330 [131] if((byte) render_moving::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 - lda ypos2 - cmp #2+1 + //SEG330 [131] if((byte) render_moving::ypos#2>=(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos + cmp #1+1 bcs b2 jmp b7 //SEG331 render_moving::@7 @@ -13447,11 +13452,8 @@ render_moving: { jmp b3 //SEG335 render_moving::@3 b3: - //SEG336 [134] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 + //SEG336 [134] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + inc ypos //SEG337 [135] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l //SEG338 [136] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 @@ -13465,241 +13467,245 @@ render_moving: { rts //SEG341 render_moving::@2 b2: - //SEG342 [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG342 [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_33 clc - adc ypos2 - sta _2 - //SEG343 [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _2 + adc ypos + sta _1 + //SEG343 [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda _1 + asl + sta _6 + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _6 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [140] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG345 [141] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG346 [141] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG347 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG349 [141] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG350 [141] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG353 render_moving::@4 + //SEG354 render_moving::@4 b4: - //SEG354 [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx_64),y sta current_cell - //SEG355 [143] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [144] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b5 jmp b6 - //SEG357 render_moving::@6 + //SEG358 render_moving::@6 b6: - //SEG358 [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y jmp b5 - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [146] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [147] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG362 [148] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b4_from_b5 jmp b3_from_b5 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label _2 = $8b - .label _3 = $8c + .label _6 = $8c .label screen_line = $25 .label i = $24 .label c = $27 .label l = $23 - //SEG364 [150] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG365 [150] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [150] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG367 [150] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG368 [150] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [150] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG370 render_playfield::@1 + //SEG371 render_playfield::@1 b1: - //SEG371 [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda l - asl - sta _2 - //SEG372 [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_22 clc - adc _2 - sta _3 - //SEG373 [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _3 + adc l + sta _2 + //SEG373 [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda _2 + asl + sta _6 + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _6 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [154] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG375 [154] 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 + //SEG376 [155] 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 - //SEG376 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG378 [154] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG379 [154] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG382 render_playfield::@2 + //SEG383 render_playfield::@2 b2: - //SEG383 [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [156] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [157] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [158] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [159] 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 + //SEG388 [160] 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 #PLAYFIELD_COLS-1+1 cmp c bne b2_from_b2 jmp b3 - //SEG388 render_playfield::@3 + //SEG389 render_playfield::@3 b3: - //SEG389 [160] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [161] 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 + //SEG391 [162] 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 #PLAYFIELD_LINES-1+1 cmp l bne b1_from_b3 jmp breturn - //SEG391 render_playfield::@return + //SEG392 render_playfield::@return breturn: - //SEG392 [162] return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) -// play_movement(byte zeropage($7d) key_event) +// play_movement(byte zeropage($7c) key_event) play_movement: { .label _3 = $91 .label _4 = $95 .label render = $28 .label render_2 = $92 .label return = $28 - .label key_event = $7d - .label return_3 = $7e - //SEG394 [163] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + .label key_event = $7c + .label return_3 = $7d + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG395 [164] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [165] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG397 [166] (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 b2 - //SEG397 play_movement::@2 + //SEG398 play_movement::@2 b2: - //SEG398 [166] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + //SEG399 [167] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 lda play_move_down.return sta render - //SEG399 [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG400 [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG400 [168] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG401 [169] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] breturn_from_b2: breturn_from_b4: - //SEG401 [168] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG402 [168] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG403 [168] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG404 [168] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG402 [169] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG403 [169] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG404 [169] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG405 [169] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy jmp breturn - //SEG405 play_movement::@return + //SEG406 play_movement::@return breturn: - //SEG406 [169] return + //SEG407 [170] return rts - //SEG407 play_movement::@1 + //SEG408 play_movement::@1 b1: - //SEG408 [170] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG409 [171] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG409 [171] call play_move_leftright + //SEG410 [172] call play_move_leftright jsr play_move_leftright - //SEG410 [172] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + //SEG411 [173] (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 b3 - //SEG411 play_movement::@3 + //SEG412 play_movement::@3 b3: - //SEG412 [173] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + //SEG413 [174] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 lda play_move_leftright.return sta _3 - //SEG413 [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 + //SEG414 [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 lda render clc adc _3 sta render_2 - //SEG414 [175] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG415 [176] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG415 [176] call play_move_rotate + //SEG416 [177] call play_move_rotate jsr play_move_rotate - //SEG416 [177] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + //SEG417 [178] (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 b4 - //SEG417 play_movement::@4 + //SEG418 play_movement::@4 b4: - //SEG418 [178] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + //SEG419 [179] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 lda play_move_rotate.return sta _4 - //SEG419 [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG420 [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc adc _4 sta return jmp breturn_from_b4 } -//SEG420 play_move_rotate +//SEG421 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte zeropage($93) key_event) @@ -13711,89 +13717,89 @@ play_move_rotate: { .label return = $94 .label orientation = $2a .label return_2 = $29 - //SEG421 [180] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG422 [181] 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_Z cmp key_event beq b1 jmp b4 - //SEG422 play_move_rotate::@4 + //SEG423 play_move_rotate::@4 b4: - //SEG423 [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG424 [182] 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_X cmp key_event beq b2 - //SEG424 [182] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG425 [183] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b4: breturn_from_b6: - //SEG425 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG426 [182] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG427 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG426 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG427 [183] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG428 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG428 play_move_rotate::@return + //SEG429 play_move_rotate::@return breturn: - //SEG429 [183] return + //SEG430 [184] return rts - //SEG430 play_move_rotate::@2 + //SEG431 play_move_rotate::@2 b2: - //SEG431 [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuz1=vbuz2_plus_vbuc1 + //SEG432 [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuz1=vbuz2_plus_vbuc1 lax current_orientation axs #-[$10] stx _5 - //SEG432 [185] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuz2_band_vbuc1 + //SEG433 [186] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _5 sta orientation - //SEG433 [186] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG434 [187] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] b3_from_b1: b3_from_b2: - //SEG434 [186] 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::@3#0] -- register_copy + //SEG435 [187] 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::@3#0] -- register_copy jmp b3 - //SEG435 play_move_rotate::@3 + //SEG436 play_move_rotate::@3 b3: - //SEG436 [187] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG437 [188] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG437 [188] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG438 [189] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG439 [190] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG439 [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG440 [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_103 lda current_piece+1 sta current_piece_103+1 - //SEG440 [191] call play_collision - //SEG441 [199] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG441 [192] call play_collision + //SEG442 [200] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] play_collision_from_b3: - //SEG442 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG443 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG444 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG445 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG443 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG444 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG445 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG446 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG446 [192] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG447 [193] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_14 jmp b6 - //SEG447 play_move_rotate::@6 + //SEG448 play_move_rotate::@6 b6: - //SEG448 [193] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG449 [194] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta _2 - //SEG449 [194] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG450 [195] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _2 bne breturn_from_b6 jmp b5 - //SEG450 play_move_rotate::@5 + //SEG451 play_move_rotate::@5 b5: - //SEG451 [195] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG452 [196] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG452 [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG453 [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -13801,53 +13807,54 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG453 [182] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG454 [183] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] breturn_from_b5: - //SEG454 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG455 [182] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG456 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG455 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG456 [183] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG457 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG457 play_move_rotate::@1 + //SEG458 play_move_rotate::@1 b1: - //SEG458 [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuz1=vbuz2_minus_vbuc1 + //SEG459 [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuz1=vbuz2_minus_vbuc1 lax current_orientation axs #$10 stx _7 - //SEG459 [198] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuz2_band_vbuc1 + //SEG460 [199] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _7 sta orientation jmp b3_from_b1 } -//SEG460 play_collision +//SEG461 play_collision // 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 -// play_collision(byte zeropage($2f) xpos, byte zeropage($2e) ypos, byte zeropage($2d) orientation) +// play_collision(byte zeropage($2e) xpos, byte zeropage($2f) ypos, byte zeropage($2d) orientation) play_collision: { - .label _7 = $9f - .label xpos = $2f - .label ypos = $2e + .label _5 = $a0 + .label _14 = $9c + .label xpos = $2e + .label ypos = $2f .label orientation = $2d - .label return = $a6 - .label return_1 = $a2 + .label return = $a7 + .label return_1 = $a3 .label piece_gfx = $9a - .label ypos2 = $30 - .label playfield_line = $9c - .label i = $9e - .label col = $33 - .label c = $34 - .label l = $31 - .label return_10 = $ad - .label return_13 = $a0 + .label yp = $2f + .label playfield_line = $9d + .label i = $9f + .label xp = $32 + .label c = $33 + .label l = $30 + .label return_10 = $ae + .label return_13 = $a1 .label return_14 = $97 - .label i_2 = $32 - .label return_15 = $35 - .label i_3 = $32 - .label i_11 = $32 - .label i_13 = $32 - //SEG461 [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 + .label i_2 = $31 + .label return_15 = $34 + .label i_3 = $31 + .label i_11 = $31 + .label i_13 = $31 + //SEG462 [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_17 @@ -13855,10 +13862,6 @@ play_collision: { lda #0 adc current_piece_17+1 sta piece_gfx+1 - //SEG462 [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda ypos - asl - sta ypos2 //SEG463 [202] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: //SEG464 [202] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 @@ -13867,704 +13870,705 @@ play_collision: { //SEG465 [202] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG466 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG466 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 //SEG467 play_collision::@1 b1: - //SEG468 [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG468 [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda yp + asl + sta _14 + //SEG469 [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _14 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG469 [204] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG470 [205] (byte~) play_collision::xp#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos - sta col - //SEG470 [205] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + sta xp + //SEG471 [206] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG471 [205] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 + //SEG472 [206] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG472 [205] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG473 [205] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG473 [206] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG474 [206] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG474 play_collision::@2 + //SEG475 play_collision::@2 b2: - //SEG475 [206] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG476 [207] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG476 [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG477 [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b7 - //SEG477 play_collision::@7 + //SEG478 play_collision::@7 b7: - //SEG478 [208] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda ypos2 - cmp #2*PLAYFIELD_LINES + //SEG479 [209] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda yp + cmp #PLAYFIELD_LINES bcc b4 - //SEG479 [209] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG480 [210] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] breturn_from_b7: - //SEG480 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG481 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_15 jmp breturn - //SEG481 play_collision::@return + //SEG482 play_collision::@return breturn: - //SEG482 [210] return + //SEG483 [211] return rts - //SEG483 play_collision::@4 + //SEG484 play_collision::@4 b4: - //SEG484 [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG485 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 - and col - sta _7 - //SEG485 [212] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 - lda _7 + and xp + sta _5 + //SEG486 [213] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + lda _5 cmp #0 beq b5 - //SEG486 [209] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG487 [210] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG487 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG488 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_15 jmp breturn - //SEG488 play_collision::@5 + //SEG489 play_collision::@5 b5: - //SEG489 [213] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 - lda col + //SEG490 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG490 [209] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG491 [210] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG491 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG492 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_15 jmp breturn - //SEG492 play_collision::@6 + //SEG493 play_collision::@6 b6: - //SEG493 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 - ldy col + //SEG494 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG494 [209] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG495 [210] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG495 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG496 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_15 jmp breturn - //SEG496 play_collision::@3 + //SEG497 play_collision::@3 b3: - //SEG497 [215] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG498 [216] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG498 [216] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG499 [217] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG499 [217] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG500 [218] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b10 jmp b8 - //SEG500 play_collision::@8 + //SEG501 play_collision::@8 b8: - //SEG501 [218] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG502 [219] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG502 [219] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG503 [220] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG503 [220] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG504 [221] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG504 [209] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG505 [210] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG505 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG506 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_15 jmp breturn - //SEG506 play_collision::@9 + //SEG507 play_collision::@9 b9: - //SEG507 [221] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG508 [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG508 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG509 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] b1_from_b9: - //SEG509 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG510 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG511 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG510 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG511 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG512 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG512 play_collision::@10 + //SEG513 play_collision::@10 b10: - //SEG513 [222] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG514 [223] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG514 [205] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG515 [206] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] b2_from_b10: - //SEG515 [205] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG516 [205] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG517 [205] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG516 [206] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG517 [206] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG518 [206] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG518 play_move_leftright +//SEG519 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte zeropage($8f) key_event) play_move_leftright: { - .label _4 = $a1 - .label _8 = $a3 + .label _4 = $a2 + .label _8 = $a4 .label key_event = $8f .label return = $90 - .label return_2 = $36 - //SEG519 [223] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + .label return_2 = $35 + //SEG520 [224] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 // Handle keyboard events lda #KEY_COMMA cmp key_event beq b1 jmp b2 - //SEG520 play_move_leftright::@2 + //SEG521 play_move_leftright::@2 b2: - //SEG521 [224] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG522 [225] 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_DOT cmp key_event bne breturn_from_b2 jmp b3 - //SEG522 play_move_leftright::@3 + //SEG523 play_move_leftright::@3 b3: - //SEG523 [225] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG524 [226] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG524 [226] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG525 [227] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG525 [227] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG526 [228] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG526 [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG527 [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_102 lda current_piece+1 sta current_piece_102+1 - //SEG527 [229] call play_collision - //SEG528 [199] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG528 [230] call play_collision + //SEG529 [200] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] play_collision_from_b3: - //SEG529 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG530 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG531 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG532 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG530 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG531 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG532 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG533 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG533 [230] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG534 [231] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_13 jmp b7 - //SEG534 play_move_leftright::@7 + //SEG535 play_move_leftright::@7 b7: - //SEG535 [231] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + //SEG536 [232] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 lda play_collision.return_13 sta _4 - //SEG536 [232] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG537 [233] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _4 bne breturn_from_b7 jmp b4 - //SEG537 play_move_leftright::@4 + //SEG538 play_move_leftright::@4 b4: - //SEG538 [233] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG539 [234] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG539 [234] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG540 [235] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] breturn_from_b4: breturn_from_b5: - //SEG540 [234] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG541 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG541 [235] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG542 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG542 [234] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG543 [235] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] breturn_from_b2: breturn_from_b6: breturn_from_b7: - //SEG543 [234] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG544 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG544 [235] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG545 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG545 play_move_leftright::@return + //SEG546 play_move_leftright::@return breturn: - //SEG546 [235] return + //SEG547 [236] return rts - //SEG547 play_move_leftright::@1 + //SEG548 play_move_leftright::@1 b1: - //SEG548 [236] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG549 [237] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG549 [237] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG550 [238] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG550 [238] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG551 [239] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG551 [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG552 [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG552 [240] call play_collision - //SEG553 [199] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG553 [241] call play_collision + //SEG554 [200] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG554 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG555 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG556 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG557 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG555 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG556 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG557 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG558 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG558 [241] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG559 [242] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_1 jmp b6 - //SEG559 play_move_leftright::@6 + //SEG560 play_move_leftright::@6 b6: - //SEG560 [242] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG561 [243] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG561 [243] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG562 [244] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_NONE cmp _8 bne breturn_from_b6 jmp b5 - //SEG562 play_move_leftright::@5 + //SEG563 play_move_leftright::@5 b5: - //SEG563 [244] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG564 [245] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b5 } -//SEG564 play_move_down +//SEG565 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte zeropage($8d) key_event) play_move_down: { - .label _2 = $a5 - .label _12 = $a7 + .label _2 = $a6 + .label _12 = $a8 .label key_event = $8d .label return = $8e - .label movedown = $37 - .label removed = $a9 - .label return_3 = $49 - //SEG565 [245] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + .label movedown = $36 + .label removed = $aa + .label return_3 = $48 + //SEG566 [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG566 [246] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG567 [247] 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_SPACE cmp key_event bne b1_from_play_move_down - //SEG567 [247] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG568 [248] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] b4_from_play_move_down: jmp b4 - //SEG568 play_move_down::@4 + //SEG569 play_move_down::@4 b4: - //SEG569 [248] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG570 [249] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] b1_from_b4: - //SEG570 [248] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG571 [249] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG571 [248] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG572 [249] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG572 [248] 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 + //SEG573 [249] 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 - //SEG573 play_move_down::@1 + //SEG574 play_move_down::@1 b1: - //SEG574 [249] call keyboard_event_pressed - //SEG575 [377] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG575 [250] call keyboard_event_pressed + //SEG576 [379] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG576 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG577 [379] 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 - //SEG577 [250] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG578 [251] (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 b12 - //SEG578 play_move_down::@12 + //SEG579 play_move_down::@12 b12: - //SEG579 [251] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG580 [252] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG580 [252] 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 + //SEG581 [253] 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_b12 jmp b5 - //SEG581 play_move_down::@5 + //SEG582 play_move_down::@5 b5: - //SEG582 [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG583 [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b5 jmp b6 - //SEG583 play_move_down::@6 + //SEG584 play_move_down::@6 b6: - //SEG584 [254] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG585 [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG585 [255] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG586 [256] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] b2_from_b12: b2_from_b5: b2_from_b6: - //SEG586 [255] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG587 [256] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy jmp b2 - //SEG587 play_move_down::@2 + //SEG588 play_move_down::@2 b2: - //SEG588 [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG589 [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3_from_b2 jmp b7 - //SEG589 play_move_down::@7 + //SEG590 play_move_down::@7 b7: - //SEG590 [257] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG591 [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG591 [258] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG592 [259] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] b3_from_b2: b3_from_b7: - //SEG592 [258] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG593 [259] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy jmp b3 - //SEG593 play_move_down::@3 + //SEG594 play_move_down::@3 b3: - //SEG594 [259] 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 + //SEG595 [260] 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_b3 jmp b8 - //SEG595 play_move_down::@8 + //SEG596 play_move_down::@8 b8: - //SEG596 [260] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG597 [261] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG597 [261] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG598 [262] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG598 [262] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 + //SEG599 [263] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG599 [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG600 [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG600 [264] call play_collision - //SEG601 [199] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG601 [265] call play_collision + //SEG602 [200] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] play_collision_from_b8: - //SEG602 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG603 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG604 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG605 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG603 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG604 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG605 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG606 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG606 [265] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG607 [266] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return jmp b13 - //SEG607 play_move_down::@13 + //SEG608 play_move_down::@13 b13: - //SEG608 [266] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG609 [267] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG609 [267] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG610 [268] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuz1_eq_vbuc1_then_la1 lda #COLLISION_NONE cmp _12 beq b10 - //SEG610 [268] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG611 [269] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] b9_from_b13: jmp b9 - //SEG611 play_move_down::@9 + //SEG612 play_move_down::@9 b9: - //SEG612 [269] call play_lock_current + //SEG613 [270] call play_lock_current jsr play_lock_current - //SEG613 [270] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG614 [271] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] b14_from_b9: jmp b14 - //SEG614 play_move_down::@14 + //SEG615 play_move_down::@14 b14: - //SEG615 [271] call play_remove_lines - //SEG616 [337] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG616 [272] call play_remove_lines + //SEG617 [338] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] play_remove_lines_from_b14: jsr play_remove_lines - //SEG617 [272] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuz1=vbuz2 + //SEG618 [273] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuz1=vbuz2 lda play_remove_lines.removed sta play_remove_lines.return jmp b15 - //SEG618 play_move_down::@15 + //SEG619 play_move_down::@15 b15: - //SEG619 [273] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 + //SEG620 [274] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 lda play_remove_lines.return sta removed - //SEG620 [274] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 + //SEG621 [275] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 lda removed sta play_update_score.removed - //SEG621 [275] call play_update_score + //SEG622 [276] call play_update_score jsr play_update_score - //SEG622 [276] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG623 [277] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] b16_from_b15: jmp b16 - //SEG623 play_move_down::@16 + //SEG624 play_move_down::@16 b16: - //SEG624 [277] call play_spawn_current - //SEG625 [283] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG625 [278] call play_spawn_current + //SEG626 [284] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] play_spawn_current_from_b16: - //SEG626 [283] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG627 [283] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG627 [284] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG628 [284] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG628 [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG629 [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG629 [279] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] + //SEG630 [280] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] b11_from_b16: - //SEG630 [279] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy - //SEG631 [279] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy - //SEG632 [279] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy - //SEG633 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy - //SEG634 [279] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG631 [280] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy + //SEG632 [280] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy + //SEG633 [280] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy + //SEG634 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy + //SEG635 [280] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG635 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy - //SEG636 [279] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy - //SEG637 [279] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy - //SEG638 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy - //SEG639 [279] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy - //SEG640 [279] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy - //SEG641 [279] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy - //SEG642 [279] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy + //SEG636 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy + //SEG637 [280] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy + //SEG638 [280] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy + //SEG639 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy + //SEG640 [280] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy + //SEG641 [280] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy + //SEG642 [280] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy + //SEG643 [280] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy jmp b11 - //SEG643 play_move_down::@11 + //SEG644 play_move_down::@11 b11: - //SEG644 [280] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG645 [281] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] breturn_from_b11: - //SEG645 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG646 [280] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG647 [280] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG648 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG649 [280] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG650 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG651 [280] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG652 [280] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG653 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG654 [280] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG655 [280] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG656 [280] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG657 [280] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG658 [280] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG646 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG647 [281] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG648 [281] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG649 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG650 [281] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG651 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG652 [281] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG653 [281] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG654 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG655 [281] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG656 [281] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG657 [281] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG658 [281] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG659 [281] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG659 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuz1=vbuc1 + //SEG660 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG660 [280] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG661 [281] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] breturn_from_b3: - //SEG661 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG662 [280] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG663 [280] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG664 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG665 [280] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG666 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG667 [280] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG668 [280] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG669 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG670 [280] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG671 [280] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG672 [280] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG673 [280] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG674 [280] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG675 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuz1=vbuc1 + //SEG662 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG663 [281] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG664 [281] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG665 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG666 [281] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG667 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG668 [281] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG669 [281] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG670 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG671 [281] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG672 [281] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG673 [281] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG674 [281] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG675 [281] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG676 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG676 play_move_down::@return + //SEG677 play_move_down::@return breturn: - //SEG677 [281] return + //SEG678 [282] return rts - //SEG678 play_move_down::@10 + //SEG679 play_move_down::@10 b10: - //SEG679 [282] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 + //SEG680 [283] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG680 [279] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG681 [280] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] b11_from_b10: - //SEG681 [279] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG682 [279] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG683 [279] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG684 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG685 [279] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG686 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG687 [279] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG688 [279] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG689 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG690 [279] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG691 [279] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG692 [279] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG693 [279] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG682 [280] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG683 [280] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG684 [280] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG685 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG686 [280] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG687 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG688 [280] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG689 [280] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG690 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG691 [280] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG692 [280] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG693 [280] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG694 [280] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG694 play_spawn_current +//SEG695 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { - .label _0 = $ac - .label _2 = $ae - .label current_piece_idx = $ab - .label sid_rnd1_return = $af - .label piece_idx = $4a - //SEG695 [284] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 + .label _1 = $af + .label _7 = $ad + .label current_piece_idx = $ac + .label sid_rnd1_return = $b0 + .label piece_idx = $49 + //SEG696 [285] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 // Move next piece into current lda next_piece_idx sta current_piece_idx - //SEG696 [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG697 [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_piece_idx asl - sta _0 - //SEG697 [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + sta _7 + //SEG698 [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_CHARS,y sta current_piece_char - //SEG698 [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _0 + //SEG699 [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG699 [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG700 [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_X,y sta current_xpos - //SEG700 [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG701 [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_Y,y sta current_ypos - //SEG701 [290] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 + //SEG702 [291] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG702 [291] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG703 [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _0 + //SEG704 [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _7 lda PIECES,y sta current_piece_104 lda PIECES+1,y sta current_piece_104+1 - //SEG704 [293] call play_collision - //SEG705 [199] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG705 [294] call play_collision + //SEG706 [200] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG706 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG707 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG708 [199] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 + //SEG707 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG708 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG709 [200] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 lda #0 sta play_collision.orientation - //SEG709 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG710 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG710 [294] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG711 [295] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_10 jmp b4 - //SEG711 play_spawn_current::@4 + //SEG712 play_spawn_current::@4 b4: - //SEG712 [295] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 + //SEG713 [296] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 lda play_collision.return_10 - sta _2 - //SEG713 [296] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuz1_neq_vbuc1_then_la1 + sta _1 + //SEG714 [297] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuz1_neq_vbuc1_then_la1 lda #COLLISION_PLAYFIELD - cmp _2 + cmp _1 bne b5_from_b4 - //SEG714 [297] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG715 [298] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] b1_from_b4: - //SEG715 [297] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG716 [298] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG716 play_spawn_current::@1 + //SEG717 play_spawn_current::@1 b1: - //SEG717 [298] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG718 [299] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG718 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG719 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG719 play_spawn_current::@2 + //SEG720 play_spawn_current::@2 b2: - //SEG720 [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG721 [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 jmp breturn - //SEG721 play_spawn_current::@return + //SEG722 play_spawn_current::@return breturn: - //SEG722 [300] return + //SEG723 [301] return rts - //SEG723 play_spawn_current::sid_rnd1 + //SEG724 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG724 [301] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + //SEG725 [302] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta sid_rnd1_return jmp b3 - //SEG725 play_spawn_current::@3 + //SEG726 play_spawn_current::@3 b3: - //SEG726 [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG727 [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and sid_rnd1_return sta piece_idx - //SEG727 [298] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG728 [299] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] b2_from_b3: - //SEG728 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG729 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG729 [303] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG730 [304] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] b5_from_b4: jmp b5 - //SEG730 play_spawn_current::@5 + //SEG731 play_spawn_current::@5 b5: - //SEG731 [297] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG732 [298] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] b1_from_b5: - //SEG732 [297] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG733 [298] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG733 play_update_score +//SEG734 play_update_score // Update the score based on the number of lines removed -// play_update_score(byte zeropage($aa) removed) +// play_update_score(byte zeropage($ab) removed) play_update_score: { - .label _2 = $b0 - .label _4 = $b2 - .label _5 = $b7 - .label removed = $aa - .label lines_before = $b1 - .label add_bcd = $b3 - .label lines_after = $b8 - //SEG734 [304] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 + .label _2 = $b1 + .label _4 = $b8 + .label _9 = $b3 + .label removed = $ab + .label lines_before = $b2 + .label add_bcd = $b4 + .label lines_after = $b9 + //SEG735 [305] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 lda removed cmp #0 beq breturn_from_play_update_score jmp b1 - //SEG735 play_update_score::@1 + //SEG736 play_update_score::@1 b1: - //SEG736 [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 + //SEG737 [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _2 - //SEG737 [306] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuz2_band_vbuc1 + //SEG738 [307] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _2 sta lines_before - //SEG738 [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG739 [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda removed asl asl - sta _4 - //SEG739 [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuz2 - ldy _4 + sta _9 + //SEG740 [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuz2 + ldy _9 lda score_add_bcd,y sta add_bcd lda score_add_bcd+1,y @@ -14573,9 +14577,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG740 asm { sed } + //SEG741 asm { sed } sed - //SEG741 [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG742 [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 lda removed clc adc lines_bcd @@ -14583,7 +14587,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG742 [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG743 [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -14597,120 +14601,120 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG743 asm { cld } + //SEG744 asm { cld } cld - //SEG744 [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuz1=_lo_vwuz2 + //SEG745 [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 -- vbuz1=_lo_vwuz2 lda lines_bcd - sta _5 - //SEG745 [314] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuz2_band_vbuc1 + sta _4 + //SEG746 [315] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 - and _5 + and _4 sta lines_after - //SEG746 [315] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 + //SEG747 [316] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 lda lines_before cmp lines_after beq breturn_from_b1 - //SEG747 [316] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG748 [317] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] b2_from_b1: jmp b2 - //SEG748 play_update_score::@2 + //SEG749 play_update_score::@2 b2: - //SEG749 [317] call play_increase_level + //SEG750 [318] call play_increase_level jsr play_increase_level - //SEG750 [318] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG751 [319] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] breturn_from_play_update_score: breturn_from_b1: breturn_from_b2: - //SEG751 [318] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG752 [318] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG753 [318] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG754 [318] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG755 [318] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG752 [319] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG753 [319] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG754 [319] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG755 [319] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG756 [319] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy jmp breturn - //SEG756 play_update_score::@return + //SEG757 play_update_score::@return breturn: - //SEG757 [319] return + //SEG758 [320] return rts } -//SEG758 play_increase_level +//SEG759 play_increase_level // Increase the level play_increase_level: { - .label _1 = $b9 - .label b4 = $ba - .label b = $4c - //SEG759 [320] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + .label _1 = $ba + .label _5 = $bb + .label b = $4b + //SEG760 [321] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG760 [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG761 [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b1_from_play_increase_level jmp b3 - //SEG761 play_increase_level::@3 + //SEG762 play_increase_level::@3 b3: - //SEG762 [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG763 [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG763 [323] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG764 [324] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] b1_from_b3: - //SEG764 [323] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG765 [324] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG765 [323] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG766 [324] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b1_from_play_increase_level: - //SEG766 [323] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG767 [324] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b1 - //SEG767 play_increase_level::@1 + //SEG768 play_increase_level::@1 b1: - //SEG768 [324] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG769 [325] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG769 [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG770 [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and level_bcd sta _1 - //SEG770 [326] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG771 [327] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$a cmp _1 bne b2_from_b1 jmp b4 - //SEG771 play_increase_level::@4 + //SEG772 play_increase_level::@4 b4: - //SEG772 [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG773 [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG773 [328] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG774 [329] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] b2_from_b1: b2_from_b4: - //SEG774 [328] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG775 [329] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG775 play_increase_level::@2 + //SEG776 play_increase_level::@2 b2: - //SEG776 asm { sed } + //SEG777 asm { sed } // Increase the score values gained sed - //SEG777 [330] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG778 [331] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] b5_from_b2: - //SEG778 [330] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuz1=vbuc1 + //SEG779 [331] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuz1=vbuc1 lda #0 sta b jmp b5 - //SEG779 [330] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG780 [331] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] b5_from_b5: - //SEG780 [330] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG781 [331] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy jmp b5 - //SEG781 play_increase_level::@5 + //SEG782 play_increase_level::@5 b5: - //SEG782 [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG783 [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl - sta b4 - //SEG783 [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 - ldy b4 + sta _5 + //SEG784 [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 + ldy _5 clc lda score_add_bcd,y adc SCORE_BASE_BCD,y @@ -14724,802 +14728,803 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG784 [333] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 + //SEG785 [334] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG785 [334] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG786 [335] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp b bne b5_from_b5 jmp b6 - //SEG786 play_increase_level::@6 + //SEG787 play_increase_level::@6 b6: - //SEG787 asm { cld } + //SEG788 asm { cld } cld jmp breturn - //SEG788 play_increase_level::@return + //SEG789 play_increase_level::@return breturn: - //SEG789 [336] return + //SEG790 [337] return rts } -//SEG790 play_remove_lines +//SEG791 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. // Returns the number of lines removed play_remove_lines: { - .label return = $a8 - .label c = $bb - .label r = $4f - .label w = $52 - .label x = $50 - .label y = $4d - .label removed = $4e - .label full = $51 - //SEG791 [338] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + .label return = $a9 + .label c = $bc + .label r = $4e + .label w = $51 + .label x = $4f + .label y = $4c + .label removed = $4d + .label full = $50 + //SEG792 [339] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG792 [338] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG793 [339] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG793 [338] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG794 [339] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG794 [338] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG795 [339] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG795 [338] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 + //SEG796 [339] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 // Read all lines and rewrite them - //SEG796 [338] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG797 [339] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] b1_from_b6: - //SEG797 [338] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG798 [338] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG799 [338] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG800 [338] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG798 [339] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG799 [339] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG800 [339] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG801 [339] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG801 play_remove_lines::@1 + //SEG802 play_remove_lines::@1 b1: - //SEG802 [339] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG803 [340] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG803 [339] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG804 [340] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG804 [339] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG805 [340] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG805 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG806 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG806 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG807 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG807 [339] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG808 [340] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG808 [339] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG809 [339] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG810 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG811 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG809 [340] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG810 [340] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG811 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG812 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG812 play_remove_lines::@2 + //SEG813 play_remove_lines::@2 b2: - //SEG813 [340] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG814 [341] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG814 [341] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG815 [342] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG815 [342] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG816 [343] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b9_from_b2 - //SEG816 [343] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG817 [344] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG817 [343] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG818 [344] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG818 play_remove_lines::@3 + //SEG819 play_remove_lines::@3 b3: - //SEG819 [344] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG820 [345] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG820 [345] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG821 [346] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG821 [346] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG822 [347] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG822 [347] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG823 [348] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2_from_b3 jmp b4 - //SEG823 play_remove_lines::@4 + //SEG824 play_remove_lines::@4 b4: - //SEG824 [348] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG825 [349] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6_from_b4 jmp b5 - //SEG825 play_remove_lines::@5 + //SEG826 play_remove_lines::@5 b5: - //SEG826 [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG827 [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax w axs #-[PLAYFIELD_COLS] stx w - //SEG827 [350] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG828 [351] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG828 [351] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG829 [352] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] b6_from_b4: b6_from_b5: - //SEG829 [351] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG830 [351] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG830 [352] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG831 [352] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy jmp b6 - //SEG831 play_remove_lines::@6 + //SEG832 play_remove_lines::@6 b6: - //SEG832 [352] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG833 [353] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG833 [353] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG834 [354] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1_from_b6 - //SEG834 [354] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG835 [355] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b7_from_b6: b7_from_b8: - //SEG835 [354] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG836 [355] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy jmp b7 // Write zeros in the rest of the lines - //SEG836 play_remove_lines::@7 + //SEG837 play_remove_lines::@7 b7: - //SEG837 [355] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG838 [356] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuz1_neq_vbuc1_then_la1 lda #$ff cmp w bne b8 jmp breturn - //SEG838 play_remove_lines::@return + //SEG839 play_remove_lines::@return breturn: - //SEG839 [356] return + //SEG840 [357] return rts - //SEG840 play_remove_lines::@8 + //SEG841 play_remove_lines::@8 b8: - //SEG841 [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG842 [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy w sta playfield,y - //SEG842 [358] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG843 [359] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b7_from_b8 - //SEG843 [359] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG844 [360] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] b9_from_b2: jmp b9 - //SEG844 play_remove_lines::@9 + //SEG845 play_remove_lines::@9 b9: - //SEG845 [343] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG846 [344] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] b3_from_b9: - //SEG846 [343] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG847 [344] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG847 play_lock_current +//SEG848 play_lock_current // Lock the current piece onto the playfield play_lock_current: { - .label ypos2 = $53 - .label playfield_line = $bc - .label col = $56 - .label i = $be - .label c = $57 - .label l = $54 - .label i_2 = $55 - .label i_3 = $55 - .label i_7 = $55 - .label i_9 = $55 - //SEG848 [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + .label _4 = $bd + .label yp = $52 + .label playfield_line = $be + .label xp = $55 + .label i = $c0 + .label c = $56 + .label l = $53 + .label i_2 = $54 + .label i_3 = $54 + .label i_7 = $54 + .label i_9 = $54 + //SEG849 [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#100 -- vbuz1=vbuz2 lda current_ypos - asl - sta ypos2 - //SEG849 [361] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + sta yp + //SEG850 [362] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG850 [361] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG851 [362] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG851 [361] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG852 [362] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG852 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG853 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG853 play_lock_current::@1 + //SEG854 play_lock_current::@1 b1: - //SEG854 [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG855 [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda yp + asl + sta _4 + //SEG856 [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _4 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG855 [363] (byte) play_lock_current::col#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG857 [365] (byte) play_lock_current::xp#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos - sta col - //SEG856 [364] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + sta xp + //SEG858 [366] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG857 [364] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 + //SEG859 [366] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG858 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG859 [364] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG860 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG861 [366] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG860 play_lock_current::@2 + //SEG862 play_lock_current::@2 b2: - //SEG861 [365] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG863 [367] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG862 [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG864 [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG863 play_lock_current::@4 + //SEG865 play_lock_current::@4 b4: - //SEG864 [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG866 [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char - ldy col + ldy xp sta (playfield_line),y jmp b3 - //SEG865 play_lock_current::@3 + //SEG867 play_lock_current::@3 b3: - //SEG866 [368] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG867 [369] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG868 [370] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG869 [371] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG868 [370] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG870 [372] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp c bne b7 jmp b5 - //SEG869 play_lock_current::@5 + //SEG871 play_lock_current::@5 b5: - //SEG870 [371] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG871 [372] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG872 [373] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG873 [374] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG872 [373] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG874 [375] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 jmp breturn - //SEG873 play_lock_current::@return + //SEG875 play_lock_current::@return breturn: - //SEG874 [374] return + //SEG876 [376] return rts - //SEG875 play_lock_current::@6 + //SEG877 play_lock_current::@6 b6: - //SEG876 [375] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG878 [377] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG877 [361] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG879 [362] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] b1_from_b6: - //SEG878 [361] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG879 [361] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG880 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG880 [362] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG881 [362] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG882 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG881 play_lock_current::@7 + //SEG883 play_lock_current::@7 b7: - //SEG882 [376] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG884 [378] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG883 [364] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG885 [366] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] b2_from_b7: - //SEG884 [364] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG885 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG886 [364] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG886 [366] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG887 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG888 [366] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG887 keyboard_event_pressed +//SEG889 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zeropage($58) keycode) +// keyboard_event_pressed(byte zeropage($57) keycode) keyboard_event_pressed: { - .label _0 = $bf - .label _1 = $c1 - .label return = $c6 - .label return_1 = $c8 - .label return_2 = $ca - .label row_bits = $c0 - .label return_10 = $cc - .label keycode = $58 - .label return_11 = $c2 - .label return_12 = $a4 - //SEG888 [378] (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 = $c1 + .label _1 = $c3 + .label return = $c8 + .label return_1 = $ca + .label return_2 = $cc + .label row_bits = $c2 + .label return_10 = $ce + .label keycode = $57 + .label return_11 = $c4 + .label return_12 = $a5 + //SEG890 [380] (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 - //SEG889 [379] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG891 [381] (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 - //SEG890 [380] (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 + //SEG892 [382] (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 - //SEG891 [381] (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 + //SEG893 [383] (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 - //SEG892 keyboard_event_pressed::@return + //SEG894 keyboard_event_pressed::@return breturn: - //SEG893 [382] return + //SEG895 [384] return rts } -//SEG894 keyboard_event_get +//SEG896 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - .label return = $59 - .label return_3 = $7b - //SEG895 [383] 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 = $58 + .label return_3 = $7a + //SEG897 [385] 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 b1 - //SEG896 keyboard_event_get::@1 + //SEG898 keyboard_event_get::@1 b1: - //SEG897 [384] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG899 [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG898 [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG900 [387] (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 - //SEG899 [386] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG901 [388] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] breturn_from_b1: - //SEG900 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG901 [386] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG902 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG903 [388] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG902 [386] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG904 [388] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG903 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG904 [386] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG905 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG906 [388] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG905 keyboard_event_get::@return + //SEG907 keyboard_event_get::@return breturn: - //SEG906 [387] return + //SEG908 [389] return rts } -//SEG907 keyboard_event_scan +//SEG909 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { - .label _0 = $c7 - .label _3 = $c9 - .label _6 = $cb - .label _9 = $cd - .label _15 = $ce - .label _16 = $cf - .label _23 = $d1 - .label row_scan = $c5 - .label keycode = $5c - .label row = $5a - .label col = $5b - .label event_type = $d0 - //SEG908 [389] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + .label _0 = $c9 + .label _3 = $cb + .label _6 = $cd + .label _9 = $cf + .label _15 = $d0 + .label _16 = $d1 + .label _23 = $d3 + .label row_scan = $c7 + .label keycode = $5b + .label row = $59 + .label col = $5a + .label event_type = $d2 + //SEG910 [391] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] b7_from_keyboard_event_scan: - //SEG909 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG910 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG911 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG912 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG911 [389] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG913 [391] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 lda #0 sta row jmp b7 - //SEG912 [389] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG914 [391] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] b7_from_b8: - //SEG913 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG914 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG915 [389] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG915 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG917 [391] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp b7 - //SEG916 keyboard_event_scan::@7 + //SEG918 keyboard_event_scan::@7 b7: - //SEG917 [390] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG919 [392] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG918 [391] call keyboard_matrix_read + //SEG920 [393] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG919 [392] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG921 [394] (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 b19 - //SEG920 keyboard_event_scan::@19 + //SEG922 keyboard_event_scan::@19 b19: - //SEG921 [393] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG923 [395] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG922 [394] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG924 [396] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b9_from_b19 jmp b16 - //SEG923 keyboard_event_scan::@16 + //SEG925 keyboard_event_scan::@16 b16: - //SEG924 [395] (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 + //SEG926 [397] (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 lax keycode axs #-[8] stx keycode - //SEG925 [396] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG927 [398] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] b8_from_b15: b8_from_b16: - //SEG926 [396] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG927 [396] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG928 [398] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG929 [398] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp b8 - //SEG928 keyboard_event_scan::@8 + //SEG930 keyboard_event_scan::@8 b8: - //SEG929 [397] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG931 [399] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG930 [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG932 [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7_from_b8 - //SEG931 [399] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG933 [401] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] b17_from_b8: jmp b17 - //SEG932 keyboard_event_scan::@17 + //SEG934 keyboard_event_scan::@17 b17: - //SEG933 [400] call keyboard_event_pressed - //SEG934 [377] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG935 [402] call keyboard_event_pressed + //SEG936 [379] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] keyboard_event_pressed_from_b17: - //SEG935 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG937 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG936 [401] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG938 [403] (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 b20 - //SEG937 keyboard_event_scan::@20 + //SEG939 keyboard_event_scan::@20 b20: - //SEG938 [402] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG940 [404] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _0 - //SEG939 [403] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuz1_eq_0_then_la1 + //SEG941 [405] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuz1_eq_0_then_la1 lda _0 cmp #0 beq b1_from_b20 - //SEG940 [404] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG942 [406] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] b18_from_b20: jmp b18 - //SEG941 keyboard_event_scan::@18 + //SEG943 keyboard_event_scan::@18 b18: - //SEG942 [405] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG944 [407] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] b1_from_b18: b1_from_b20: jmp b1 - //SEG943 keyboard_event_scan::@1 + //SEG945 keyboard_event_scan::@1 b1: - //SEG944 [406] call keyboard_event_pressed - //SEG945 [377] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG946 [408] call keyboard_event_pressed + //SEG947 [379] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG946 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG948 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG947 [407] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG949 [409] (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 b21 - //SEG948 keyboard_event_scan::@21 + //SEG950 keyboard_event_scan::@21 b21: - //SEG949 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG951 [410] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _3 - //SEG950 [409] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuz1_eq_0_then_la1 + //SEG952 [411] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuz1_eq_0_then_la1 lda _3 cmp #0 beq b2_from_b21 - //SEG951 [410] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG953 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] b4_from_b21: jmp b4 - //SEG952 keyboard_event_scan::@4 + //SEG954 keyboard_event_scan::@4 b4: - //SEG953 [411] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG955 [413] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] b2_from_b21: b2_from_b4: jmp b2 - //SEG954 keyboard_event_scan::@2 + //SEG956 keyboard_event_scan::@2 b2: - //SEG955 [412] call keyboard_event_pressed - //SEG956 [377] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG957 [414] call keyboard_event_pressed + //SEG958 [379] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] keyboard_event_pressed_from_b2: - //SEG957 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG959 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG958 [413] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG960 [415] (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 b22 - //SEG959 keyboard_event_scan::@22 + //SEG961 keyboard_event_scan::@22 b22: - //SEG960 [414] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG962 [416] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _6 - //SEG961 [415] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuz1_eq_0_then_la1 + //SEG963 [417] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuz1_eq_0_then_la1 lda _6 cmp #0 beq b3_from_b22 - //SEG962 [416] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG964 [418] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] b5_from_b22: jmp b5 - //SEG963 keyboard_event_scan::@5 + //SEG965 keyboard_event_scan::@5 b5: - //SEG964 [417] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG966 [419] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] b3_from_b22: b3_from_b5: jmp b3 - //SEG965 keyboard_event_scan::@3 + //SEG967 keyboard_event_scan::@3 b3: - //SEG966 [418] call keyboard_event_pressed - //SEG967 [377] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG968 [420] call keyboard_event_pressed + //SEG969 [379] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] keyboard_event_pressed_from_b3: - //SEG968 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG970 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG969 [419] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG971 [421] (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 b23 - //SEG970 keyboard_event_scan::@23 + //SEG972 keyboard_event_scan::@23 b23: - //SEG971 [420] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG973 [422] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _9 - //SEG972 [421] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG974 [423] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _9 cmp #0 beq breturn - //SEG973 [422] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG975 [424] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] b6_from_b23: jmp b6 - //SEG974 keyboard_event_scan::@6 + //SEG976 keyboard_event_scan::@6 b6: jmp breturn - //SEG975 keyboard_event_scan::@return + //SEG977 keyboard_event_scan::@return breturn: - //SEG976 [423] return + //SEG978 [425] return rts // Something has changed on the keyboard row - check each column - //SEG977 [424] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG979 [426] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] b9_from_b10: - //SEG978 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG979 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG980 [424] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG980 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG981 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG982 [426] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp b9 - //SEG981 [424] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG983 [426] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b9_from_b19: - //SEG982 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG983 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG984 [424] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuz1=vbuc1 + //SEG984 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [426] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuz1=vbuc1 lda #0 sta col jmp b9 - //SEG985 keyboard_event_scan::@9 + //SEG987 keyboard_event_scan::@9 b9: - //SEG986 [425] (byte~) keyboard_event_scan::$15 ← (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 + //SEG988 [427] (byte~) keyboard_event_scan::$15 ← (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 _15 - //SEG987 [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG989 [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _15 ldy col and keyboard_matrix_col_bitmask,y sta _16 - //SEG988 [427] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG990 [429] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _16 cmp #0 beq b10_from_b9 jmp b12 - //SEG989 keyboard_event_scan::@12 + //SEG991 keyboard_event_scan::@12 b12: - //SEG990 [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG992 [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10_from_b12 jmp b13 - //SEG991 keyboard_event_scan::@13 + //SEG993 keyboard_event_scan::@13 b13: - //SEG992 [429] (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 + //SEG994 [431] (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 - //SEG993 [430] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG995 [432] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b11 jmp b14 - //SEG994 keyboard_event_scan::@14 + //SEG996 keyboard_event_scan::@14 b14: - //SEG995 [431] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG997 [433] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG996 [432] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG998 [434] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG997 [433] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG999 [435] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] b10_from_b11: b10_from_b12: b10_from_b14: b10_from_b9: - //SEG998 [433] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1000 [435] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG999 keyboard_event_scan::@10 + //SEG1001 keyboard_event_scan::@10 b10: - //SEG1000 [434] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1001 [435] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG1003 [437] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1002 [436] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG1004 [438] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp col bne b9_from_b10 jmp b15 - //SEG1003 keyboard_event_scan::@15 + //SEG1005 keyboard_event_scan::@15 b15: - //SEG1004 [437] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1006 [439] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8_from_b15 - //SEG1005 keyboard_event_scan::@11 + //SEG1007 keyboard_event_scan::@11 b11: - //SEG1006 [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz2_bor_vbuc1 + //SEG1008 [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _23 - //SEG1007 [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1009 [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuz2 // Key released lda _23 ldy keyboard_events_size sta keyboard_events,y - //SEG1008 [440] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [442] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10_from_b11 } -//SEG1009 keyboard_matrix_read +//SEG1011 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte zeropage($c3) rowid) +// keyboard_matrix_read(byte zeropage($c5) rowid) keyboard_matrix_read: { - .label return = $d2 - .label rowid = $c3 - .label return_2 = $c4 - //SEG1010 [441] *((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 = $d4 + .label rowid = $c5 + .label return_2 = $c6 + //SEG1012 [443] *((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 - //SEG1011 [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG1013 [444] (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 - //SEG1012 keyboard_matrix_read::@return + //SEG1014 keyboard_matrix_read::@return breturn: - //SEG1013 [443] return + //SEG1015 [445] return rts } -//SEG1014 render_show +//SEG1016 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f - .label d018val = $5e - //SEG1015 [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + .label d018val = $5d + //SEG1017 [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1016 [445] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1018 [447] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1017 render_show::toD0182 + //SEG1019 render_show::toD0182 toD0182: - //SEG1018 [446] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1020 [448] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] b1_from_toD0182: - //SEG1019 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuz1=vbuc1 + //SEG1021 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuz1=vbuc1 lda #toD0182_return sta d018val jmp b1 - //SEG1020 render_show::@1 + //SEG1022 render_show::@1 b1: - //SEG1021 [447] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 + //SEG1023 [449] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 lda d018val sta D018 - //SEG1022 [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1024 [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1023 [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1025 [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1024 [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1026 [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG1025 render_show::@return + //SEG1027 render_show::@return breturn: - //SEG1026 [451] return + //SEG1028 [453] return rts - //SEG1027 [452] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1029 [454] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1028 render_show::toD0181 + //SEG1030 render_show::toD0181 toD0181: - //SEG1029 [446] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1031 [448] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] b1_from_toD0181: - //SEG1030 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuz1=vbuc1 + //SEG1032 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuz1=vbuc1 lda #toD0181_return sta d018val jmp b1 } -//SEG1031 play_init +//SEG1033 play_init // Initialize play data tables play_init: { - .label _2 = $d3 - .label pli = $60 - .label idx = $62 - .label j = $5f - .label b4 = $d4 - .label b = $63 - //SEG1032 [454] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + .label _4 = $d5 + .label _5 = $d6 + .label pli = $5f + .label idx = $61 + .label j = $5e + .label b = $62 + //SEG1034 [456] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1033 [454] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1035 [456] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1034 [454] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1036 [456] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1035 [454] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 + //SEG1037 [456] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG1036 [454] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1038 [456] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1037 [454] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1038 [454] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1039 [454] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1039 [456] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1040 [456] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1041 [456] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1040 play_init::@1 + //SEG1042 play_init::@1 b1: - //SEG1041 [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1043 [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl - sta _2 - //SEG1042 [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _2 + sta _4 + //SEG1044 [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _4 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG1043 [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1045 [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG1044 [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1046 [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -15527,46 +15532,46 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1045 [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1047 [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1046 [460] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG1048 [462] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG1047 [461] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1049 [463] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp j bne b1_from_b1 jmp b2 - //SEG1048 play_init::@2 + //SEG1050 play_init::@2 b2: - //SEG1049 [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1051 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1050 [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1052 [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1051 [464] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1053 [466] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] b3_from_b2: - //SEG1052 [464] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuz1=vbuc1 + //SEG1054 [466] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuz1=vbuc1 lda #0 sta b jmp b3 // Set the initial score add values - //SEG1053 [464] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1055 [466] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] b3_from_b3: - //SEG1054 [464] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1056 [466] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy jmp b3 - //SEG1055 play_init::@3 + //SEG1057 play_init::@3 b3: - //SEG1056 [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG1058 [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl - sta b4 - //SEG1057 [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 - ldy b4 + sta _5 + //SEG1059 [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 + ldy _5 lda SCORE_BASE_BCD,y sta score_add_bcd,y lda SCORE_BASE_BCD+1,y @@ -15575,244 +15580,244 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1058 [467] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 + //SEG1060 [469] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG1059 [468] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1061 [470] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp b bne b3_from_b3 jmp breturn - //SEG1060 play_init::@return + //SEG1062 play_init::@return breturn: - //SEG1061 [469] return + //SEG1063 [471] return rts } -//SEG1062 sprites_irq_init +//SEG1064 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1063 asm { sei } + //SEG1065 asm { sei } sei - //SEG1064 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1066 [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1065 asm { ldaCIA1_INTERRUPT } + //SEG1067 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1066 [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1068 [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1067 [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1069 [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1068 [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1069 [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1071 [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1070 [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1071 [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1072 [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1074 [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1073 asm { cli } + //SEG1075 asm { cli } cli jmp breturn - //SEG1074 sprites_irq_init::@return + //SEG1076 sprites_irq_init::@return breturn: - //SEG1075 [481] return + //SEG1077 [483] return rts } -//SEG1076 sprites_init +//SEG1078 sprites_init // Setup the sprites sprites_init: { - .label s2 = $d5 - .label xpos = $65 - .label s = $64 - //SEG1077 [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 + .label s2 = $d7 + .label xpos = $64 + .label s = $63 + //SEG1079 [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1078 [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1080 [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1079 [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1081 [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1080 [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1082 [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1081 [486] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1083 [488] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1082 [486] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1084 [488] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1083 [486] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG1085 [488] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG1084 [486] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1086 [488] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1085 [486] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1086 [486] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1087 [488] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1088 [488] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1087 sprites_init::@1 + //SEG1089 sprites_init::@1 b1: - //SEG1088 [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1090 [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG1089 [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1091 [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG1090 [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1092 [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #BLACK ldy s sta SPRITES_COLS,y - //SEG1091 [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1093 [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1092 [491] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG1094 [493] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG1093 [492] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1095 [494] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp s bne b1_from_b1 jmp breturn - //SEG1094 sprites_init::@return + //SEG1096 sprites_init::@return breturn: - //SEG1095 [493] return + //SEG1097 [495] return rts } -//SEG1096 render_init +//SEG1098 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)/$40 - .label _13 = $d6 - .label _14 = $d7 - .label li_1 = $67 - .label li_2 = $69 - .label i = $66 + .label _14 = $d8 + .label _15 = $d9 + .label li_1 = $66 + .label li_2 = $68 + .label i = $65 jmp vicSelectGfxBank1 - //SEG1097 render_init::vicSelectGfxBank1 + //SEG1099 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1098 [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1100 [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1099 [496] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1101 [498] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1100 render_init::vicSelectGfxBank1_toDd001 + //SEG1102 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1101 render_init::vicSelectGfxBank1_@1 + //SEG1103 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1102 [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1104 [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG1103 render_init::@2 + //SEG1105 render_init::@2 b2: - //SEG1104 [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1106 [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1105 [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1107 [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1106 [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1108 [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1107 [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1109 [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1108 [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1110 [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1109 [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1110 [504] call render_screen_original - //SEG1111 [517] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1112 [506] call render_screen_original + //SEG1113 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] render_screen_original_from_b2: - //SEG1112 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1114 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1113 [505] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1115 [507] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: jmp b3 - //SEG1114 render_init::@3 + //SEG1116 render_init::@3 b3: - //SEG1115 [506] call render_screen_original - //SEG1116 [517] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1117 [508] call render_screen_original + //SEG1118 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1117 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1119 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [507] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1120 [509] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] b1_from_b3: - //SEG1119 [507] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1121 [509] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1120 [507] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1122 [509] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1121 [507] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuz1=vbuc1 + //SEG1123 [509] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1122 [507] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1124 [509] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1123 [507] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1124 [507] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1125 [507] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1125 [509] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1126 [509] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1127 [509] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1126 render_init::@1 + //SEG1128 render_init::@1 b1: - //SEG1127 [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1129 [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _13 - //SEG1128 [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _13 + sta _14 + //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _14 lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1129 [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1131 [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _14 - //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _14 + sta _15 + //SEG1132 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _15 lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1131 [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1133 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -15820,7 +15825,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1132 [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1134 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -15828,351 +15833,351 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1133 [514] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG1135 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1134 [515] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1136 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp i bne b1_from_b1 jmp breturn - //SEG1135 render_init::@return + //SEG1137 render_init::@return breturn: - //SEG1136 [516] return + //SEG1138 [518] return rts } -//SEG1137 render_screen_original +//SEG1139 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 -// render_screen_original(byte* zeropage($70) screen) +// render_screen_original(byte* zeropage($6f) screen) render_screen_original: { .const SPACE = 0 - .label screen = $70 - .label cols = $72 - .label x = $74 - .label oscr = $6c - .label ocols = $6e - .label y = $6b - //SEG1138 [518] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + .label screen = $6f + .label cols = $71 + .label x = $73 + .label oscr = $6b + .label ocols = $6d + .label y = $6a + //SEG1140 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1139 [518] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1141 [520] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1140 [518] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1142 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1141 [518] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1143 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1142 [518] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1144 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1143 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1145 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1144 [518] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1146 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] b1_from_b5: - //SEG1145 [518] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1146 [518] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1147 [518] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1148 [518] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1149 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1147 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1148 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1149 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1150 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1151 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1150 render_screen_original::@1 + //SEG1152 render_screen_original::@1 b1: - //SEG1151 [519] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1153 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1152 [519] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 + //SEG1154 [521] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG1153 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1154 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1155 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1156 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1155 [519] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1157 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1156 [519] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1157 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1158 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1158 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1159 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1160 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1159 render_screen_original::@2 + //SEG1161 render_screen_original::@2 b2: - //SEG1160 [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1162 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1161 [521] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1163 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1162 [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1164 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1163 [523] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1165 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1164 [524] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG1166 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG1165 [525] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1167 [527] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp x bne b2_from_b2 - //SEG1166 [526] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1168 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1167 [526] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1168 [526] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1169 [526] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1169 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1170 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1171 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1172 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1173 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1172 render_screen_original::@3 + //SEG1174 render_screen_original::@3 b3: - //SEG1173 [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1175 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1176 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1177 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1176 [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1177 [531] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1179 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1178 [532] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1179 [533] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG1181 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG1180 [534] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1182 [536] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 lda #$24 cmp x bne b3_from_b3 - //SEG1181 [535] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1183 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1182 [535] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1183 [535] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1184 [535] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1184 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1185 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1186 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1185 render_screen_original::@4 + //SEG1187 render_screen_original::@4 b4: - //SEG1186 [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1188 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1187 [537] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1189 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1190 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1189 [539] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1191 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1190 [540] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 + //SEG1192 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG1191 [541] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1193 [543] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b4_from_b4 jmp b5 - //SEG1192 render_screen_original::@5 + //SEG1194 render_screen_original::@5 b5: - //SEG1193 [542] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1195 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1194 [543] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1196 [545] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b5 jmp breturn - //SEG1195 render_screen_original::@return + //SEG1197 render_screen_original::@return breturn: - //SEG1196 [544] return + //SEG1198 [546] return rts } -//SEG1197 sid_rnd_init +//SEG1199 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1198 [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG1200 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1199 [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1201 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1200 sid_rnd_init::@return + //SEG1202 sid_rnd_init::@return breturn: - //SEG1201 [547] return + //SEG1203 [549] return rts } -//SEG1202 sprites_irq +//SEG1204 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 - .label _0 = $d9 - .label ypos = $d8 - .label raster_sprite_gfx_modify = $75 - .label ptr = $da - .label ptr_1 = $dd - .label ptr_2 = $de - .label ptr_3 = $db - .label ptr_4 = $dc - //SEG1203 entry interrupt(HARDWARE_CLOBBER) + .label _0 = $db + .label ypos = $da + .label raster_sprite_gfx_modify = $74 + .label ptr = $dc + .label ptr_1 = $df + .label ptr_2 = $e0 + .label ptr_3 = $dd + .label ptr_4 = $de + //SEG1205 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG1204 asm { cld } + //SEG1206 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1205 [549] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG1207 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 // Place the sprites lda irq_sprite_ypos sta ypos - //SEG1206 [550] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1208 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG1207 [551] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG1208 [552] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1210 [554] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1211 [555] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 - //SEG1210 [554] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1212 [556] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy irq_raster_next iny sty _0 - //SEG1211 [555] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 + //SEG1213 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 // Wait for the y-position before changing sprite pointers lda _0 sta raster_sprite_gfx_modify jmp b8 - //SEG1212 sprites_irq::@8 + //SEG1214 sprites_irq::@8 b8: - //SEG1213 [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1215 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG1214 sprites_irq::@9 + //SEG1216 sprites_irq::@9 b9: - //SEG1215 [557] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG1217 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG1216 [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1218 [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG1217 sprites_irq::@10 + //SEG1219 sprites_irq::@10 b10: - //SEG1218 [559] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG1219 [560] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1221 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1222 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1221 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1222 [563] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG1224 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG1225 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG1224 sprites_irq::@2 + //SEG1226 sprites_irq::@2 b2: - //SEG1225 [565] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1227 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1226 [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1228 [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG1227 sprites_irq::@6 + //SEG1229 sprites_irq::@6 b6: - //SEG1228 [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1230 [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG1229 sprites_irq::@7 + //SEG1231 sprites_irq::@7 b7: - //SEG1230 [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1232 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1231 [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1233 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1232 [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1234 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1233 [571] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1235 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG1234 [571] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1236 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy jmp b5 - //SEG1235 sprites_irq::@5 + //SEG1237 sprites_irq::@5 b5: - //SEG1236 [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1238 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1237 [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1239 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1238 sprites_irq::@return + //SEG1240 sprites_irq::@return breturn: - //SEG1239 [574] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1241 [576] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -16180,64 +16185,64 @@ sprites_irq: { regy: ldy #00 rti - //SEG1240 sprites_irq::@4 + //SEG1242 sprites_irq::@4 b4: - //SEG1241 [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1243 [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1242 [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1244 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1243 [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1245 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1244 [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1246 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG1245 sprites_irq::@3 + //SEG1247 sprites_irq::@3 b3: - //SEG1246 [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1247 [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1249 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1248 [581] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1250 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG1249 sprites_irq::toSpritePtr2 + //SEG1251 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG1250 sprites_irq::@11 + //SEG1252 sprites_irq::@11 b11: - //SEG1251 [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1253 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG1252 sprites_irq::@1 + //SEG1254 sprites_irq::@1 b1: - //SEG1253 [583] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG1254 [584] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1256 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1257 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1256 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1257 [587] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG1259 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG1260 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 @@ -16346,29 +16351,29 @@ Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $15 [ ] ( ) always clobbers reg byte a Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ current_ypos#13 current_ypos#106 current_ypos#107 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:172 [ play_spawn_current::$0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a Statement [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] Statement [60] (byte*~) current_piece_gfx#121 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a @@ -16383,248 +16388,247 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ r Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ) always clobbers reg byte a +Statement [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] -Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:172 [ play_spawn_current::$0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] +Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ) always clobbers reg byte a +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] -Statement [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Statement [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] -Statement [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#70 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_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:34 [ render_screen_render#22 render_screen_render#70 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ 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:39 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] -Statement [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:125 [ play_movement::key_event#0 ] -Statement [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ play_movement::key_event#0 ] +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:146 [ play_movement::render#2 ] -Statement [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a +Statement [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ 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:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Statement [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] -Statement [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ play_collision::c#2 play_collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:158 [ play_collision::i#1 ] -Statement [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:171 [ play_spawn_current::current_piece_idx#0 ] -Statement [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:170 [ play_update_score::removed#0 ] -Statement [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] -Statement [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a -Statement [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a -Statement [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a -Statement [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:159 [ play_collision::i#1 ] +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:172 [ play_spawn_current::current_piece_idx#0 ] +Statement [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:171 [ play_update_score::removed#0 ] +Statement [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a +Statement [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a +Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ) always clobbers reg byte a +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:125 [ play_movement::key_event#0 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Statement [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ play_increase_level::b#2 play_increase_level::b#1 ] -Statement [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -Statement [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ play_lock_current::c#2 play_lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:190 [ play_lock_current::i#1 ] -Statement [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [378] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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:55 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] -Statement [380] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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:192 [ keyboard_event_pressed::row_bits#0 ] -Statement [381] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [383] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [395] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [425] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] -Statement [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [429] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] -Statement [437] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a -Statement [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y -Statement [441] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ play_init::j#2 play_init::j#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] -Statement [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] -Statement [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:124 [ play_movement::key_event#0 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Statement [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] +Statement [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Statement [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] +Statement [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:192 [ play_lock_current::i#1 ] +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [380] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Statement [382] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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:194 [ keyboard_event_pressed::row_bits#0 ] +Statement [383] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [397] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [427] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] +Statement [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [433] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] +Statement [439] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a +Statement [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y +Statement [443] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ play_init::j#2 play_init::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] +Statement [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] +Statement [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ sprites_init::s#2 sprites_init::s#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ render_init::i#2 render_init::i#1 ] -Statement [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a -Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:116 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:116 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Statement [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:218 [ sprites_irq::ptr#0 ] -Statement [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ sprites_init::s#2 sprites_init::s#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Statement [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ render_init::i#2 render_init::i#1 ] +Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:220 [ sprites_irq::ptr#0 ] +Statement [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $15 [ ] ( ) always clobbers reg byte a Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a Statement [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a Statement [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ main::key_event#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ main::key_event#0 ] Statement [60] (byte*~) current_piece_gfx#121 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ) always clobbers reg byte a -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a Statement [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a @@ -16639,169 +16643,169 @@ Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte/sign Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ) always clobbers reg byte a -Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ) always clobbers reg byte a -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ) always clobbers reg byte a -Statement [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a -Statement [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] ) always clobbers reg byte a -Statement [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a -Statement [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a -Statement [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a -Statement [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a -Statement [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:125 [ play_movement::key_event#0 ] -Statement [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a -Statement [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [378] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [380] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [381] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [383] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [394] 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::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [395] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Statement [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a +Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] ) always clobbers reg byte a +Statement [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a +Statement [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a +Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ) always clobbers reg byte a +Statement [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a +Statement [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ play_movement::key_event#0 ] +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [380] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [382] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [383] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [396] 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::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [397] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) always clobbers reg byte a -Statement [425] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a -Statement [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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::$16 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$16 ] ) always clobbers reg byte a -Statement [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [429] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y -Statement [437] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a -Statement [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y -Statement [441] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a -Statement [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a -Statement [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) always clobbers reg byte a +Statement [427] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a +Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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::$16 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$16 ] ) always clobbers reg byte a +Statement [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [433] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y +Statement [439] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y +Statement [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a +Statement [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y +Statement [443] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Statement [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Statement [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a -Statement [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a -Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a +Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $15 [ ] ( ) always clobbers reg byte a Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [32] (byte*~) current_piece_gfx#120 ← (byte*) current_piece_gfx#74 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#106 current_ypos#6 current_xpos#130 current_xpos#103 current_piece_gfx#120 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#98 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a Statement [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a Statement [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a Statement [60] (byte*~) current_piece_gfx#121 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#107 render_screen_render#69 current_xpos#131 current_piece_gfx#121 ] ) always clobbers reg byte a -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a Statement [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a @@ -16816,154 +16820,154 @@ Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte/sign Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$4 ] ) always clobbers reg byte a -Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ) always clobbers reg byte a -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ) always clobbers reg byte a -Statement [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a -Statement [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:176 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:176::play_collision:191 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:229 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:171::play_collision:240 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_collision:264 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:293 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277::play_collision:293 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:171 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ) always clobbers reg byte a -Statement [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ) always clobbers reg byte a -Statement [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:164 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ) always clobbers reg byte a -Statement [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 game_over#52 ] ) always clobbers reg byte a -Statement [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:164::play_spawn_current:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a -Statement [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a -Statement [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a -Statement [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a -Statement [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y -Statement [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a -Statement [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:164::play_update_score:275::play_increase_level:317 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:164::play_remove_lines:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:164::play_lock_current:269 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [378] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [380] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [381] (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:12::play_movement:51::play_move_down:164::keyboard_event_pressed:249 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:400 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:406 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:412 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:418 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [383] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [394] 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::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a reg byte y -Statement [395] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x -Statement [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) always clobbers reg byte a -Statement [425] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a -Statement [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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::$16 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$16 ] ) always clobbers reg byte a -Statement [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [429] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y -Statement [437] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a -Statement [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y -Statement [441] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:391 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a -Statement [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a -Statement [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$9 ] ) always clobbers reg byte a +Statement [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$6 ] ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a +Statement [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#103 ] ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a +Statement [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:12::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a +Statement [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:294 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#102 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#101 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ) always clobbers reg byte a +Statement [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ) always clobbers reg byte a +Statement [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#100 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#106 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#65 ] ) always clobbers reg byte a +Statement [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 current_piece#104 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a +Statement [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$7 game_over#52 ] ) always clobbers reg byte a +Statement [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$7 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a +Statement [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a +Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$4 ] ) always clobbers reg byte a +Statement [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a +Statement [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#114 current_xpos#124 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [380] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [382] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [383] (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:12::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:402 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:408 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:414 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:420 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:12::keyboard_event_get:45 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y +Statement [396] 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::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a reg byte y +Statement [397] (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#30 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x +Statement [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) always clobbers reg byte a +Statement [427] (byte~) keyboard_event_scan::$15 ← (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::$15 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$15 ] ) always clobbers reg byte a +Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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::$16 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$16 ] ) always clobbers reg byte a +Statement [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [431] (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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 [433] *((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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 reg byte y +Statement [439] *((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#29 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y +Statement [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ 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::$23 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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::$23 ] ) always clobbers reg byte a +Statement [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 [ 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:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 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 y +Statement [443] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:393 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#114 current_xpos#124 current_ypos#100 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a +Statement [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$4 ] ) always clobbers reg byte a +Statement [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) [ current_movedown_slow#1 ] ( main:12::play_init:23 [ current_movedown_slow#1 ] ) always clobbers reg byte a +Statement [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::$5 ] ) always clobbers reg byte a +Statement [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a -Statement [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a -Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:504 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a +Statement [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$15 ] ) always clobbers reg byte a +Statement [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:506 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:508 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [576] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x +Statement [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] : zp ZP_BYTE:2 , Potential registers zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] : zp ZP_BYTE:3 , Potential registers zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] : zp ZP_BYTE:4 , @@ -16984,7 +16988,7 @@ Potential registers zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render Potential registers zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , Potential registers zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] : zp ZP_WORD:26 , Potential registers zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] : zp ZP_BYTE:31 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] : zp ZP_BYTE:32 , reg byte x , reg byte y , @@ -16999,87 +17003,87 @@ Potential registers zp ZP_BYTE:41 [ play_move_rotate::return#2 ] : zp ZP_BYTE:41 Potential registers zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , Potential registers zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] : zp ZP_WORD:43 , Potential registers zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ play_collision::c#2 play_collision::c#1 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:53 [ play_collision::return#15 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ play_move_leftright::return#2 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] : zp ZP_BYTE:56 , -Potential registers zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] : zp ZP_WORD:57 , -Potential registers zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] : zp ZP_DWORD:59 , -Potential registers zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] : zp ZP_BYTE:63 , -Potential registers zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] : zp ZP_BYTE:64 , -Potential registers zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] : zp ZP_BYTE:65 , -Potential registers zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] : zp ZP_WORD:66 , -Potential registers zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] : zp ZP_BYTE:68 , -Potential registers zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] : zp ZP_BYTE:69 , -Potential registers zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] : zp ZP_WORD:70 , -Potential registers zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] : zp ZP_BYTE:72 , -Potential registers zp ZP_BYTE:73 [ play_move_down::return#3 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] : zp ZP_BYTE:74 , -Potential registers zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] : zp ZP_BYTE:75 , -Potential registers zp ZP_BYTE:76 [ play_increase_level::b#2 play_increase_level::b#1 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp ZP_BYTE:77 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp ZP_BYTE:84 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp ZP_BYTE:85 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:87 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp ZP_BYTE:87 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:89 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:90 , -Potential registers zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:91 , reg byte x , -Potential registers zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] : zp ZP_BYTE:92 , reg byte x , -Potential registers zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] : zp ZP_BYTE:93 , -Potential registers zp ZP_BYTE:94 [ render_show::d018val#3 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:95 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:96 , -Potential registers zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] : zp ZP_BYTE:99 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:101 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:102 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ] : zp ZP_WORD:103 , -Potential registers zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] : zp ZP_WORD:105 , -Potential registers zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:107 , reg byte x , -Potential registers zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] : zp ZP_WORD:108 , -Potential registers zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp ZP_WORD:112 , -Potential registers zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] : zp ZP_WORD:114 , -Potential registers zp ZP_BYTE:116 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] : zp ZP_BYTE:116 , reg byte x , -Potential registers zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] : zp ZP_BYTE:117 , -Potential registers zp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] : zp ZP_BYTE:118 , -Potential registers zp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] : zp ZP_BYTE:119 , -Potential registers zp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] : zp ZP_BYTE:120 , -Potential registers zp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] : zp ZP_BYTE:121 , -Potential registers zp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] : zp ZP_BYTE:122 , -Potential registers zp ZP_BYTE:123 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ main::key_event#0 ] : zp ZP_BYTE:124 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ play_movement::key_event#0 ] : zp ZP_BYTE:125 , -Potential registers zp ZP_BYTE:126 [ play_movement::return#3 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ main::render#1 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ render_bcd::$5 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ render_bcd::$6 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ render_bcd::$3 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ render_bcd::$4 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ render_next::$4 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] : zp ZP_BYTE:133 , reg byte x , -Potential registers zp ZP_BYTE:134 [ render_next::cell#0 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ render_moving::$2 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ play_collision::return#15 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ play_move_leftright::return#2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] : zp ZP_BYTE:55 , +Potential registers zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] : zp ZP_WORD:56 , +Potential registers zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] : zp ZP_DWORD:58 , +Potential registers zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] : zp ZP_BYTE:62 , +Potential registers zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] : zp ZP_BYTE:63 , +Potential registers zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] : zp ZP_BYTE:64 , +Potential registers zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] : zp ZP_WORD:65 , +Potential registers zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] : zp ZP_BYTE:67 , +Potential registers zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] : zp ZP_BYTE:68 , +Potential registers zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] : zp ZP_WORD:69 , +Potential registers zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] : zp ZP_BYTE:71 , +Potential registers zp ZP_BYTE:72 [ play_move_down::return#3 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] : zp ZP_BYTE:73 , +Potential registers zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] : zp ZP_BYTE:74 , +Potential registers zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] : zp ZP_BYTE:77 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] : zp ZP_BYTE:81 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp ZP_BYTE:84 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] : zp ZP_BYTE:85 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:87 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:88 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:89 , +Potential registers zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:90 , reg byte x , +Potential registers zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] : zp ZP_BYTE:91 , reg byte x , +Potential registers zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] : zp ZP_BYTE:92 , +Potential registers zp ZP_BYTE:93 [ render_show::d018val#3 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:94 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:95 , +Potential registers zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:97 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:99 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:101 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] : zp ZP_WORD:102 , +Potential registers zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] : zp ZP_WORD:104 , +Potential registers zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:106 , reg byte x , +Potential registers zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] : zp ZP_WORD:107 , +Potential registers zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] : zp ZP_WORD:109 , +Potential registers zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp ZP_WORD:111 , +Potential registers zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] : zp ZP_WORD:113 , +Potential registers zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] : zp ZP_BYTE:115 , reg byte x , +Potential registers zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] : zp ZP_BYTE:116 , +Potential registers zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] : zp ZP_BYTE:117 , +Potential registers zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] : zp ZP_BYTE:118 , +Potential registers zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] : zp ZP_BYTE:119 , +Potential registers zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] : zp ZP_BYTE:120 , +Potential registers zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] : zp ZP_BYTE:121 , +Potential registers zp ZP_BYTE:122 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ main::key_event#0 ] : zp ZP_BYTE:123 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ play_movement::key_event#0 ] : zp ZP_BYTE:124 , +Potential registers zp ZP_BYTE:125 [ play_movement::return#3 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ main::render#1 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ render_bcd::$5 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ render_bcd::$6 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ render_bcd::$3 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ render_bcd::$4 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ render_next::$9 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] : zp ZP_BYTE:132 , reg byte x , +Potential registers zp ZP_BYTE:133 [ render_next::cell#0 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ render_moving::$1 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ render_moving::$6 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:136 [ render_moving::screen_line#0 ] : zp ZP_WORD:136 , Potential registers zp ZP_BYTE:138 [ render_moving::current_cell#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:139 [ render_playfield::$2 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:140 [ render_playfield::$3 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:140 [ render_playfield::$6 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:141 [ play_move_down::key_event#0 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:142 [ play_move_down::return#0 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:143 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , @@ -17094,423 +17098,426 @@ Potential registers zp ZP_BYTE:151 [ play_collision::return#14 ] : zp ZP_BYTE:15 Potential registers zp ZP_BYTE:152 [ play_move_rotate::$2 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:153 [ play_move_rotate::$7 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:154 , -Potential registers zp ZP_WORD:156 [ play_collision::playfield_line#0 ] : zp ZP_WORD:156 , -Potential registers zp ZP_BYTE:158 [ play_collision::i#1 ] : zp ZP_BYTE:158 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:159 [ play_collision::$7 ] : zp ZP_BYTE:159 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:160 [ play_collision::return#13 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:161 [ play_move_leftright::$4 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:162 [ play_collision::return#1 ] : zp ZP_BYTE:162 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:163 [ play_move_leftright::$8 ] : zp ZP_BYTE:163 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:164 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:164 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:165 [ play_move_down::$2 ] : zp ZP_BYTE:165 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:166 [ play_collision::return#0 ] : zp ZP_BYTE:166 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:167 [ play_move_down::$12 ] : zp ZP_BYTE:167 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:168 [ play_remove_lines::return#0 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:169 [ play_move_down::removed#0 ] : zp ZP_BYTE:169 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:170 [ play_update_score::removed#0 ] : zp ZP_BYTE:170 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:171 [ play_spawn_current::current_piece_idx#0 ] : zp ZP_BYTE:171 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:172 [ play_spawn_current::$0 ] : zp ZP_BYTE:172 , reg byte x , -Potential registers zp ZP_BYTE:173 [ play_collision::return#10 ] : zp ZP_BYTE:173 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:174 [ play_spawn_current::$2 ] : zp ZP_BYTE:174 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:175 [ play_spawn_current::sid_rnd1_return#0 ] : zp ZP_BYTE:175 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:176 [ play_update_score::$2 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] : zp ZP_BYTE:177 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:178 [ play_update_score::$4 ] : zp ZP_BYTE:178 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:179 [ play_update_score::add_bcd#0 ] : zp ZP_DWORD:179 , -Potential registers zp ZP_BYTE:183 [ play_update_score::$5 ] : zp ZP_BYTE:183 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:184 [ play_update_score::lines_after#0 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:185 [ play_increase_level::$1 ] : zp ZP_BYTE:185 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:186 [ play_increase_level::b4#0 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:187 [ play_remove_lines::c#0 ] : zp ZP_BYTE:187 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:188 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:188 , -Potential registers zp ZP_BYTE:190 [ play_lock_current::i#1 ] : zp ZP_BYTE:190 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:191 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:191 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:192 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:193 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:194 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:195 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:196 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:197 , reg byte x , -Potential registers zp ZP_BYTE:198 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:198 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:199 [ keyboard_event_scan::$0 ] : zp ZP_BYTE:199 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:200 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:200 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:201 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:201 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:202 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:202 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:203 [ keyboard_event_scan::$6 ] : zp ZP_BYTE:203 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:204 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:204 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:205 [ keyboard_event_scan::$9 ] : zp ZP_BYTE:205 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:206 [ keyboard_event_scan::$15 ] : zp ZP_BYTE:206 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:207 [ keyboard_event_scan::$16 ] : zp ZP_BYTE:207 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:208 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:208 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:209 [ keyboard_event_scan::$23 ] : zp ZP_BYTE:209 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:210 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:210 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:211 [ play_init::$2 ] : zp ZP_BYTE:211 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:212 [ play_init::b4#0 ] : zp ZP_BYTE:212 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:213 [ sprites_init::s2#0 ] : zp ZP_BYTE:213 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:214 [ render_init::$13 ] : zp ZP_BYTE:214 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:215 [ render_init::$14 ] : zp ZP_BYTE:215 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:216 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:216 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:217 [ sprites_irq::$0 ] : zp ZP_BYTE:217 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:218 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:218 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:219 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:219 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:220 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:220 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:221 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:221 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:222 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:222 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:156 [ play_collision::$14 ] : zp ZP_BYTE:156 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:157 [ play_collision::playfield_line#0 ] : zp ZP_WORD:157 , +Potential registers zp ZP_BYTE:159 [ play_collision::i#1 ] : zp ZP_BYTE:159 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:160 [ play_collision::$5 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:161 [ play_collision::return#13 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:162 [ play_move_leftright::$4 ] : zp ZP_BYTE:162 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:163 [ play_collision::return#1 ] : zp ZP_BYTE:163 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:164 [ play_move_leftright::$8 ] : zp ZP_BYTE:164 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:165 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:165 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:166 [ play_move_down::$2 ] : zp ZP_BYTE:166 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:167 [ play_collision::return#0 ] : zp ZP_BYTE:167 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:168 [ play_move_down::$12 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:169 [ play_remove_lines::return#0 ] : zp ZP_BYTE:169 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:170 [ play_move_down::removed#0 ] : zp ZP_BYTE:170 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:171 [ play_update_score::removed#0 ] : zp ZP_BYTE:171 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:172 [ play_spawn_current::current_piece_idx#0 ] : zp ZP_BYTE:172 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:173 [ play_spawn_current::$7 ] : zp ZP_BYTE:173 , reg byte x , +Potential registers zp ZP_BYTE:174 [ play_collision::return#10 ] : zp ZP_BYTE:174 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:175 [ play_spawn_current::$1 ] : zp ZP_BYTE:175 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:176 [ play_spawn_current::sid_rnd1_return#0 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:177 [ play_update_score::$2 ] : zp ZP_BYTE:177 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] : zp ZP_BYTE:178 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:179 [ play_update_score::$9 ] : zp ZP_BYTE:179 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] : zp ZP_DWORD:180 , +Potential registers zp ZP_BYTE:184 [ play_update_score::$4 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:185 [ play_update_score::lines_after#0 ] : zp ZP_BYTE:185 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:186 [ play_increase_level::$1 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:187 [ play_increase_level::$5 ] : zp ZP_BYTE:187 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:188 [ play_remove_lines::c#0 ] : zp ZP_BYTE:188 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:189 [ play_lock_current::$4 ] : zp ZP_BYTE:189 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:190 , +Potential registers zp ZP_BYTE:192 [ play_lock_current::i#1 ] : zp ZP_BYTE:192 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:193 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:194 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:195 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:197 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:197 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:198 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:198 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:199 , reg byte x , +Potential registers zp ZP_BYTE:200 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:200 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] : zp ZP_BYTE:201 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:202 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:203 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:204 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] : zp ZP_BYTE:205 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:206 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] : zp ZP_BYTE:207 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:208 [ keyboard_event_scan::$15 ] : zp ZP_BYTE:208 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:209 [ keyboard_event_scan::$16 ] : zp ZP_BYTE:209 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:210 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:210 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:211 [ keyboard_event_scan::$23 ] : zp ZP_BYTE:211 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:212 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:212 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:213 [ play_init::$4 ] : zp ZP_BYTE:213 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:214 [ play_init::$5 ] : zp ZP_BYTE:214 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:215 [ sprites_init::s2#0 ] : zp ZP_BYTE:215 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:216 [ render_init::$14 ] : zp ZP_BYTE:216 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:217 [ render_init::$15 ] : zp ZP_BYTE:217 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:218 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:218 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:219 [ sprites_irq::$0 ] : zp ZP_BYTE:219 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:220 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:220 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:221 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:221 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:222 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:222 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:223 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:223 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:224 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:224 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:206 [ keyboard_event_scan::$15 ] 20,002: zp ZP_BYTE:207 [ keyboard_event_scan::$16 ] 20,002: zp ZP_BYTE:208 [ keyboard_event_scan::event_type#0 ] 20,002: zp ZP_BYTE:209 [ keyboard_event_scan::$23 ] 17,858.93: zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] 2,101.74: zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:199 [ keyboard_event_scan::$0 ] 4: zp ZP_BYTE:201 [ keyboard_event_scan::$3 ] 4: zp ZP_BYTE:203 [ keyboard_event_scan::$6 ] 4: zp ZP_BYTE:205 [ keyboard_event_scan::$9 ] -Uplift Scope [play_collision] 38,173.33: zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 20,002: zp ZP_BYTE:159 [ play_collision::$7 ] 13,378.25: zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 12,223.44: zp ZP_BYTE:52 [ play_collision::c#2 play_collision::c#1 ] 1,615.62: zp ZP_BYTE:158 [ play_collision::i#1 ] 1,371.57: zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 1,126.12: zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp ZP_WORD:156 [ play_collision::playfield_line#0 ] 476.33: zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] 51.62: zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 18: zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 13: zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] 4: zp ZP_BYTE:151 [ play_collision::return#14 ] 4: zp ZP_BYTE:160 [ play_collision::return#13 ] 4: zp ZP_BYTE:162 [ play_collision::return#1 ] 4: zp ZP_BYTE:166 [ play_collision::return#0 ] 4: zp ZP_BYTE:173 [ play_collision::return#10 ] 1.43: zp ZP_BYTE:53 [ play_collision::return#15 ] -Uplift Scope [play_remove_lines] 19,004.21: zp ZP_BYTE:79 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,938.14: zp ZP_BYTE:82 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] 17,501.75: zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp ZP_BYTE:187 [ play_remove_lines::c#0 ] 2,566.89: zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] 1,634.97: zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp ZP_BYTE:168 [ play_remove_lines::return#0 ] -Uplift Scope [play_lock_current] 38,173.33: zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 14,001.4: zp ZP_BYTE:87 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp ZP_BYTE:190 [ play_lock_current::i#1 ] 1,167.83: zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp ZP_WORD:188 [ play_lock_current::playfield_line#0 ] 777.68: zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplift Scope [] 58,858.91: zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 2,131.71: zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 205.41: zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] 197.08: zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 76.7: zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] 63.7: zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] 60.28: zp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] 60.26: zp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] 42.42: zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 32: zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] 30.62: zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#70 ] 29.4: zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] 24: zp ZP_BYTE:15 [ render_screen_render#15 render_screen_render#68 ] 23.17: zp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] 20.4: zp ZP_BYTE:23 [ current_ypos#13 current_ypos#106 current_ypos#107 ] 20.4: zp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] 18.83: zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] 18.6: zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] 17.41: zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 17.13: zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] 15.36: zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] 14.77: zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 14.37: zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] 13.68: zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] 12.82: zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] 12.81: zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] 12.38: zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 11.97: zp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] 11.1: zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] 4.76: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4.17: zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Uplift Scope [render_moving] 2,615.85: zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,835.17: zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] 1,490.13: zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp ZP_BYTE:138 [ render_moving::current_cell#0 ] 202: zp ZP_BYTE:135 [ render_moving::$2 ] 164.12: zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] 110.2: zp ZP_WORD:136 [ render_moving::screen_line#0 ] 98.4: zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] -Uplift Scope [render_next] 1,970.3: zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] 1,787.5: zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] 1,657: zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] 1,001: zp ZP_BYTE:134 [ render_next::cell#0 ] 169.86: zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] 66.87: zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] 1: zp ZP_BYTE:132 [ render_next::$4 ] -Uplift Scope [play_increase_level] 4,004: zp ZP_BYTE:186 [ play_increase_level::b4#0 ] 2,502.5: zp ZP_BYTE:76 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp ZP_BYTE:185 [ play_increase_level::$1 ] -Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:139 [ render_playfield::$2 ] 202: zp ZP_BYTE:140 [ render_playfield::$3 ] 181.8: zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [keyboard_matrix_read] 2,002: zp ZP_BYTE:196 [ keyboard_matrix_read::return#2 ] 1,003: zp ZP_BYTE:195 [ keyboard_matrix_read::rowid#0 ] 334.33: zp ZP_BYTE:210 [ keyboard_matrix_read::return#0 ] -Uplift Scope [render_screen_original] 721.31: zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 699.79: zp ZP_BYTE:116 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 501.65: zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 162.87: zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 99.08: zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 17.42: zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplift Scope [play_spawn_current] 2,002: zp ZP_BYTE:175 [ play_spawn_current::sid_rnd1_return#0 ] 4: zp ZP_BYTE:174 [ play_spawn_current::$2 ] 2: zp ZP_BYTE:171 [ play_spawn_current::current_piece_idx#0 ] 0.07: zp ZP_BYTE:172 [ play_spawn_current::$0 ] -Uplift Scope [main] 202: zp ZP_BYTE:127 [ main::render#1 ] 101: zp ZP_BYTE:124 [ main::key_event#0 ] -Uplift Scope [play_movement] 202: zp ZP_BYTE:126 [ play_movement::return#3 ] 40: zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 9.73: zp ZP_BYTE:125 [ play_movement::key_event#0 ] 4: zp ZP_BYTE:145 [ play_movement::$3 ] 4: zp ZP_BYTE:149 [ play_movement::$4 ] 0.8: zp ZP_BYTE:146 [ play_movement::render#2 ] -Uplift Scope [keyboard_event_get] 202: zp ZP_BYTE:123 [ keyboard_event_get::return#3 ] 38.33: zp ZP_BYTE:89 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplift Scope [play_init] 33: zp ZP_BYTE:212 [ play_init::b4#0 ] 27.5: zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] 23.83: zp ZP_BYTE:95 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:211 [ play_init::$2 ] 13.93: zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ] -Uplift Scope [render_init] 22.79: zp ZP_BYTE:102 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:214 [ render_init::$13 ] 22: zp ZP_BYTE:215 [ render_init::$14 ] 12.83: zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ] -Uplift Scope [render_bcd] 30: zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 22: zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 7.6: zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 4: zp ZP_BYTE:128 [ render_bcd::$5 ] 4: zp ZP_BYTE:129 [ render_bcd::$6 ] 4: zp ZP_BYTE:130 [ render_bcd::$3 ] 4: zp ZP_BYTE:131 [ render_bcd::$4 ] 2: zp ZP_WORD:9 [ render_bcd::offset#6 ] 1: zp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:100 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:213 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplift Scope [play_move_down] 20: zp ZP_BYTE:55 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] 4: zp ZP_BYTE:142 [ play_move_down::return#0 ] 4: zp ZP_BYTE:165 [ play_move_down::$2 ] 4: zp ZP_BYTE:167 [ play_move_down::$12 ] 4: zp ZP_BYTE:169 [ play_move_down::removed#0 ] 2: zp ZP_BYTE:141 [ play_move_down::key_event#0 ] 0.67: zp ZP_BYTE:73 [ play_move_down::return#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:164 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:191 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:193 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:198 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:200 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:202 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:204 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:194 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:217 [ sprites_irq::$0 ] 4: zp ZP_BYTE:220 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:222 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:219 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:221 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:216 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:218 [ sprites_irq::ptr#0 ] +Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:208 [ keyboard_event_scan::$15 ] 20,002: zp ZP_BYTE:209 [ keyboard_event_scan::$16 ] 20,002: zp ZP_BYTE:210 [ keyboard_event_scan::event_type#0 ] 20,002: zp ZP_BYTE:211 [ keyboard_event_scan::$23 ] 17,858.93: zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] 2,101.74: zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] 4: zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] 4: zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] 4: zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] +Uplift Scope [play_collision] 38,006.5: zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 20,002: zp ZP_BYTE:160 [ play_collision::$5 ] 13,378.25: zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] 12,223.44: zp ZP_BYTE:51 [ play_collision::c#2 play_collision::c#1 ] 2,002: zp ZP_BYTE:156 [ play_collision::$14 ] 1,615.62: zp ZP_BYTE:159 [ play_collision::i#1 ] 1,326.38: zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] 1,118.76: zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp ZP_WORD:157 [ play_collision::playfield_line#0 ] 476.33: zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] 51.62: zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 18: zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 4: zp ZP_BYTE:151 [ play_collision::return#14 ] 4: zp ZP_BYTE:161 [ play_collision::return#13 ] 4: zp ZP_BYTE:163 [ play_collision::return#1 ] 4: zp ZP_BYTE:167 [ play_collision::return#0 ] 4: zp ZP_BYTE:174 [ play_collision::return#10 ] 1.43: zp ZP_BYTE:52 [ play_collision::return#15 ] +Uplift Scope [play_lock_current] 38,006.5: zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] 14,001.4: zp ZP_BYTE:86 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp ZP_BYTE:192 [ play_lock_current::i#1 ] 2,002: zp ZP_BYTE:189 [ play_lock_current::$4 ] 1,155: zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] 754.92: zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplift Scope [play_remove_lines] 19,004.21: zp ZP_BYTE:78 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,938.14: zp ZP_BYTE:81 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] 17,501.75: zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp ZP_BYTE:188 [ play_remove_lines::c#0 ] 2,566.89: zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] 1,634.97: zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp ZP_BYTE:169 [ play_remove_lines::return#0 ] +Uplift Scope [] 58,858.91: zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 2,131.71: zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] 193.67: zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 74.29: zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] 61.29: zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] 60.28: zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] 60.26: zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] 42.04: zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 32: zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] 30.62: zp ZP_BYTE:34 [ render_screen_render#22 render_screen_render#70 ] 29.4: zp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] 24: zp ZP_BYTE:15 [ render_screen_render#15 render_screen_render#68 ] 23.17: zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] 20.4: zp ZP_BYTE:23 [ current_ypos#13 current_ypos#106 current_ypos#107 ] 20.4: zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] 18.83: zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] 18.6: zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] 17.41: zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 17.13: zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] 15.36: zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] 14.77: zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 14.1: zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] 13.68: zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] 12.82: zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] 12.81: zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] 12.38: zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 11.97: zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] 10.83: zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] 4.76: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4.17: zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Uplift Scope [render_moving] 2,605.75: zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,835.17: zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] 1,490.13: zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp ZP_BYTE:138 [ render_moving::current_cell#0 ] 202: zp ZP_BYTE:134 [ render_moving::$1 ] 202: zp ZP_BYTE:135 [ render_moving::$6 ] 163.38: zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] 110.2: zp ZP_WORD:136 [ render_moving::screen_line#0 ] 96.71: zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplift Scope [render_next] 1,970.3: zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] 1,787.5: zp ZP_BYTE:22 [ render_next::c#2 render_next::c#1 ] 1,657: zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] 1,001: zp ZP_BYTE:133 [ render_next::cell#0 ] 169.86: zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] 66.87: zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] 1: zp ZP_BYTE:131 [ render_next::$9 ] +Uplift Scope [play_increase_level] 4,004: zp ZP_BYTE:187 [ play_increase_level::$5 ] 2,502.5: zp ZP_BYTE:75 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp ZP_BYTE:186 [ play_increase_level::$1 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:139 [ render_playfield::$2 ] 202: zp ZP_BYTE:140 [ render_playfield::$6 ] 181.8: zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [keyboard_matrix_read] 2,002: zp ZP_BYTE:198 [ keyboard_matrix_read::return#2 ] 1,003: zp ZP_BYTE:197 [ keyboard_matrix_read::rowid#0 ] 334.33: zp ZP_BYTE:212 [ keyboard_matrix_read::return#0 ] +Uplift Scope [render_screen_original] 721.31: zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 699.79: zp ZP_BYTE:115 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 501.65: zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 162.87: zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 99.08: zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 17.42: zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplift Scope [play_spawn_current] 2,002: zp ZP_BYTE:176 [ play_spawn_current::sid_rnd1_return#0 ] 4: zp ZP_BYTE:175 [ play_spawn_current::$1 ] 2: zp ZP_BYTE:172 [ play_spawn_current::current_piece_idx#0 ] 0.07: zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Uplift Scope [main] 202: zp ZP_BYTE:126 [ main::render#1 ] 101: zp ZP_BYTE:123 [ main::key_event#0 ] +Uplift Scope [play_movement] 202: zp ZP_BYTE:125 [ play_movement::return#3 ] 40: zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 9.73: zp ZP_BYTE:124 [ play_movement::key_event#0 ] 4: zp ZP_BYTE:145 [ play_movement::$3 ] 4: zp ZP_BYTE:149 [ play_movement::$4 ] 0.8: zp ZP_BYTE:146 [ play_movement::render#2 ] +Uplift Scope [keyboard_event_get] 202: zp ZP_BYTE:122 [ keyboard_event_get::return#3 ] 38.33: zp ZP_BYTE:88 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [play_init] 33: zp ZP_BYTE:214 [ play_init::$5 ] 27.5: zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] 23.83: zp ZP_BYTE:94 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:213 [ play_init::$4 ] 13.93: zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [render_init] 22.79: zp ZP_BYTE:101 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:216 [ render_init::$14 ] 22: zp ZP_BYTE:217 [ render_init::$15 ] 12.83: zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] +Uplift Scope [render_bcd] 30: zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 22: zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 7.6: zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 4: zp ZP_BYTE:127 [ render_bcd::$5 ] 4: zp ZP_BYTE:128 [ render_bcd::$6 ] 4: zp ZP_BYTE:129 [ render_bcd::$3 ] 4: zp ZP_BYTE:130 [ render_bcd::$4 ] 2: zp ZP_WORD:9 [ render_bcd::offset#6 ] 1: zp ZP_BYTE:11 [ render_bcd::only_low#6 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:99 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:215 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [play_move_down] 20: zp ZP_BYTE:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] 4: zp ZP_BYTE:142 [ play_move_down::return#0 ] 4: zp ZP_BYTE:166 [ play_move_down::$2 ] 4: zp ZP_BYTE:168 [ play_move_down::$12 ] 4: zp ZP_BYTE:170 [ play_move_down::removed#0 ] 2: zp ZP_BYTE:141 [ play_move_down::key_event#0 ] 0.67: zp ZP_BYTE:72 [ play_move_down::return#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:165 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:193 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:195 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:200 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:219 [ sprites_irq::$0 ] 4: zp ZP_BYTE:222 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:224 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:221 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:223 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:218 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:220 [ sprites_irq::ptr#0 ] Uplift Scope [play_move_rotate] 8.89: zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 4: zp ZP_BYTE:148 [ play_move_rotate::return#0 ] 4: zp ZP_BYTE:150 [ play_move_rotate::$5 ] 4: zp ZP_BYTE:152 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:153 [ play_move_rotate::$7 ] 3: zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] 0.67: zp ZP_BYTE:41 [ play_move_rotate::return#2 ] -Uplift Scope [play_update_score] 4: zp ZP_BYTE:176 [ play_update_score::$2 ] 4: zp ZP_BYTE:178 [ play_update_score::$4 ] 4: zp ZP_BYTE:183 [ play_update_score::$5 ] 4: zp ZP_BYTE:184 [ play_update_score::lines_after#0 ] 1.33: zp ZP_DWORD:179 [ play_update_score::add_bcd#0 ] 1.14: zp ZP_BYTE:170 [ play_update_score::removed#0 ] 0.44: zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] -Uplift Scope [play_move_leftright] 4: zp ZP_BYTE:144 [ play_move_leftright::return#0 ] 4: zp ZP_BYTE:161 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:163 [ play_move_leftright::$8 ] 3: zp ZP_BYTE:143 [ play_move_leftright::key_event#0 ] 0.67: zp ZP_BYTE:54 [ play_move_leftright::return#2 ] -Uplift Scope [render_show] 2: zp ZP_BYTE:94 [ render_show::d018val#3 ] +Uplift Scope [play_update_score] 4: zp ZP_BYTE:177 [ play_update_score::$2 ] 4: zp ZP_BYTE:179 [ play_update_score::$9 ] 4: zp ZP_BYTE:184 [ play_update_score::$4 ] 4: zp ZP_BYTE:185 [ play_update_score::lines_after#0 ] 1.33: zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] 1.14: zp ZP_BYTE:171 [ play_update_score::removed#0 ] 0.44: zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Uplift Scope [play_move_leftright] 4: zp ZP_BYTE:144 [ play_move_leftright::return#0 ] 4: zp ZP_BYTE:162 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:164 [ play_move_leftright::$8 ] 3: zp ZP_BYTE:143 [ play_move_leftright::key_event#0 ] 0.67: zp ZP_BYTE:53 [ play_move_leftright::return#2 ] +Uplift Scope [render_show] 2: zp ZP_BYTE:93 [ render_show::d018val#3 ] Uplift Scope [render_score] 0.75: zp ZP_WORD:5 [ render_score::screen#3 ] Uplift Scope [sid_rnd_init] Uplift Scope [render_screen_swap] Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 4695254 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:199 [ keyboard_event_scan::$0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$3 ] zp ZP_BYTE:203 [ keyboard_event_scan::$6 ] zp ZP_BYTE:205 [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 4701542 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] zp ZP_BYTE:207 [ keyboard_event_scan::$9 ] Limited combination testing to 100 combinations of 524288 possible. -Uplifting [play_collision] best 4545254 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:158 [ play_collision::i#1 ] zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:156 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:160 [ play_collision::return#13 ] zp ZP_BYTE:162 [ play_collision::return#1 ] zp ZP_BYTE:166 [ play_collision::return#0 ] zp ZP_BYTE:173 [ play_collision::return#10 ] zp ZP_BYTE:53 [ play_collision::return#15 ] -Limited combination testing to 100 combinations of 322486272 possible. -Uplifting [play_remove_lines] best 4406254 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:187 [ play_remove_lines::c#0 ] zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:168 [ play_remove_lines::return#0 ] +Uplifting [play_collision] best 4551542 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$5 ] zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:156 [ play_collision::$14 ] zp ZP_BYTE:159 [ play_collision::i#1 ] zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:157 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:161 [ play_collision::return#13 ] zp ZP_BYTE:163 [ play_collision::return#1 ] zp ZP_BYTE:167 [ play_collision::return#0 ] zp ZP_BYTE:174 [ play_collision::return#10 ] zp ZP_BYTE:52 [ play_collision::return#15 ] +Limited combination testing to 100 combinations of 429981696 possible. +Uplifting [play_lock_current] best 4457542 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:192 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Limited combination testing to 100 combinations of 2916 possible. +Uplifting [play_remove_lines] best 4318542 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:188 [ play_remove_lines::c#0 ] zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:169 [ play_remove_lines::return#0 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [play_lock_current] best 4316254 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:190 [ play_lock_current::i#1 ] zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:188 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Limited combination testing to 100 combinations of 729 possible. -Uplifting [] best 4316014 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] zp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] reg byte x [ render_screen_render#22 render_screen_render#70 ] reg byte x [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] reg byte a [ render_screen_render#15 render_screen_render#68 ] zp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte x [ current_ypos#13 current_ypos#106 current_ypos#107 ] zp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Uplifting [] best 4318300 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_WORD:69 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] reg byte x [ render_screen_render#22 render_screen_render#70 ] reg byte x [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] reg byte a [ render_screen_render#15 render_screen_render#68 ] zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte x [ current_ypos#13 current_ypos#106 current_ypos#107 ] zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] zp ZP_DWORD:58 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] Limited combination testing to 100 combinations of 1944 possible. -Uplifting [render_moving] best 4301014 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:135 [ render_moving::$2 ] zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] -Limited combination testing to 100 combinations of 3888 possible. -Uplifting [render_next] best 4286010 combination zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$4 ] +Uplifting [render_moving] best 4303300 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:134 [ render_moving::$1 ] zp ZP_BYTE:135 [ render_moving::$6 ] zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Limited combination testing to 100 combinations of 15552 possible. +Uplifting [render_next] best 4288296 combination zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$9 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [play_increase_level] best 4272004 combination reg byte a [ play_increase_level::b4#0 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] -Uplifting [render_playfield] best 4271404 combination zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [play_increase_level] best 4274290 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] +Uplifting [render_playfield] best 4273290 combination zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$6 ] zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [keyboard_matrix_read] best 4259398 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 [render_screen_original] best 4257298 combination zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [play_spawn_current] best 4251279 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$2 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:172 [ play_spawn_current::$0 ] -Uplifting [main] best 4250079 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] -Uplifting [play_movement] best 4249467 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:125 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ] +Uplifting [keyboard_matrix_read] best 4261284 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 [render_screen_original] best 4259184 combination zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [play_spawn_current] best 4253165 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:173 [ play_spawn_current::$7 ] +Uplifting [main] best 4251965 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] +Uplifting [play_movement] best 4251353 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:124 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ] Limited combination testing to 100 combinations of 576 possible. -Uplifting [keyboard_event_get] best 4248561 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [play_init] best 4248351 combination reg byte a [ play_init::b4#0 ] zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$2 ] zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [keyboard_event_get] best 4250447 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [play_init] best 4250237 combination reg byte a [ play_init::$5 ] zp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$4 ] zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [render_init] best 4248161 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ] -Uplifting [render_bcd] best 4248131 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:131 [ render_bcd::$4 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] +Uplifting [render_init] best 4250047 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$14 ] reg byte a [ render_init::$15 ] zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] +Uplifting [render_bcd] best 4250017 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:130 [ render_bcd::$4 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] Limited combination testing to 100 combinations of 1536 possible. -Uplifting [sprites_init] best 4247961 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [play_move_down] best 4247928 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:169 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:73 [ play_move_down::return#3 ] +Uplifting [sprites_init] best 4249847 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [play_move_down] best 4249814 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:170 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:72 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [keyboard_event_pressed] best 4247908 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:200 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:202 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:194 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 4249794 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:202 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [sprites_irq] best 4247884 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:221 [ sprites_irq::ptr#1 ] zp ZP_BYTE:216 [ sprites_irq::ypos#0 ] zp ZP_BYTE:218 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 4249770 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:223 [ sprites_irq::ptr#1 ] zp ZP_BYTE:218 [ sprites_irq::ypos#0 ] zp ZP_BYTE:220 [ sprites_irq::ptr#0 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_rotate] best 4247866 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 4249752 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_update_score] best 4247844 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:179 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:170 [ play_update_score::removed#0 ] zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 4249730 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:171 [ play_update_score::removed#0 ] zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [play_move_leftright] best 4247817 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:54 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 4249703 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:53 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [render_show] best 4247808 combination reg byte a [ render_show::d018val#3 ] -Uplifting [render_score] best 4247808 combination zp ZP_WORD:5 [ render_score::screen#3 ] -Uplifting [sid_rnd_init] best 4247808 combination -Uplifting [render_screen_swap] best 4247808 combination -Uplifting [sprites_irq_init] best 4247808 combination -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Uplifting [] best 4247808 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Uplifting [play_collision] best 4247808 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Uplifting [play_lock_current] best 4247808 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 4097808 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 4097808 combination zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Uplifting [play_lock_current] best 4097808 combination zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Uplifting [play_collision] best 4097808 combination zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] -Uplifting [keyboard_event_scan] best 4097808 combination zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 4097808 combination zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:187 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 4097808 combination zp ZP_BYTE:187 [ play_remove_lines::c#0 ] +Uplifting [render_show] best 4249694 combination reg byte a [ render_show::d018val#3 ] +Uplifting [render_score] best 4249694 combination zp ZP_WORD:5 [ render_score::screen#3 ] +Uplifting [sid_rnd_init] best 4249694 combination +Uplifting [render_screen_swap] best 4249694 combination +Uplifting [sprites_irq_init] best 4249694 combination +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [] best 4249694 combination zp ZP_BYTE:92 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Uplifting [play_collision] best 4249694 combination zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Uplifting [play_lock_current] best 4249694 combination zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:90 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 4099694 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Uplifting [play_remove_lines] best 4099694 combination zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Uplifting [play_lock_current] best 4099694 combination zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] +Uplifting [play_collision] best 4099694 combination zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] +Uplifting [keyboard_event_scan] best 4099694 combination zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 4099694 combination zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:188 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 4099694 combination zp ZP_BYTE:188 [ play_remove_lines::c#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Uplifting [render_moving] best 4097808 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Uplifting [play_remove_lines] best 4097808 combination zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:190 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 4097808 combination zp ZP_BYTE:190 [ play_lock_current::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Uplifting [] best 4097808 combination zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 4097808 combination zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [render_moving] best 4099694 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Uplifting [play_remove_lines] best 4099694 combination zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:192 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 4099694 combination zp ZP_BYTE:192 [ play_lock_current::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Uplifting [] best 4099694 combination zp ZP_BYTE:73 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 4099694 combination zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] -Uplifting [render_playfield] best 4097808 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 4097808 combination zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:158 [ play_collision::i#1 ] -Uplifting [play_collision] best 4097808 combination zp ZP_BYTE:158 [ play_collision::i#1 ] +Uplifting [render_playfield] best 4099694 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:156 [ play_collision::$14 ] +Uplifting [play_collision] best 4095694 combination reg byte a [ play_collision::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 4095694 combination zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:159 [ play_collision::i#1 ] +Uplifting [play_collision] best 4095694 combination zp ZP_BYTE:159 [ play_collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 4097808 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 4095694 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Uplifting [render_moving] best 4097808 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Uplifting [play_collision] best 4097808 combination zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 4097808 combination zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 4097808 combination zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 4097808 combination zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplifting [play_lock_current] best 4097808 combination zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ render_moving::$2 ] -Uplifting [render_moving] best 4097408 combination reg byte a [ render_moving::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Uplifting [] best 4097408 combination zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Uplifting [render_moving] best 4095694 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] +Uplifting [play_collision] best 4095694 combination zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 4095694 combination zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 4095694 combination zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 4095694 combination zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplifting [play_lock_current] best 4095694 combination zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:134 [ render_moving::$1 ] +Uplifting [render_moving] best 4095094 combination reg byte a [ render_moving::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:135 [ render_moving::$6 ] +Uplifting [render_moving] best 4094694 combination reg byte a [ render_moving::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Uplifting [] best 4094694 combination zp ZP_BYTE:67 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 4097408 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 4094694 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] -Uplifting [render_next] best 4097408 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] +Uplifting [render_next] best 4094694 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] -Uplifting [render_moving] best 4097408 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] -Uplifting [render_moving] best 4097408 combination zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +Uplifting [render_moving] best 4094694 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplifting [render_moving] best 4094694 combination zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -Uplifting [] best 4097408 combination zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] -Attempting to uplift remaining variables inzp ZP_BYTE:133 [ render_next::next_piece_char#0 ] -Uplifting [render_next] best 4097408 combination zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Uplifting [] best 4097408 combination zp ZP_BYTE:120 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Uplifting [] best 4097408 combination zp ZP_BYTE:121 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Uplifting [play_collision] best 4097408 combination zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Uplifting [] best 4097408 combination zp ZP_BYTE:72 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Uplifting [] best 4094694 combination zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ render_next::next_piece_char#0 ] +Uplifting [render_next] best 4094694 combination zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Uplifting [] best 4094694 combination zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Uplifting [] best 4094694 combination zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Uplifting [play_collision] best 4094694 combination zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Uplifting [] best 4094694 combination zp ZP_BYTE:71 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Uplifting [play_movement] best 4097408 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] -Uplifting [play_init] best 4097308 combination reg byte x [ play_init::b#2 play_init::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] -Uplifting [] best 4097308 combination zp ZP_BYTE:122 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] -Uplifting [] best 4097308 combination zp ZP_BYTE:118 [ render_screen_showing#0 render_screen_showing#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] -Uplifting [] best 4097308 combination zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Uplifting [play_movement] best 4094694 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_init::b#2 play_init::b#1 ] +Uplifting [play_init] best 4094594 combination reg byte x [ play_init::b#2 play_init::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Uplifting [] best 4094594 combination zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] +Uplifting [] best 4094594 combination zp ZP_BYTE:117 [ render_screen_showing#0 render_screen_showing#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Uplifting [] best 4094594 combination zp ZP_BYTE:64 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 4097292 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 4097292 combination zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 4097292 combination zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Uplifting [play_collision] best 4094578 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 4094578 combination zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:68 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:63 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 4094578 combination zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:74 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 4097292 combination zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] -Uplifting [play_collision] best 4097292 combination zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 4094578 combination zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:62 [ level#33 level#10 level#17 level#19 level#21 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:119 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] -Attempting to uplift remaining variables inzp ZP_BYTE:125 [ play_movement::key_event#0 ] -Uplifting [play_movement] best 4097292 combination zp ZP_BYTE:125 [ play_movement::key_event#0 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ play_movement::key_event#0 ] +Uplifting [play_movement] best 4094578 combination zp ZP_BYTE:124 [ play_movement::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 4097292 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] -Uplifting [sprites_irq] best 4097292 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [play_move_rotate] best 4094578 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [sprites_irq] best 4094578 combination zp ZP_BYTE:116 [ sprites_irq::raster_sprite_gfx_modify#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Uplifting [] best 4097292 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:131 [ render_bcd::$4 ] -Uplifting [render_bcd] best 4097286 combination reg byte a [ render_bcd::$4 ] +Uplifting [] best 4094578 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ render_bcd::$4 ] +Uplifting [render_bcd] best 4094572 combination reg byte a [ render_bcd::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:151 [ play_collision::return#14 ] -Uplifting [play_collision] best 4097280 combination reg byte a [ play_collision::return#14 ] +Uplifting [play_collision] best 4094566 combination reg byte a [ play_collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:153 [ play_move_rotate::$7 ] -Uplifting [play_move_rotate] best 4097274 combination reg byte x [ play_move_rotate::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:160 [ play_collision::return#13 ] -Uplifting [play_collision] best 4097268 combination reg byte a [ play_collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:162 [ play_collision::return#1 ] -Uplifting [play_collision] best 4097262 combination reg byte a [ play_collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:166 [ play_collision::return#0 ] -Uplifting [play_collision] best 4097256 combination reg byte a [ play_collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:168 [ play_remove_lines::return#0 ] -Uplifting [play_remove_lines] best 4097250 combination reg byte a [ play_remove_lines::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:169 [ play_move_down::removed#0 ] -Uplifting [play_move_down] best 4097244 combination reg byte a [ play_move_down::removed#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:173 [ play_collision::return#10 ] -Uplifting [play_collision] best 4097238 combination reg byte a [ play_collision::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:199 [ keyboard_event_scan::$0 ] -Uplifting [keyboard_event_scan] best 4097232 combination reg byte a [ keyboard_event_scan::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:200 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 4097226 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:201 [ keyboard_event_scan::$3 ] -Uplifting [keyboard_event_scan] best 4097220 combination reg byte a [ keyboard_event_scan::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:202 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 4097214 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:203 [ keyboard_event_scan::$6 ] -Uplifting [keyboard_event_scan] best 4097208 combination reg byte a [ keyboard_event_scan::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:204 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 4097202 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:205 [ keyboard_event_scan::$9 ] -Uplifting [keyboard_event_scan] best 4097196 combination reg byte a [ keyboard_event_scan::$9 ] +Uplifting [play_move_rotate] best 4094560 combination reg byte x [ play_move_rotate::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:161 [ play_collision::return#13 ] +Uplifting [play_collision] best 4094554 combination reg byte a [ play_collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:163 [ play_collision::return#1 ] +Uplifting [play_collision] best 4094548 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:167 [ play_collision::return#0 ] +Uplifting [play_collision] best 4094542 combination reg byte a [ play_collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:169 [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 4094536 combination reg byte a [ play_remove_lines::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:170 [ play_move_down::removed#0 ] +Uplifting [play_move_down] best 4094530 combination reg byte a [ play_move_down::removed#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:174 [ play_collision::return#10 ] +Uplifting [play_collision] best 4094524 combination reg byte a [ play_collision::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:201 [ keyboard_event_scan::$0 ] +Uplifting [keyboard_event_scan] best 4094518 combination reg byte a [ keyboard_event_scan::$0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 4094512 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:203 [ keyboard_event_scan::$3 ] +Uplifting [keyboard_event_scan] best 4094506 combination reg byte a [ keyboard_event_scan::$3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 4094500 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:205 [ keyboard_event_scan::$6 ] +Uplifting [keyboard_event_scan] best 4094494 combination reg byte a [ keyboard_event_scan::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 4094488 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:207 [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 4094482 combination reg byte a [ keyboard_event_scan::$9 ] Attempting to uplift remaining variables inzp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] -Uplifting [play_move_rotate] best 4097187 combination reg byte a [ play_move_rotate::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:221 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 4097175 combination reg byte x [ sprites_irq::ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:216 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 4097160 combination reg byte a [ sprites_irq::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:218 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 4097145 combination reg byte x [ sprites_irq::ptr#0 ] +Uplifting [play_move_rotate] best 4094473 combination reg byte a [ play_move_rotate::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:223 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 4094461 combination reg byte x [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:218 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 4094446 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:220 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 4094431 combination reg byte x [ sprites_irq::ptr#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:141 [ play_move_down::key_event#0 ] -Uplifting [play_move_down] best 4097139 combination reg byte a [ play_move_down::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 4097139 combination zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 4097121 combination reg byte a [ keyboard_event_pressed::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_collision::return#15 ] -Uplifting [play_collision] best 4097091 combination reg byte a [ play_collision::return#15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 4097091 combination zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:170 [ play_update_score::removed#0 ] -Uplifting [play_update_score] best 4097085 combination reg byte x [ play_update_score::removed#0 ] +Uplifting [play_move_down] best 4094425 combination reg byte a [ play_move_down::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 4094425 combination zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 4094407 combination reg byte a [ keyboard_event_pressed::return#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ play_collision::return#15 ] +Uplifting [play_collision] best 4094377 combination reg byte a [ play_collision::return#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 4094377 combination zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:171 [ play_update_score::removed#0 ] +Uplifting [play_update_score] best 4094371 combination reg byte x [ play_update_score::removed#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Uplifting [render_bcd] best 4097064 combination reg byte y [ render_bcd::only_low#6 ] +Uplifting [render_bcd] best 4094350 combination reg byte y [ render_bcd::only_low#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:146 [ play_movement::render#2 ] -Uplifting [play_movement] best 4097064 combination zp ZP_BYTE:146 [ play_movement::render#2 ] +Uplifting [play_movement] best 4094350 combination zp ZP_BYTE:146 [ play_movement::render#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_rotate::return#2 ] -Uplifting [play_move_rotate] best 4097055 combination reg byte a [ play_move_rotate::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ play_move_leftright::return#2 ] -Uplifting [play_move_leftright] best 4097046 combination reg byte a [ play_move_leftright::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ play_move_down::return#3 ] -Uplifting [play_move_down] best 4097039 combination reg byte x [ play_move_down::return#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:177 [ play_update_score::lines_before#0 ] -Uplifting [play_update_score] best 4097039 combination zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:172 [ play_spawn_current::$0 ] -Uplifting [play_spawn_current] best 4097039 combination zp ZP_BYTE:172 [ play_spawn_current::$0 ] +Uplifting [play_move_rotate] best 4094341 combination reg byte a [ play_move_rotate::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 4094332 combination reg byte a [ play_move_leftright::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ play_move_down::return#3 ] +Uplifting [play_move_down] best 4094325 combination reg byte x [ play_move_down::return#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 4094325 combination zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:173 [ play_spawn_current::$7 ] +Uplifting [play_spawn_current] best 4094325 combination zp ZP_BYTE:173 [ play_spawn_current::$7 ] Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ render_score::screen#3 ] ] with [ zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6 Coalescing zero page register with common assignment [ zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp ZP_BYTE:146 [ play_movement::render#2 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ render_bcd::offset#6 ] ] with [ zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 ] ] with [ zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] ] with [ zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] ] with [ zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] ] with [ zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] ] with [ zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp ZP_BYTE:172 [ play_spawn_current::$0 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$0 ] ] with [ zp ZP_BYTE:177 [ play_update_score::lines_before#0 ] ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:55 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 ] ] with [ zp ZP_BYTE:82 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] ] with [ zp ZP_BYTE:97 [ play_init::idx#2 play_init::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:100 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:106 [ render_screen_original::y#6 render_screen_original::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] ] with [ zp ZP_BYTE:76 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:83 [ play_lock_current::l#6 play_lock_current::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp ZP_BYTE:173 [ play_spawn_current::$7 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$7 ] ] with [ zp ZP_BYTE:178 [ play_update_score::lines_before#0 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] with [ zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] ] with [ zp ZP_WORD:26 [ current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 ] ] with [ zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:43 [ current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] with [ zp ZP_WORD:188 [ play_lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:95 [ play_init::pli#2 play_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:102 [ render_init::li_1#2 render_init::li_1#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:107 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] with [ zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] with [ zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] ] with [ zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] ] with [ zp ZP_WORD:104 [ render_init::li_2#2 render_init::li_2#1 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:109 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] with [ zp ZP_WORD:136 [ render_moving::screen_line#0 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 ] ] with [ zp ZP_WORD:156 [ play_collision::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 ] ] with [ zp ZP_WORD:157 [ play_collision::playfield_line#0 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] ] with [ zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 ] ] with [ zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] with [ zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] with [ zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] with [ zp ZP_BYTE:77 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] with [ zp ZP_BYTE:84 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:87 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:89 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 ] ] with [ zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] ] with [ zp ZP_BYTE:133 [ render_next::next_piece_char#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 ] ] with [ zp ZP_BYTE:192 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:79 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:85 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] with [ zp ZP_BYTE:91 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 ] ] with [ zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 ] ] with [ zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 ] ] with [ zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:190 [ play_lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:197 [ keyboard_event_scan::row_scan#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] ] with [ zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] -Coalescing zero page register [ zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp ZP_BYTE:187 [ play_remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] ] with [ zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] with [ zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] -Coalescing zero page register [ zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] with [ zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] -Coalescing zero page register [ zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] ] with [ zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ] -Coalescing zero page register [ zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] ] with [ zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] +Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp ZP_BYTE:80 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:192 [ play_lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:28 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] ] with [ zp ZP_BYTE:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] with [ zp ZP_BYTE:188 [ play_remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] ] with [ zp ZP_BYTE:48 [ play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] with [ zp ZP_BYTE:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] with [ zp ZP_BYTE:50 [ play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] ] +Coalescing zero page register [ zp ZP_WORD:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 ] ] with [ zp ZP_WORD:111 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ] +Coalescing zero page register [ zp ZP_WORD:65 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 ] ] with [ zp ZP_WORD:113 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:9 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] -Allocated (was zp ZP_BYTE:28) zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] +Allocated (was zp ZP_BYTE:28) zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:12 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 play_remove_lines::c#0 ] Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] Allocated (was zp ZP_BYTE:31) zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated (was zp ZP_BYTE:32) zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Allocated (was zp ZP_WORD:57) zp ZP_WORD:17 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -Allocated (was zp ZP_DWORD:59) zp ZP_DWORD:19 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] -Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:23 [ level#33 level#10 level#17 level#19 level#21 ] -Allocated (was zp ZP_BYTE:64) zp ZP_BYTE:24 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] -Allocated (was zp ZP_BYTE:65) zp ZP_BYTE:25 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] -Allocated (was zp ZP_WORD:66) zp ZP_WORD:26 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -Allocated (was zp ZP_BYTE:68) zp ZP_BYTE:28 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Allocated (was zp ZP_BYTE:69) zp ZP_BYTE:29 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Allocated (was zp ZP_WORD:70) zp ZP_WORD:30 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] -Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:32 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Allocated (was zp ZP_BYTE:74) zp ZP_BYTE:33 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Allocated (was zp ZP_BYTE:75) zp ZP_BYTE:34 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Allocated (was zp ZP_BYTE:93) zp ZP_BYTE:35 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Allocated (was zp ZP_BYTE:117) zp ZP_BYTE:36 [ sprites_irq::raster_sprite_gfx_modify#0 ] -Allocated (was zp ZP_BYTE:118) zp ZP_BYTE:37 [ render_screen_showing#0 render_screen_showing#1 ] -Allocated (was zp ZP_BYTE:119) zp ZP_BYTE:38 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] -Allocated (was zp ZP_BYTE:120) zp ZP_BYTE:39 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Allocated (was zp ZP_BYTE:121) zp ZP_BYTE:40 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Allocated (was zp ZP_BYTE:122) zp ZP_BYTE:41 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] -Allocated (was zp ZP_BYTE:125) zp ZP_BYTE:42 [ play_movement::key_event#0 ] -Allocated (was zp ZP_BYTE:158) zp ZP_BYTE:43 [ play_collision::i#1 ] -Allocated (was zp ZP_DWORD:179) zp ZP_DWORD:44 [ play_update_score::add_bcd#0 ] +Allocated (was zp ZP_BYTE:32) zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] +Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Allocated (was zp ZP_WORD:56) zp ZP_WORD:17 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +Allocated (was zp ZP_DWORD:58) zp ZP_DWORD:19 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] +Allocated (was zp ZP_BYTE:62) zp ZP_BYTE:23 [ level#33 level#10 level#17 level#19 level#21 ] +Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:24 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#69 current_movedown_slow#10 ] +Allocated (was zp ZP_BYTE:64) zp ZP_BYTE:25 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#64 level_bcd#21 level_bcd#8 ] +Allocated (was zp ZP_WORD:65) zp ZP_WORD:26 [ current_piece#28 current_piece#10 current_piece#15 current_piece#98 current_piece#106 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +Allocated (was zp ZP_BYTE:67) zp ZP_BYTE:28 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Allocated (was zp ZP_BYTE:68) zp ZP_BYTE:29 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Allocated (was zp ZP_WORD:69) zp ZP_WORD:30 [ current_piece_gfx#35 current_piece_gfx#114 current_piece_gfx#18 current_piece_gfx#74 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 ] +Allocated (was zp ZP_BYTE:71) zp ZP_BYTE:32 [ current_xpos#43 current_xpos#124 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Allocated (was zp ZP_BYTE:73) zp ZP_BYTE:33 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Allocated (was zp ZP_BYTE:74) zp ZP_BYTE:34 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Allocated (was zp ZP_BYTE:92) zp ZP_BYTE:35 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Allocated (was zp ZP_BYTE:116) zp ZP_BYTE:36 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Allocated (was zp ZP_BYTE:117) zp ZP_BYTE:37 [ render_screen_showing#0 render_screen_showing#1 ] +Allocated (was zp ZP_BYTE:118) zp ZP_BYTE:38 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Allocated (was zp ZP_BYTE:119) zp ZP_BYTE:39 [ irq_sprite_ypos#0 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Allocated (was zp ZP_BYTE:120) zp ZP_BYTE:40 [ irq_sprite_ptr#0 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Allocated (was zp ZP_BYTE:121) zp ZP_BYTE:41 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Allocated (was zp ZP_BYTE:124) zp ZP_BYTE:42 [ play_movement::key_event#0 ] +Allocated (was zp ZP_BYTE:159) zp ZP_BYTE:43 [ play_collision::i#1 ] +Allocated (was zp ZP_DWORD:180) zp ZP_DWORD:44 [ play_update_score::add_bcd#0 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG1203 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG1239 [574] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG1239 [574] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG1205 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG1241 [576] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG1241 [576] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -17681,7 +17688,7 @@ bbegin: //SEG4 @1 b1: //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -17743,7 +17750,7 @@ main: { //SEG28 asm { sei } sei //SEG29 [17] call render_init - //SEG30 [494] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [496] phi from main::@8 to render_init [phi:main::@8->render_init] render_init_from_b8: jsr render_init //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -17766,7 +17773,7 @@ main: { //SEG38 main::@11 b11: //SEG39 [23] call play_init - //SEG40 [453] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG40 [455] phi from main::@11 to play_init [phi:main::@11->play_init] play_init_from_b11: jsr play_init //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] @@ -17775,12 +17782,12 @@ main: { //SEG42 main::@12 b12: //SEG43 [25] call play_spawn_current - //SEG44 [283] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG44 [284] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] play_spawn_current_from_b12: - //SEG45 [283] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG45 [284] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [283] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [284] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current @@ -17790,10 +17797,10 @@ main: { //SEG48 main::@13 b13: //SEG49 [27] call play_spawn_current - //SEG50 [283] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG50 [284] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] play_spawn_current_from_b13: - //SEG51 [283] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [283] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG51 [284] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG52 [284] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: @@ -17801,10 +17808,10 @@ main: { //SEG54 main::@14 b14: //SEG55 [29] call render_playfield - //SEG56 [149] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG56 [150] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] render_playfield_from_b14: - //SEG57 [149] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 - ldx #$40 + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 + ldx #$20 jsr render_playfield jmp b15 //SEG58 main::@15 @@ -17828,8 +17835,8 @@ main: { //SEG65 [128] phi (byte) current_piece_char#68 = (byte~) current_piece_char#108 [phi:main::@15->render_moving#0] -- register_copy //SEG66 [128] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#120 [phi:main::@15->render_moving#1] -- register_copy //SEG67 [128] phi (byte) current_xpos#59 = (byte~) current_xpos#130 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 - lda #$40 + //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render_33 //SEG69 [128] phi (byte) current_ypos#13 = (byte~) current_ypos#106 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving @@ -17842,11 +17849,11 @@ main: { //SEG73 [107] phi from main::@16 to render_next [phi:main::@16->render_next] render_next_from_b16: //SEG74 [107] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 - lda #$40 + //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 + lda #$20 jsr render_next - //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y @@ -17888,8 +17895,8 @@ main: { //SEG90 [38] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@16->main::@1#12] -- register_copy //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#98 [phi:main::@16->main::@1#13] -- register_copy //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@16->main::@1#14] -- register_copy - //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 - lda #$40 + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@16->main::@1#16] -- vbuz1=vbuc1 lda #0 @@ -17936,7 +17943,7 @@ main: { //SEG118 main::@17 b17: //SEG119 [43] call keyboard_event_scan - //SEG120 [388] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] + //SEG120 [390] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] keyboard_event_scan_from_b17: jsr keyboard_event_scan //SEG121 [44] phi from main::@17 to main::@18 [phi:main::@17->main::@18] @@ -17985,9 +17992,9 @@ main: { //SEG139 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render //SEG140 [56] call render_playfield - //SEG141 [149] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG141 [150] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] render_playfield_from_b7: - //SEG142 [149] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield jmp b21 //SEG143 main::@21 @@ -18068,12 +18075,12 @@ main: { //SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_render sta render_screen_render - //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_show sta render_screen_show jmp breturn @@ -18335,14 +18342,14 @@ render_next: { jmp b1 //SEG280 render_next::@1 b1: - //SEG281 [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuxx_rol_1 + //SEG281 [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuxx_rol_1 txa asl tay //SEG282 [112] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_NEXT_CHARS,x sta next_piece_char - //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) -- pbuz1=pptc1_derefidx_vbuyy + //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy lda PIECES,y sta next_piece_gfx lda PIECES+1,y @@ -18443,15 +18450,13 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label ypos2 = $c + .label ypos = $c .label screen_line = 7 .label xpos = $f .label i = $e .label l = $d - //SEG320 [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa - asl - sta ypos2 + //SEG320 [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx + stx ypos //SEG321 [130] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: //SEG322 [130] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 @@ -18460,19 +18465,19 @@ render_moving: { //SEG323 [130] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG324 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG324 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 //SEG325 [130] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: //SEG326 [130] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy //SEG327 [130] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG328 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 //SEG329 render_moving::@1 b1: - //SEG330 [131] if((byte) render_moving::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 - lda ypos2 - cmp #2+1 + //SEG330 [131] if((byte) render_moving::ypos#2>=(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos + cmp #1+1 bcs b2 jmp b7 //SEG331 render_moving::@7 @@ -18488,11 +18493,8 @@ render_moving: { jmp b3 //SEG335 render_moving::@3 b3: - //SEG336 [134] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 + //SEG336 [134] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + inc ypos //SEG337 [135] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l //SEG338 [136] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 @@ -18506,147 +18508,148 @@ render_moving: { rts //SEG341 render_moving::@2 b2: - //SEG342 [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG342 [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc - adc ypos2 - //SEG343 [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa + adc ypos + //SEG343 [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [140] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG345 [141] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG346 [141] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG347 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG349 [141] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG350 [141] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG353 render_moving::@4 + //SEG354 render_moving::@4 b4: - //SEG354 [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG355 [143] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [144] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b6 - //SEG357 render_moving::@6 + //SEG358 render_moving::@6 b6: - //SEG358 [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y jmp b5 - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [146] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [147] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx inx - //SEG362 [148] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG364 [150] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG365 [150] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [150] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG367 [150] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG368 [150] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [150] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG370 render_playfield::@1 + //SEG371 render_playfield::@1 b1: - //SEG371 [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 - lda l - asl - //SEG372 [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa - stx $ff + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 + txa clc - adc $ff - //SEG373 [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + adc l + //SEG373 [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [154] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG375 [154] 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 + //SEG376 [155] 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 - //SEG376 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG378 [154] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG379 [154] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG382 render_playfield::@2 + //SEG383 render_playfield::@2 b2: - //SEG383 [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [156] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [157] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [158] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [159] 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 + //SEG388 [160] 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 #PLAYFIELD_COLS-1+1 cmp c bne b2_from_b2 jmp b3 - //SEG388 render_playfield::@3 + //SEG389 render_playfield::@3 b3: - //SEG389 [160] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [161] 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 + //SEG391 [162] 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 #PLAYFIELD_LINES-1+1 cmp l bne b1_from_b3 jmp breturn - //SEG391 render_playfield::@return + //SEG392 render_playfield::@return breturn: - //SEG392 [162] return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -18655,141 +18658,141 @@ play_movement: { .label render = 9 .label return = 9 .label key_event = $2a - //SEG394 [163] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG395 [164] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [165] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG397 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa jmp b2 - //SEG397 play_movement::@2 + //SEG398 play_movement::@2 b2: - //SEG398 [166] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa + //SEG399 [167] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa sta render - //SEG399 [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG400 [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG400 [168] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG401 [169] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] breturn_from_b2: breturn_from_b4: - //SEG401 [168] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG402 [168] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG403 [168] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG404 [168] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG402 [169] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG403 [169] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG404 [169] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG405 [169] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy jmp breturn - //SEG405 play_movement::@return + //SEG406 play_movement::@return breturn: - //SEG406 [169] return + //SEG407 [170] return rts - //SEG407 play_movement::@1 + //SEG408 play_movement::@1 b1: - //SEG408 [170] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG409 [171] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG409 [171] call play_move_leftright + //SEG410 [172] call play_move_leftright jsr play_move_leftright - //SEG410 [172] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG411 [173] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 jmp b3 - //SEG411 play_movement::@3 + //SEG412 play_movement::@3 b3: - //SEG412 [173] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG413 [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG413 [174] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG414 [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG414 [175] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG415 [176] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG415 [176] call play_move_rotate + //SEG416 [177] call play_move_rotate jsr play_move_rotate - //SEG416 [177] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG417 [178] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 jmp b4 - //SEG417 play_movement::@4 + //SEG418 play_movement::@4 b4: - //SEG418 [178] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG419 [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG419 [179] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG420 [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return jmp breturn_from_b4 } -//SEG420 play_move_rotate +//SEG421 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte register(A) key_event) play_move_rotate: { .label orientation = $a - //SEG421 [180] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG422 [181] 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 b4 - //SEG422 play_move_rotate::@4 + //SEG423 play_move_rotate::@4 b4: - //SEG423 [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG424 [182] 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 - //SEG424 [182] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG425 [183] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b4: breturn_from_b6: - //SEG425 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG426 [182] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG427 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG426 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG427 [183] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG428 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG428 play_move_rotate::@return + //SEG429 play_move_rotate::@return breturn: - //SEG429 [183] return + //SEG430 [184] return rts - //SEG430 play_move_rotate::@2 + //SEG431 play_move_rotate::@2 b2: - //SEG431 [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_plus_vbuc1 + //SEG432 [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_plus_vbuc1 lax current_orientation axs #-[$10] - //SEG432 [185] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG433 [186] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation - //SEG433 [186] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG434 [187] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] b3_from_b1: b3_from_b2: - //SEG434 [186] 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::@3#0] -- register_copy + //SEG435 [187] 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::@3#0] -- register_copy jmp b3 - //SEG435 play_move_rotate::@3 + //SEG436 play_move_rotate::@3 b3: - //SEG436 [187] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG437 [188] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG437 [188] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG438 [189] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG439 [190] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG439 [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG440 [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_103 lda current_piece+1 sta current_piece_103+1 - //SEG440 [191] call play_collision - //SEG441 [199] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG441 [192] call play_collision + //SEG442 [200] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] play_collision_from_b3: - //SEG442 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG443 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG444 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG445 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG443 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG444 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG445 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG446 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG446 [192] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG447 [193] (byte) play_collision::return#14 ← (byte) play_collision::return#15 jmp b6 - //SEG447 play_move_rotate::@6 + //SEG448 play_move_rotate::@6 b6: - //SEG448 [193] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - //SEG449 [194] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG449 [194] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + //SEG450 [195] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b6 jmp b5 - //SEG450 play_move_rotate::@5 + //SEG451 play_move_rotate::@5 b5: - //SEG451 [195] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG452 [196] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG452 [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG453 [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -18797,41 +18800,41 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG453 [182] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG454 [183] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] breturn_from_b5: - //SEG454 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG455 [182] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG456 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG455 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG456 [183] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG457 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG457 play_move_rotate::@1 + //SEG458 play_move_rotate::@1 b1: - //SEG458 [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_minus_vbuc1 + //SEG459 [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_minus_vbuc1 lax current_orientation axs #$10 - //SEG459 [198] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG460 [199] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation jmp b3_from_b1 } -//SEG460 play_collision +//SEG461 play_collision // 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 -// play_collision(byte zeropage($c) xpos, byte zeropage($b) ypos, byte register(X) orientation) +// play_collision(byte zeropage($b) xpos, byte zeropage($c) ypos, byte register(X) orientation) play_collision: { - .label xpos = $c - .label ypos = $b + .label xpos = $b + .label ypos = $c .label piece_gfx = 5 - .label ypos2 = $b + .label yp = $c .label playfield_line = 7 .label i = $2b - .label col = $f + .label xp = $f .label l = $d .label i_2 = $e .label i_3 = $e .label i_11 = $e .label i_13 = $e - //SEG461 [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG462 [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -18839,8 +18842,6 @@ play_collision: { bcc !+ inc piece_gfx+1 !: - //SEG462 [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 - asl ypos2 //SEG463 [202] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: //SEG464 [202] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 @@ -18849,621 +18850,621 @@ play_collision: { //SEG465 [202] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG466 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG466 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 //SEG467 play_collision::@1 b1: - //SEG468 [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG468 [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda yp + asl + //SEG469 [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG469 [204] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG470 [205] (byte~) play_collision::xp#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos - sta col - //SEG470 [205] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + sta xp + //SEG471 [206] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG471 [205] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG472 [206] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG472 [205] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG473 [205] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG473 [206] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG474 [206] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG474 play_collision::@2 + //SEG475 play_collision::@2 b2: - //SEG475 [206] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG476 [207] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG476 [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG477 [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b7 - //SEG477 play_collision::@7 + //SEG478 play_collision::@7 b7: - //SEG478 [208] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda ypos2 - cmp #2*PLAYFIELD_LINES + //SEG479 [209] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda yp + cmp #PLAYFIELD_LINES bcc b4 - //SEG479 [209] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG480 [210] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] breturn_from_b7: - //SEG480 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG481 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG481 play_collision::@return + //SEG482 play_collision::@return breturn: - //SEG482 [210] return + //SEG483 [211] return rts - //SEG483 play_collision::@4 + //SEG484 play_collision::@4 b4: - //SEG484 [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG485 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 - and col - //SEG485 [212] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + and xp + //SEG486 [213] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG486 [209] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG487 [210] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG487 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG488 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG488 play_collision::@5 + //SEG489 play_collision::@5 b5: - //SEG489 [213] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 - lda col + //SEG490 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG490 [209] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG491 [210] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG491 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG492 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG492 play_collision::@6 + //SEG493 play_collision::@6 b6: - //SEG493 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 - ldy col + //SEG494 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG494 [209] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG495 [210] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG495 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG496 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG496 play_collision::@3 + //SEG497 play_collision::@3 b3: - //SEG497 [215] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG498 [216] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG498 [216] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG499 [217] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG499 [217] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 + //SEG500 [218] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b10 jmp b8 - //SEG500 play_collision::@8 + //SEG501 play_collision::@8 b8: - //SEG501 [218] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG502 [219] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG502 [219] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG503 [220] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG503 [220] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG504 [221] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG504 [209] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG505 [210] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG505 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG506 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG506 play_collision::@9 + //SEG507 play_collision::@9 b9: - //SEG507 [221] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG508 [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG508 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG509 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] b1_from_b9: - //SEG509 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG510 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG511 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG510 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG511 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG512 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG512 play_collision::@10 + //SEG513 play_collision::@10 b10: - //SEG513 [222] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG514 [223] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG514 [205] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG515 [206] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] b2_from_b10: - //SEG515 [205] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG516 [205] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG517 [205] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG516 [206] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG517 [206] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG518 [206] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG518 play_move_leftright +//SEG519 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte register(A) key_event) play_move_leftright: { - //SEG519 [223] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG520 [224] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 // Handle keyboard events cmp #KEY_COMMA beq b1 jmp b2 - //SEG520 play_move_leftright::@2 + //SEG521 play_move_leftright::@2 b2: - //SEG521 [224] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG522 [225] 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_b2 jmp b3 - //SEG522 play_move_leftright::@3 + //SEG523 play_move_leftright::@3 b3: - //SEG523 [225] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG524 [226] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG524 [226] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG525 [227] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG525 [227] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG526 [228] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG526 [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG527 [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_102 lda current_piece+1 sta current_piece_102+1 - //SEG527 [229] call play_collision - //SEG528 [199] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG528 [230] call play_collision + //SEG529 [200] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] play_collision_from_b3: - //SEG529 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG530 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG531 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG532 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG530 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG531 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG532 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG533 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG533 [230] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG534 [231] (byte) play_collision::return#13 ← (byte) play_collision::return#15 jmp b7 - //SEG534 play_move_leftright::@7 + //SEG535 play_move_leftright::@7 b7: - //SEG535 [231] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG536 [232] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG536 [232] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG537 [233] 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_b7 jmp b4 - //SEG537 play_move_leftright::@4 + //SEG538 play_move_leftright::@4 b4: - //SEG538 [233] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG539 [234] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG539 [234] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG540 [235] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] breturn_from_b4: breturn_from_b5: - //SEG540 [234] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG541 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG541 [235] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG542 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG542 [234] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG543 [235] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] breturn_from_b2: breturn_from_b6: breturn_from_b7: - //SEG543 [234] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG544 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG544 [235] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG545 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG545 play_move_leftright::@return + //SEG546 play_move_leftright::@return breturn: - //SEG546 [235] return + //SEG547 [236] return rts - //SEG547 play_move_leftright::@1 + //SEG548 play_move_leftright::@1 b1: - //SEG548 [236] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG549 [237] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG549 [237] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG550 [238] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG550 [238] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG551 [239] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG551 [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG552 [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG552 [240] call play_collision - //SEG553 [199] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG553 [241] call play_collision + //SEG554 [200] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG554 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG555 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG556 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG557 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG555 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG556 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG557 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG558 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG558 [241] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG559 [242] (byte) play_collision::return#1 ← (byte) play_collision::return#15 jmp b6 - //SEG559 play_move_leftright::@6 + //SEG560 play_move_leftright::@6 b6: - //SEG560 [242] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG561 [243] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG561 [243] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG562 [244] 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_b6 jmp b5 - //SEG562 play_move_leftright::@5 + //SEG563 play_move_leftright::@5 b5: - //SEG563 [244] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG564 [245] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b5 } -//SEG564 play_move_down +//SEG565 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { - //SEG565 [245] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG566 [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG566 [246] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG567 [247] 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 - //SEG567 [247] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG568 [248] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] b4_from_play_move_down: jmp b4 - //SEG568 play_move_down::@4 + //SEG569 play_move_down::@4 b4: - //SEG569 [248] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG570 [249] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] b1_from_b4: - //SEG570 [248] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG571 [249] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG571 [248] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG572 [249] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG572 [248] 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 + //SEG573 [249] 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 - //SEG573 play_move_down::@1 + //SEG574 play_move_down::@1 b1: - //SEG574 [249] call keyboard_event_pressed - //SEG575 [377] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG575 [250] call keyboard_event_pressed + //SEG576 [379] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG576 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG577 [379] 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 - //SEG577 [250] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG578 [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 jmp b12 - //SEG578 play_move_down::@12 + //SEG579 play_move_down::@12 b12: - //SEG579 [251] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG580 [252] 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 + //SEG580 [252] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG581 [253] 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_b12 jmp b5 - //SEG581 play_move_down::@5 + //SEG582 play_move_down::@5 b5: - //SEG582 [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG583 [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b5 jmp b6 - //SEG583 play_move_down::@6 + //SEG584 play_move_down::@6 b6: - //SEG584 [254] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG585 [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG585 [255] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG586 [256] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] b2_from_b12: b2_from_b5: b2_from_b6: - //SEG586 [255] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG587 [256] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy jmp b2 - //SEG587 play_move_down::@2 + //SEG588 play_move_down::@2 b2: - //SEG588 [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG589 [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3_from_b2 jmp b7 - //SEG589 play_move_down::@7 + //SEG590 play_move_down::@7 b7: - //SEG590 [257] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG591 [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG591 [258] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG592 [259] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] b3_from_b2: b3_from_b7: - //SEG592 [258] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG593 [259] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy jmp b3 - //SEG593 play_move_down::@3 + //SEG594 play_move_down::@3 b3: - //SEG594 [259] 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 + //SEG595 [260] 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_b3 jmp b8 - //SEG595 play_move_down::@8 + //SEG596 play_move_down::@8 b8: - //SEG596 [260] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG597 [261] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG597 [261] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG598 [262] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG598 [262] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG599 [263] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG599 [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG600 [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG600 [264] call play_collision - //SEG601 [199] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG601 [265] call play_collision + //SEG602 [200] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] play_collision_from_b8: - //SEG602 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG603 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG604 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG605 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG603 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG604 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG605 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG606 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG606 [265] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG607 [266] (byte) play_collision::return#0 ← (byte) play_collision::return#15 jmp b13 - //SEG607 play_move_down::@13 + //SEG608 play_move_down::@13 b13: - //SEG608 [266] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG609 [267] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 + //SEG609 [267] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG610 [268] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b10 - //SEG610 [268] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG611 [269] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] b9_from_b13: jmp b9 - //SEG611 play_move_down::@9 + //SEG612 play_move_down::@9 b9: - //SEG612 [269] call play_lock_current + //SEG613 [270] call play_lock_current jsr play_lock_current - //SEG613 [270] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG614 [271] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] b14_from_b9: jmp b14 - //SEG614 play_move_down::@14 + //SEG615 play_move_down::@14 b14: - //SEG615 [271] call play_remove_lines - //SEG616 [337] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG616 [272] call play_remove_lines + //SEG617 [338] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] play_remove_lines_from_b14: jsr play_remove_lines - //SEG617 [272] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 + //SEG618 [273] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 lda play_remove_lines.removed jmp b15 - //SEG618 play_move_down::@15 + //SEG619 play_move_down::@15 b15: - //SEG619 [273] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG620 [274] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG620 [274] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG621 [275] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG621 [275] call play_update_score + //SEG622 [276] call play_update_score jsr play_update_score - //SEG622 [276] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG623 [277] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] b16_from_b15: jmp b16 - //SEG623 play_move_down::@16 + //SEG624 play_move_down::@16 b16: - //SEG624 [277] call play_spawn_current - //SEG625 [283] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG625 [278] call play_spawn_current + //SEG626 [284] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] play_spawn_current_from_b16: - //SEG626 [283] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG627 [283] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG627 [284] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG628 [284] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG628 [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG629 [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG629 [279] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] + //SEG630 [280] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] b11_from_b16: - //SEG630 [279] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy - //SEG631 [279] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy - //SEG632 [279] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy - //SEG633 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy - //SEG634 [279] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG631 [280] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy + //SEG632 [280] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy + //SEG633 [280] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy + //SEG634 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy + //SEG635 [280] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG635 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy - //SEG636 [279] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy - //SEG637 [279] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy - //SEG638 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy - //SEG639 [279] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy - //SEG640 [279] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy - //SEG641 [279] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy - //SEG642 [279] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy + //SEG636 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy + //SEG637 [280] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy + //SEG638 [280] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy + //SEG639 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy + //SEG640 [280] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy + //SEG641 [280] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy + //SEG642 [280] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy + //SEG643 [280] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy jmp b11 - //SEG643 play_move_down::@11 + //SEG644 play_move_down::@11 b11: - //SEG644 [280] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG645 [281] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] breturn_from_b11: - //SEG645 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG646 [280] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG647 [280] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG648 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG649 [280] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG650 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG651 [280] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG652 [280] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG653 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG654 [280] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG655 [280] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG656 [280] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG657 [280] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG658 [280] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG646 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG647 [281] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG648 [281] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG649 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG650 [281] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG651 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG652 [281] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG653 [281] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG654 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG655 [281] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG656 [281] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG657 [281] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG658 [281] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG659 [281] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG659 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG660 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG660 [280] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG661 [281] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] breturn_from_b3: - //SEG661 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG662 [280] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG663 [280] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG664 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG665 [280] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG666 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG667 [280] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG668 [280] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG669 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG670 [280] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG671 [280] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG672 [280] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG673 [280] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG674 [280] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG675 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG662 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG663 [281] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG664 [281] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG665 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG666 [281] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG667 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG668 [281] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG669 [281] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG670 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG671 [281] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG672 [281] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG673 [281] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG674 [281] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG675 [281] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG676 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG676 play_move_down::@return + //SEG677 play_move_down::@return breturn: - //SEG677 [281] return + //SEG678 [282] return rts - //SEG678 play_move_down::@10 + //SEG679 play_move_down::@10 b10: - //SEG679 [282] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 + //SEG680 [283] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG680 [279] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG681 [280] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] b11_from_b10: - //SEG681 [279] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG682 [279] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG683 [279] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG684 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG685 [279] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG686 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG687 [279] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG688 [279] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG689 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG690 [279] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG691 [279] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG692 [279] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG693 [279] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG682 [280] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG683 [280] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG684 [280] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG685 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG686 [280] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG687 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG688 [280] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG689 [280] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG690 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG691 [280] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG692 [280] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG693 [280] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG694 [280] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG694 play_spawn_current +//SEG695 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { - .label _0 = 4 + .label _7 = 4 .label piece_idx = $21 - //SEG695 [284] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG696 [285] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current ldx next_piece_idx - //SEG696 [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG697 [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl - sta _0 - //SEG697 [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + sta _7 + //SEG698 [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG698 [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _0 + //SEG699 [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG699 [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG700 [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG700 [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG701 [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG701 [290] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 + //SEG702 [291] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG702 [291] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG703 [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _0 + //SEG704 [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _7 lda PIECES,y sta current_piece_104 lda PIECES+1,y sta current_piece_104+1 - //SEG704 [293] call play_collision - //SEG705 [199] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG705 [294] call play_collision + //SEG706 [200] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG706 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG707 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG708 [199] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG707 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG708 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG709 [200] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG709 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG710 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG710 [294] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG711 [295] (byte) play_collision::return#10 ← (byte) play_collision::return#15 jmp b4 - //SEG711 play_spawn_current::@4 + //SEG712 play_spawn_current::@4 b4: - //SEG712 [295] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - //SEG713 [296] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG713 [296] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + //SEG714 [297] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b5_from_b4 - //SEG714 [297] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG715 [298] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] b1_from_b4: - //SEG715 [297] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG716 [298] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG716 play_spawn_current::@1 + //SEG717 play_spawn_current::@1 b1: - //SEG717 [298] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG718 [299] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG718 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG719 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG719 play_spawn_current::@2 + //SEG720 play_spawn_current::@2 b2: - //SEG720 [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG721 [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 jmp breturn - //SEG721 play_spawn_current::@return + //SEG722 play_spawn_current::@return breturn: - //SEG722 [300] return + //SEG723 [301] return rts - //SEG723 play_spawn_current::sid_rnd1 + //SEG724 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG724 [301] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG725 [302] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp b3 - //SEG725 play_spawn_current::@3 + //SEG726 play_spawn_current::@3 b3: - //SEG726 [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG727 [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG727 [298] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG728 [299] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] b2_from_b3: - //SEG728 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG729 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG729 [303] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG730 [304] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] b5_from_b4: jmp b5 - //SEG730 play_spawn_current::@5 + //SEG731 play_spawn_current::@5 b5: - //SEG731 [297] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG732 [298] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] b1_from_b5: - //SEG732 [297] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG733 [298] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG733 play_update_score +//SEG734 play_update_score // Update the score based on the number of lines removed // play_update_score(byte register(X) removed) play_update_score: { .label lines_before = 4 .label add_bcd = $2c - //SEG734 [304] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG735 [305] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_play_update_score jmp b1 - //SEG735 play_update_score::@1 + //SEG736 play_update_score::@1 b1: - //SEG736 [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG737 [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG737 [306] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuaa_band_vbuc1 + //SEG738 [307] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG738 [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG739 [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG739 [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG740 [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -19473,9 +19474,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG740 asm { sed } + //SEG741 asm { sed } sed - //SEG741 [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG742 [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -19483,7 +19484,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG742 [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG743 [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -19497,108 +19498,108 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG743 asm { cld } + //SEG744 asm { cld } cld - //SEG744 [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 + //SEG745 [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG745 [314] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 -- vbuaa=vbuaa_band_vbuc1 + //SEG746 [315] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG746 [315] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG747 [316] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn_from_b1 - //SEG747 [316] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG748 [317] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] b2_from_b1: jmp b2 - //SEG748 play_update_score::@2 + //SEG749 play_update_score::@2 b2: - //SEG749 [317] call play_increase_level + //SEG750 [318] call play_increase_level jsr play_increase_level - //SEG750 [318] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG751 [319] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] breturn_from_play_update_score: breturn_from_b1: breturn_from_b2: - //SEG751 [318] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG752 [318] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG753 [318] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG754 [318] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG755 [318] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG752 [319] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG753 [319] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG754 [319] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG755 [319] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG756 [319] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy jmp breturn - //SEG756 play_update_score::@return + //SEG757 play_update_score::@return breturn: - //SEG757 [319] return + //SEG758 [320] return rts } -//SEG758 play_increase_level +//SEG759 play_increase_level // Increase the level play_increase_level: { - //SEG759 [320] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG760 [321] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG760 [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG761 [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b1_from_play_increase_level jmp b3 - //SEG761 play_increase_level::@3 + //SEG762 play_increase_level::@3 b3: - //SEG762 [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG763 [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG763 [323] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG764 [324] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] b1_from_b3: - //SEG764 [323] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG765 [324] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG765 [323] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG766 [324] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b1_from_play_increase_level: - //SEG766 [323] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG767 [324] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b1 - //SEG767 play_increase_level::@1 + //SEG768 play_increase_level::@1 b1: - //SEG768 [324] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG769 [325] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG769 [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG770 [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG770 [326] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG771 [327] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b2_from_b1 jmp b4 - //SEG771 play_increase_level::@4 + //SEG772 play_increase_level::@4 b4: - //SEG772 [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG773 [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG773 [328] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG774 [329] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] b2_from_b1: b2_from_b4: - //SEG774 [328] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG775 [329] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG775 play_increase_level::@2 + //SEG776 play_increase_level::@2 b2: - //SEG776 asm { sed } + //SEG777 asm { sed } // Increase the score values gained sed - //SEG777 [330] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG778 [331] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] b5_from_b2: - //SEG778 [330] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 + //SEG779 [331] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 ldx #0 jmp b5 - //SEG779 [330] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG780 [331] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] b5_from_b5: - //SEG780 [330] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG781 [331] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy jmp b5 - //SEG781 play_increase_level::@5 + //SEG782 play_increase_level::@5 b5: - //SEG782 [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG783 [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG783 [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG784 [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -19613,23 +19614,23 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG784 [333] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG785 [334] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG785 [334] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG786 [335] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b5_from_b5 jmp b6 - //SEG786 play_increase_level::@6 + //SEG787 play_increase_level::@6 b6: - //SEG787 asm { cld } + //SEG788 asm { cld } cld jmp breturn - //SEG788 play_increase_level::@return + //SEG789 play_increase_level::@return breturn: - //SEG789 [336] return + //SEG790 [337] return rts } -//SEG790 play_remove_lines +//SEG791 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -19640,315 +19641,314 @@ play_remove_lines: { .label y = 4 .label removed = 9 .label full = $b - //SEG791 [338] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG792 [339] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG792 [338] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG793 [339] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG793 [338] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG794 [339] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG794 [338] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG795 [339] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG795 [338] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG796 [339] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 // Read all lines and rewrite them - //SEG796 [338] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG797 [339] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] b1_from_b6: - //SEG797 [338] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG798 [338] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG799 [338] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG800 [338] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG798 [339] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG799 [339] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG800 [339] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG801 [339] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG801 play_remove_lines::@1 + //SEG802 play_remove_lines::@1 b1: - //SEG802 [339] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG803 [340] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG803 [339] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG804 [340] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG804 [339] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG805 [340] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG805 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG806 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG806 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG807 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG807 [339] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG808 [340] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG808 [339] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG809 [339] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG810 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG811 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG809 [340] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG810 [340] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG811 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG812 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG812 play_remove_lines::@2 + //SEG813 play_remove_lines::@2 b2: - //SEG813 [340] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG814 [341] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG814 [341] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG815 [342] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG815 [342] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG816 [343] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b9_from_b2 - //SEG816 [343] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG817 [344] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG817 [343] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG818 [344] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG818 play_remove_lines::@3 + //SEG819 play_remove_lines::@3 b3: - //SEG819 [344] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG820 [345] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG820 [345] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG821 [346] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG821 [346] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG822 [347] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG822 [347] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG823 [348] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2_from_b3 jmp b4 - //SEG823 play_remove_lines::@4 + //SEG824 play_remove_lines::@4 b4: - //SEG824 [348] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG825 [349] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6_from_b4 jmp b5 - //SEG825 play_remove_lines::@5 + //SEG826 play_remove_lines::@5 b5: - //SEG826 [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG827 [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[PLAYFIELD_COLS] - //SEG827 [350] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG828 [351] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG828 [351] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG829 [352] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] b6_from_b4: b6_from_b5: - //SEG829 [351] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG830 [351] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG830 [352] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG831 [352] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy jmp b6 - //SEG831 play_remove_lines::@6 + //SEG832 play_remove_lines::@6 b6: - //SEG832 [352] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG833 [353] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG833 [353] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG834 [354] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1_from_b6 - //SEG834 [354] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG835 [355] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b7_from_b6: b7_from_b8: - //SEG835 [354] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG836 [355] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy jmp b7 // Write zeros in the rest of the lines - //SEG836 play_remove_lines::@7 + //SEG837 play_remove_lines::@7 b7: - //SEG837 [355] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG838 [356] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 jmp breturn - //SEG838 play_remove_lines::@return + //SEG839 play_remove_lines::@return breturn: - //SEG839 [356] return + //SEG840 [357] return rts - //SEG840 play_remove_lines::@8 + //SEG841 play_remove_lines::@8 b8: - //SEG841 [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG842 [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG842 [358] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG843 [359] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b7_from_b8 - //SEG843 [359] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG844 [360] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] b9_from_b2: jmp b9 - //SEG844 play_remove_lines::@9 + //SEG845 play_remove_lines::@9 b9: - //SEG845 [343] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG846 [344] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] b3_from_b9: - //SEG846 [343] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG847 [344] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG847 play_lock_current +//SEG848 play_lock_current // Lock the current piece onto the playfield play_lock_current: { - .label ypos2 = $10 + .label yp = $10 .label playfield_line = 5 - .label col = $a + .label xp = $a .label i = $b .label l = 4 .label i_2 = 9 .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG848 [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 - asl ypos2 - //SEG849 [361] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG849 [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#100 + //SEG850 [362] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG850 [361] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG851 [362] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG851 [361] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG852 [362] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG852 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG853 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG853 play_lock_current::@1 + //SEG854 play_lock_current::@1 b1: - //SEG854 [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG855 [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda yp + asl + //SEG856 [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG855 [363] (byte) play_lock_current::col#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG857 [365] (byte) play_lock_current::xp#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos - sta col - //SEG856 [364] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + sta xp + //SEG858 [366] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG857 [364] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG859 [366] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG858 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG859 [364] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG860 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG861 [366] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG860 play_lock_current::@2 + //SEG862 play_lock_current::@2 b2: - //SEG861 [365] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG863 [367] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG862 [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG864 [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG863 play_lock_current::@4 + //SEG865 play_lock_current::@4 b4: - //SEG864 [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG866 [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char - ldy col + ldy xp sta (playfield_line),y jmp b3 - //SEG865 play_lock_current::@3 + //SEG867 play_lock_current::@3 b3: - //SEG866 [368] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG867 [369] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG868 [370] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG869 [371] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG868 [370] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG870 [372] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b7 jmp b5 - //SEG869 play_lock_current::@5 + //SEG871 play_lock_current::@5 b5: - //SEG870 [371] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG871 [372] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG872 [373] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG873 [374] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG872 [373] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG874 [375] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 jmp breturn - //SEG873 play_lock_current::@return + //SEG875 play_lock_current::@return breturn: - //SEG874 [374] return + //SEG876 [376] return rts - //SEG875 play_lock_current::@6 + //SEG877 play_lock_current::@6 b6: - //SEG876 [375] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG878 [377] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG877 [361] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG879 [362] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] b1_from_b6: - //SEG878 [361] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG879 [361] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG880 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG880 [362] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG881 [362] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG882 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG881 play_lock_current::@7 + //SEG883 play_lock_current::@7 b7: - //SEG882 [376] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG884 [378] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG883 [364] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG885 [366] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] b2_from_b7: - //SEG884 [364] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG885 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG886 [364] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG886 [366] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG887 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG888 [366] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG887 keyboard_event_pressed +//SEG889 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed // keyboard_event_pressed(byte zeropage(9) keycode) keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG888 [378] (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 + //SEG890 [380] (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 - //SEG889 [379] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG891 [381] (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 - //SEG890 [380] (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 + //SEG892 [382] (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 - //SEG891 [381] (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 + //SEG893 [383] (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 - //SEG892 keyboard_event_pressed::@return + //SEG894 keyboard_event_pressed::@return breturn: - //SEG893 [382] return + //SEG895 [384] return rts } -//SEG894 keyboard_event_get +//SEG896 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG895 [383] 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 + //SEG897 [385] 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 b1 - //SEG896 keyboard_event_get::@1 + //SEG898 keyboard_event_get::@1 b1: - //SEG897 [384] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG899 [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG898 [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG900 [387] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldy keyboard_events_size ldx keyboard_events,y - //SEG899 [386] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG901 [388] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] breturn_from_b1: - //SEG900 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG901 [386] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG902 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG903 [388] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG902 [386] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG904 [388] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG903 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG904 [386] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG905 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG906 [388] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff jmp breturn - //SEG905 keyboard_event_get::@return + //SEG907 keyboard_event_get::@return breturn: - //SEG906 [387] return + //SEG908 [389] return rts } -//SEG907 keyboard_event_scan +//SEG909 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -19957,258 +19957,258 @@ keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG908 [389] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + //SEG910 [391] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] b7_from_keyboard_event_scan: - //SEG909 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG910 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG911 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG912 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG911 [389] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG913 [391] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 lda #0 sta row jmp b7 - //SEG912 [389] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG914 [391] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] b7_from_b8: - //SEG913 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG914 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG915 [389] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG915 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG917 [391] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp b7 - //SEG916 keyboard_event_scan::@7 + //SEG918 keyboard_event_scan::@7 b7: - //SEG917 [390] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG919 [392] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG918 [391] call keyboard_matrix_read + //SEG920 [393] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG919 [392] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG921 [394] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b19 - //SEG920 keyboard_event_scan::@19 + //SEG922 keyboard_event_scan::@19 b19: - //SEG921 [393] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG923 [395] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG922 [394] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG924 [396] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b9_from_b19 jmp b16 - //SEG923 keyboard_event_scan::@16 + //SEG925 keyboard_event_scan::@16 b16: - //SEG924 [395] (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 + //SEG926 [397] (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 lax keycode axs #-[8] stx keycode - //SEG925 [396] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG927 [398] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] b8_from_b15: b8_from_b16: - //SEG926 [396] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG927 [396] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG928 [398] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG929 [398] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp b8 - //SEG928 keyboard_event_scan::@8 + //SEG930 keyboard_event_scan::@8 b8: - //SEG929 [397] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG931 [399] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG930 [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG932 [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7_from_b8 - //SEG931 [399] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG933 [401] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] b17_from_b8: jmp b17 - //SEG932 keyboard_event_scan::@17 + //SEG934 keyboard_event_scan::@17 b17: - //SEG933 [400] call keyboard_event_pressed - //SEG934 [377] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG935 [402] call keyboard_event_pressed + //SEG936 [379] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] keyboard_event_pressed_from_b17: - //SEG935 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG937 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG936 [401] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG938 [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 jmp b20 - //SEG937 keyboard_event_scan::@20 + //SEG939 keyboard_event_scan::@20 b20: - //SEG938 [402] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - //SEG939 [403] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 + //SEG940 [404] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + //SEG941 [405] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1_from_b20 - //SEG940 [404] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG942 [406] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] b18_from_b20: jmp b18 - //SEG941 keyboard_event_scan::@18 + //SEG943 keyboard_event_scan::@18 b18: - //SEG942 [405] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG944 [407] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] b1_from_b18: b1_from_b20: jmp b1 - //SEG943 keyboard_event_scan::@1 + //SEG945 keyboard_event_scan::@1 b1: - //SEG944 [406] call keyboard_event_pressed - //SEG945 [377] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG946 [408] call keyboard_event_pressed + //SEG947 [379] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG946 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG948 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG947 [407] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG949 [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 jmp b21 - //SEG948 keyboard_event_scan::@21 + //SEG950 keyboard_event_scan::@21 b21: - //SEG949 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - //SEG950 [409] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 + //SEG951 [410] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + //SEG952 [411] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b21 - //SEG951 [410] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG953 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] b4_from_b21: jmp b4 - //SEG952 keyboard_event_scan::@4 + //SEG954 keyboard_event_scan::@4 b4: - //SEG953 [411] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG955 [413] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] b2_from_b21: b2_from_b4: jmp b2 - //SEG954 keyboard_event_scan::@2 + //SEG956 keyboard_event_scan::@2 b2: - //SEG955 [412] call keyboard_event_pressed - //SEG956 [377] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG957 [414] call keyboard_event_pressed + //SEG958 [379] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] keyboard_event_pressed_from_b2: - //SEG957 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG959 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG958 [413] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG960 [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 jmp b22 - //SEG959 keyboard_event_scan::@22 + //SEG961 keyboard_event_scan::@22 b22: - //SEG960 [414] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - //SEG961 [415] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 + //SEG962 [416] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + //SEG963 [417] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b22 - //SEG962 [416] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG964 [418] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] b5_from_b22: jmp b5 - //SEG963 keyboard_event_scan::@5 + //SEG965 keyboard_event_scan::@5 b5: - //SEG964 [417] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG966 [419] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] b3_from_b22: b3_from_b5: jmp b3 - //SEG965 keyboard_event_scan::@3 + //SEG967 keyboard_event_scan::@3 b3: - //SEG966 [418] call keyboard_event_pressed - //SEG967 [377] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG968 [420] call keyboard_event_pressed + //SEG969 [379] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] keyboard_event_pressed_from_b3: - //SEG968 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG970 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG969 [419] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG971 [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 jmp b23 - //SEG970 keyboard_event_scan::@23 + //SEG972 keyboard_event_scan::@23 b23: - //SEG971 [420] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - //SEG972 [421] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG973 [422] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + //SEG974 [423] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG973 [422] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG975 [424] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] b6_from_b23: jmp b6 - //SEG974 keyboard_event_scan::@6 + //SEG976 keyboard_event_scan::@6 b6: jmp breturn - //SEG975 keyboard_event_scan::@return + //SEG977 keyboard_event_scan::@return breturn: - //SEG976 [423] return + //SEG978 [425] return rts // Something has changed on the keyboard row - check each column - //SEG977 [424] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG979 [426] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] b9_from_b10: - //SEG978 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG979 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG980 [424] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG980 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG981 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG982 [426] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp b9 - //SEG981 [424] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG983 [426] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b9_from_b19: - //SEG982 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG983 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG984 [424] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 + //SEG984 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [426] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 jmp b9 - //SEG985 keyboard_event_scan::@9 + //SEG987 keyboard_event_scan::@9 b9: - //SEG986 [425] (byte~) keyboard_event_scan::$15 ← (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 + //SEG988 [427] (byte~) keyboard_event_scan::$15 ← (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 - //SEG987 [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG989 [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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 - //SEG988 [427] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG990 [429] if((byte~) keyboard_event_scan::$16==(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_b9 jmp b12 - //SEG989 keyboard_event_scan::@12 + //SEG991 keyboard_event_scan::@12 b12: - //SEG990 [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG992 [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10_from_b12 jmp b13 - //SEG991 keyboard_event_scan::@13 + //SEG993 keyboard_event_scan::@13 b13: - //SEG992 [429] (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 + //SEG994 [431] (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 - //SEG993 [430] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG995 [432] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 jmp b14 - //SEG994 keyboard_event_scan::@14 + //SEG996 keyboard_event_scan::@14 b14: - //SEG995 [431] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG997 [433] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG996 [432] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG998 [434] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG997 [433] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG999 [435] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] b10_from_b11: b10_from_b12: b10_from_b14: b10_from_b9: - //SEG998 [433] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1000 [435] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG999 keyboard_event_scan::@10 + //SEG1001 keyboard_event_scan::@10 b10: - //SEG1000 [434] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1001 [435] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1003 [437] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1002 [436] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG1004 [438] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b9_from_b10 jmp b15 - //SEG1003 keyboard_event_scan::@15 + //SEG1005 keyboard_event_scan::@15 b15: - //SEG1004 [437] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1006 [439] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8_from_b15 - //SEG1005 keyboard_event_scan::@11 + //SEG1007 keyboard_event_scan::@11 b11: - //SEG1006 [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuaa=vbuz1_bor_vbuc1 + //SEG1008 [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG1007 [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1009 [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa // Key released ldy keyboard_events_size sta keyboard_events,y - //SEG1008 [440] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [442] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10_from_b11 } -//SEG1009 keyboard_matrix_read +//SEG1011 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -20216,107 +20216,107 @@ keyboard_event_scan: { // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. // keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG1010 [441] *((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 + //SEG1012 [443] *((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 - //SEG1011 [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1013 [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG1012 keyboard_matrix_read::@return + //SEG1014 keyboard_matrix_read::@return breturn: - //SEG1013 [443] return + //SEG1015 [445] return rts } -//SEG1014 render_show +//SEG1016 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f - //SEG1015 [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1017 [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1016 [445] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1018 [447] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1017 render_show::toD0182 + //SEG1019 render_show::toD0182 toD0182: - //SEG1018 [446] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1020 [448] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] b1_from_toD0182: - //SEG1019 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1021 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0182_return jmp b1 - //SEG1020 render_show::@1 + //SEG1022 render_show::@1 b1: - //SEG1021 [447] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1023 [449] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1022 [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1024 [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1023 [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1025 [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1024 [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1026 [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG1025 render_show::@return + //SEG1027 render_show::@return breturn: - //SEG1026 [451] return + //SEG1028 [453] return rts - //SEG1027 [452] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1029 [454] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1028 render_show::toD0181 + //SEG1030 render_show::toD0181 toD0181: - //SEG1029 [446] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1031 [448] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] b1_from_toD0181: - //SEG1030 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1032 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b1 } -//SEG1031 play_init +//SEG1033 play_init // Initialize play data tables play_init: { .label pli = 5 .label idx = 2 - //SEG1032 [454] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1034 [456] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1033 [454] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1035 [456] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1034 [454] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1036 [456] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1035 [454] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 + //SEG1037 [456] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG1036 [454] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1038 [456] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1037 [454] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1038 [454] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1039 [454] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1039 [456] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1040 [456] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1041 [456] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1040 play_init::@1 + //SEG1042 play_init::@1 b1: - //SEG1041 [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG1043 [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1042 [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1044 [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 lda pli sta playfield_lines,x lda pli+1 sta playfield_lines+1,x - //SEG1043 [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG1045 [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda idx sta playfield_lines_idx,y - //SEG1044 [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1046 [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -20324,42 +20324,42 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1045 [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1047 [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1046 [460] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy + //SEG1048 [462] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG1047 [461] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1049 [463] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG1048 play_init::@2 + //SEG1050 play_init::@2 b2: - //SEG1049 [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1051 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1050 [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1052 [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1051 [464] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1053 [466] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] b3_from_b2: - //SEG1052 [464] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 + //SEG1054 [466] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 // Set the initial score add values - //SEG1053 [464] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1055 [466] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] b3_from_b3: - //SEG1054 [464] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1056 [466] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy jmp b3 - //SEG1055 play_init::@3 + //SEG1057 play_init::@3 b3: - //SEG1056 [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG1058 [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1057 [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1059 [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -20369,231 +20369,231 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1058 [467] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1060 [469] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1059 [468] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1061 [470] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b3_from_b3 jmp breturn - //SEG1060 play_init::@return + //SEG1062 play_init::@return breturn: - //SEG1061 [469] return + //SEG1063 [471] return rts } -//SEG1062 sprites_irq_init +//SEG1064 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1063 asm { sei } + //SEG1065 asm { sei } sei - //SEG1064 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1066 [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1065 asm { ldaCIA1_INTERRUPT } + //SEG1067 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1066 [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1068 [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1067 [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1069 [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1068 [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1069 [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1071 [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1070 [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1071 [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1072 [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1074 [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1073 asm { cli } + //SEG1075 asm { cli } cli jmp breturn - //SEG1074 sprites_irq_init::@return + //SEG1076 sprites_irq_init::@return breturn: - //SEG1075 [481] return + //SEG1077 [483] return rts } -//SEG1076 sprites_init +//SEG1078 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG1077 [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 + //SEG1079 [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1078 [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1080 [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1079 [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1081 [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1080 [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1082 [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1081 [486] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1083 [488] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1082 [486] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1084 [488] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1083 [486] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG1085 [488] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG1084 [486] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1086 [488] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1085 [486] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1086 [486] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1087 [488] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1088 [488] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1087 sprites_init::@1 + //SEG1089 sprites_init::@1 b1: - //SEG1088 [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG1090 [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1089 [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1091 [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG1090 [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG1092 [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG1091 [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1093 [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1092 [491] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG1094 [493] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG1093 [492] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1095 [494] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1_from_b1 jmp breturn - //SEG1094 sprites_init::@return + //SEG1096 sprites_init::@return breturn: - //SEG1095 [493] return + //SEG1097 [495] return rts } -//SEG1096 render_init +//SEG1098 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)/$40 .label li_1 = 5 .label li_2 = 7 jmp vicSelectGfxBank1 - //SEG1097 render_init::vicSelectGfxBank1 + //SEG1099 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1098 [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1100 [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1099 [496] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1101 [498] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1100 render_init::vicSelectGfxBank1_toDd001 + //SEG1102 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1101 render_init::vicSelectGfxBank1_@1 + //SEG1103 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1102 [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1104 [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG1103 render_init::@2 + //SEG1105 render_init::@2 b2: - //SEG1104 [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1106 [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1105 [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1107 [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1106 [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1108 [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1107 [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1109 [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1108 [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1110 [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1109 [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1110 [504] call render_screen_original - //SEG1111 [517] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1112 [506] call render_screen_original + //SEG1113 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] render_screen_original_from_b2: - //SEG1112 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1114 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1113 [505] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1115 [507] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: jmp b3 - //SEG1114 render_init::@3 + //SEG1116 render_init::@3 b3: - //SEG1115 [506] call render_screen_original - //SEG1116 [517] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1117 [508] call render_screen_original + //SEG1118 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1117 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1119 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [507] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1120 [509] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] b1_from_b3: - //SEG1119 [507] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1121 [509] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1120 [507] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1122 [509] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1121 [507] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1123 [509] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1122 [507] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1124 [509] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1123 [507] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1124 [507] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1125 [507] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1125 [509] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1126 [509] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1127 [509] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1126 render_init::@1 + //SEG1128 render_init::@1 b1: - //SEG1127 [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1129 [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1128 [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1129 [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1131 [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1132 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1131 [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1133 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -20601,7 +20601,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1132 [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1134 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -20609,18 +20609,18 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1133 [514] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1135 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1134 [515] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1136 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1135 render_init::@return + //SEG1137 render_init::@return breturn: - //SEG1136 [516] return + //SEG1138 [518] return rts } -//SEG1137 render_screen_original +//SEG1139 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 // render_screen_original(byte* zeropage($11) screen) @@ -20631,358 +20631,358 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1138 [518] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1140 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1139 [518] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1141 [520] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1140 [518] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1142 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1141 [518] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1143 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1142 [518] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1144 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1143 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1145 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1144 [518] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1146 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] b1_from_b5: - //SEG1145 [518] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1146 [518] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1147 [518] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1148 [518] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1149 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1147 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1148 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1149 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1150 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1151 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1150 render_screen_original::@1 + //SEG1152 render_screen_original::@1 b1: - //SEG1151 [519] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1153 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1152 [519] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1154 [521] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1153 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1154 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1155 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1156 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1155 [519] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1157 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1156 [519] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1157 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1158 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1158 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1159 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1160 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1159 render_screen_original::@2 + //SEG1161 render_screen_original::@2 b2: - //SEG1160 [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1162 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1161 [521] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1163 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1162 [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1164 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1163 [523] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1165 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1164 [524] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1166 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1165 [525] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1167 [527] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b2 - //SEG1166 [526] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1168 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1167 [526] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1168 [526] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1169 [526] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1169 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1170 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1171 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1172 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1173 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1172 render_screen_original::@3 + //SEG1174 render_screen_original::@3 b3: - //SEG1173 [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1175 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1176 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1177 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1176 [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1177 [531] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1179 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1178 [532] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1179 [533] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1181 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1180 [534] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1182 [536] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3_from_b3 - //SEG1181 [535] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1183 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1182 [535] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1183 [535] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1184 [535] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1184 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1185 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1186 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1185 render_screen_original::@4 + //SEG1187 render_screen_original::@4 b4: - //SEG1186 [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1188 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1187 [537] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1189 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1190 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1189 [539] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1191 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1190 [540] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1192 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1191 [541] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1193 [543] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4_from_b4 jmp b5 - //SEG1192 render_screen_original::@5 + //SEG1194 render_screen_original::@5 b5: - //SEG1193 [542] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1195 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1194 [543] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1196 [545] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b5 jmp breturn - //SEG1195 render_screen_original::@return + //SEG1197 render_screen_original::@return breturn: - //SEG1196 [544] return + //SEG1198 [546] return rts } -//SEG1197 sid_rnd_init +//SEG1199 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1198 [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG1200 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1199 [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1201 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1200 sid_rnd_init::@return + //SEG1202 sid_rnd_init::@return breturn: - //SEG1201 [547] return + //SEG1203 [549] return rts } -//SEG1202 sprites_irq +//SEG1204 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = $24 - //SEG1203 entry interrupt(HARDWARE_CLOBBER) + //SEG1205 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1204 asm { cld } + //SEG1206 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1205 [549] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1207 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG1206 [550] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1208 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1207 [551] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1208 [552] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1210 [554] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1211 [555] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1210 [554] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1212 [556] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1211 [555] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1213 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify jmp b8 - //SEG1212 sprites_irq::@8 + //SEG1214 sprites_irq::@8 b8: - //SEG1213 [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1215 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG1214 sprites_irq::@9 + //SEG1216 sprites_irq::@9 b9: - //SEG1215 [557] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1217 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1216 [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1218 [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG1217 sprites_irq::@10 + //SEG1219 sprites_irq::@10 b10: - //SEG1218 [559] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1219 [560] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1221 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1222 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1221 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1222 [563] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1224 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1225 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG1224 sprites_irq::@2 + //SEG1226 sprites_irq::@2 b2: - //SEG1225 [565] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1227 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1226 [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1228 [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG1227 sprites_irq::@6 + //SEG1229 sprites_irq::@6 b6: - //SEG1228 [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1230 [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG1229 sprites_irq::@7 + //SEG1231 sprites_irq::@7 b7: - //SEG1230 [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1232 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1231 [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1233 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1232 [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1234 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1233 [571] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1235 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG1234 [571] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1236 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy jmp b5 - //SEG1235 sprites_irq::@5 + //SEG1237 sprites_irq::@5 b5: - //SEG1236 [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1238 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1237 [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1239 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1238 sprites_irq::@return + //SEG1240 sprites_irq::@return breturn: - //SEG1239 [574] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1241 [576] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1240 sprites_irq::@4 + //SEG1242 sprites_irq::@4 b4: - //SEG1241 [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1243 [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1242 [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1244 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1243 [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1245 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1244 [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1246 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG1245 sprites_irq::@3 + //SEG1247 sprites_irq::@3 b3: - //SEG1246 [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1247 [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1249 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1248 [581] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1250 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG1249 sprites_irq::toSpritePtr2 + //SEG1251 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG1250 sprites_irq::@11 + //SEG1252 sprites_irq::@11 b11: - //SEG1251 [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1253 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG1252 sprites_irq::@1 + //SEG1254 sprites_irq::@1 b1: - //SEG1253 [583] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1254 [584] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG1256 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1257 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1256 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1257 [587] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG1259 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1260 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } @@ -21293,7 +21293,7 @@ Replacing instruction ldy #0 with TAY Removing instruction lda #0 Removing instruction lda current_orientation Removing instruction lda #0 -Removing instruction ldy _0 +Removing instruction ldy _7 Removing instruction lda #0 Removing instruction lda c Removing instruction lda #0 @@ -21956,34 +21956,34 @@ FINAL SYMBOL TABLE (byte*) current_piece#28 current_piece zp ZP_WORD:26 6.0 (byte*~) current_piece#98 current_piece zp ZP_WORD:26 4.0 (byte) current_piece_char -(byte) current_piece_char#10 current_piece_char zp ZP_BYTE:28 187.38888888888889 +(byte) current_piece_char#10 current_piece_char zp ZP_BYTE:28 183.9818181818182 (byte~) current_piece_char#108 current_piece_char#108 zp ZP_BYTE:11 4.0 (byte~) current_piece_char#109 current_piece_char#109 zp ZP_BYTE:11 22.0 (byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 3.4324324324324325 (byte) current_piece_char#29 current_piece_char zp ZP_BYTE:28 6.0 (byte) current_piece_char#5 current_piece_char zp ZP_BYTE:28 0.25806451612903225 -(byte) current_piece_char#68 current_piece_char#68 zp ZP_BYTE:11 50.699999999999996 +(byte) current_piece_char#68 current_piece_char#68 zp ZP_BYTE:11 48.285714285714285 (byte*) current_piece_gfx -(byte*) current_piece_gfx#114 current_piece_gfx zp ZP_WORD:30 187.38888888888889 +(byte*) current_piece_gfx#114 current_piece_gfx zp ZP_WORD:30 183.9818181818182 (byte*~) current_piece_gfx#120 current_piece_gfx#120 zp ZP_WORD:5 2.0 (byte*~) current_piece_gfx#121 current_piece_gfx#121 zp ZP_WORD:5 11.0 (byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:30 6.047619047619047 (byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:30 0.37037037037037035 (byte*) current_piece_gfx#21 current_piece_gfx zp ZP_WORD:30 1.3333333333333333 (byte*) current_piece_gfx#35 current_piece_gfx zp ZP_WORD:30 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 50.699999999999996 +(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 48.285714285714285 (byte*) current_piece_gfx#7 current_piece_gfx zp ZP_WORD:30 4.0 (byte*) current_piece_gfx#74 current_piece_gfx zp ZP_WORD:30 0.26666666666666666 (byte) current_xpos (byte) current_xpos#103 current_xpos zp ZP_BYTE:32 0.3448275862068966 -(byte) current_xpos#124 current_xpos zp ZP_BYTE:32 20.75925925925926 +(byte) current_xpos#124 current_xpos zp ZP_BYTE:32 20.38181818181818 (byte~) current_xpos#130 current_xpos#130 zp ZP_BYTE:10 1.3333333333333333 (byte~) current_xpos#131 current_xpos#131 zp ZP_BYTE:10 7.333333333333333 (byte) current_xpos#19 current_xpos zp ZP_BYTE:32 6.047619047619047 (byte) current_xpos#22 current_xpos zp ZP_BYTE:32 0.7999999999999999 (byte) current_xpos#26 current_xpos zp ZP_BYTE:32 0.4666666666666666 (byte) current_xpos#43 current_xpos zp ZP_BYTE:32 6.0 -(byte) current_xpos#59 current_xpos#59 zp ZP_BYTE:10 5.7 +(byte) current_xpos#59 current_xpos#59 zp ZP_BYTE:10 5.428571428571429 (byte) current_xpos#6 current_xpos zp ZP_BYTE:32 4.0 (byte) current_xpos#8 current_xpos zp ZP_BYTE:32 4.0 (byte) current_ypos @@ -22176,7 +22176,8 @@ FINAL SYMBOL TABLE (byte~) next_piece_idx#84 reg byte x 4.0 (byte~) next_piece_idx#85 reg byte x 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 reg byte a 20002.0 +(byte) play_collision::$14 reg byte a 2002.0 +(byte~) play_collision::$5 reg byte a 20002.0 (label) play_collision::@1 (label) play_collision::@10 (label) play_collision::@2 @@ -22191,19 +22192,15 @@ FINAL SYMBOL TABLE (byte) play_collision::c (byte) play_collision::c#1 reg byte x 10001.0 (byte) play_collision::c#2 reg byte x 2222.4444444444443 -(byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:15 5000.5 -(byte) play_collision::col#2 col zp ZP_BYTE:15 6375.75 -(byte~) play_collision::col#9 col zp ZP_BYTE:15 2002.0 (byte) play_collision::i (byte) play_collision::i#1 i zp ZP_BYTE:43 1615.6153846153845 (byte~) play_collision::i#11 i#11 zp ZP_BYTE:14 2002.0 (byte~) play_collision::i#13 i#13 zp ZP_BYTE:14 20002.0 (byte) play_collision::i#2 i#2 zp ZP_BYTE:14 15502.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 667.3333333333334 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 500.5 (byte) play_collision::l (byte) play_collision::l#1 l zp ZP_BYTE:13 1001.0 -(byte) play_collision::l#6 l zp ZP_BYTE:13 125.125 +(byte) play_collision::l#6 l zp ZP_BYTE:13 117.76470588235294 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 @@ -22221,26 +22218,30 @@ FINAL SYMBOL TABLE (byte) play_collision::return#13 reg byte a 4.0 (byte) play_collision::return#14 reg byte a 4.0 (byte) play_collision::return#15 reg byte a 1.4285714285714284 +(byte) play_collision::xp +(byte) play_collision::xp#1 xp zp ZP_BYTE:15 5000.5 +(byte) play_collision::xp#2 xp zp ZP_BYTE:15 6375.75 +(byte~) play_collision::xp#9 xp zp ZP_BYTE:15 2002.0 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp ZP_BYTE:12 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#2 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#3 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#4 xpos zp ZP_BYTE:12 1.3333333333333333 -(byte) play_collision::xpos#6 xpos zp ZP_BYTE:12 45.95454545454545 +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#4 xpos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::xpos#6 xpos zp ZP_BYTE:11 45.95454545454545 +(byte) play_collision::yp +(byte) play_collision::yp#0 yp zp ZP_BYTE:12 6.0 +(byte) play_collision::yp#1 yp zp ZP_BYTE:12 500.5 +(byte) play_collision::yp#2 yp zp ZP_BYTE:12 812.875 (byte) play_collision::ypos -(byte) play_collision::ypos#0 ypos zp ZP_BYTE:11 1.0 -(byte) play_collision::ypos#1 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#2 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#3 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#4 ypos zp ZP_BYTE:11 2.0 -(byte) play_collision::ypos#5 ypos zp ZP_BYTE:11 6.0 -(byte) play_collision::ypos2 -(byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 500.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 867.0666666666667 +(byte) play_collision::ypos#0 ypos zp ZP_BYTE:12 1.0 +(byte) play_collision::ypos#1 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#2 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#3 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#4 ypos zp ZP_BYTE:12 2.0 (void()) play_increase_level() (byte~) play_increase_level::$1 reg byte a 4.0 +(byte) play_increase_level::$5 reg byte a 4004.0 (label) play_increase_level::@1 (label) play_increase_level::@2 (label) play_increase_level::@3 @@ -22251,10 +22252,9 @@ FINAL SYMBOL TABLE (byte) play_increase_level::b (byte) play_increase_level::b#1 reg byte x 1501.5 (byte) play_increase_level::b#2 reg byte x 1001.0 -(byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 reg byte a 4004.0 (void()) play_init() -(byte~) play_init::$2 reg byte x 22.0 +(byte) play_init::$4 reg byte x 22.0 +(byte) play_init::$5 reg byte a 33.0 (label) play_init::@1 (label) play_init::@2 (label) play_init::@3 @@ -22262,8 +22262,6 @@ FINAL SYMBOL TABLE (byte) play_init::b (byte) play_init::b#1 reg byte x 16.5 (byte) play_init::b#2 reg byte x 11.0 -(byte) play_init::b4 -(byte) play_init::b4#0 reg byte a 33.0 (byte) play_init::idx (byte) play_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 (byte) play_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 @@ -22274,6 +22272,7 @@ FINAL SYMBOL TABLE (byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5 (byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25 (void()) play_lock_current() +(byte) play_lock_current::$4 reg byte a 2002.0 (label) play_lock_current::@1 (label) play_lock_current::@2 (label) play_lock_current::@3 @@ -22285,25 +22284,25 @@ FINAL SYMBOL TABLE (byte) play_lock_current::c (byte) play_lock_current::c#1 reg byte x 10001.0 (byte) play_lock_current::c#2 reg byte x 4000.4 -(byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:10 2002.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:10 5000.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:10 7751.0 (byte) play_lock_current::i (byte) play_lock_current::i#1 i zp ZP_BYTE:11 2333.6666666666665 (byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 15502.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 667.3333333333334 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 500.5 (byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 2002.0 (byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 20002.0 (byte) play_lock_current::l (byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 154.0 (byte*) play_lock_current::playfield_line (byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 1100.2 -(byte) play_lock_current::ypos2 -(byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:16 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 500.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 273.1818181818182 +(byte) play_lock_current::xp +(byte) play_lock_current::xp#0 xp zp ZP_BYTE:10 2002.0 +(byte) play_lock_current::xp#1 xp zp ZP_BYTE:10 5000.5 +(byte) play_lock_current::xp#2 xp zp ZP_BYTE:10 7751.0 +(byte) play_lock_current::yp +(byte) play_lock_current::yp#0 yp zp ZP_BYTE:16 4.0 +(byte) play_lock_current::yp#1 yp zp ZP_BYTE:16 500.5 +(byte) play_lock_current::yp#2 yp zp ZP_BYTE:16 250.41666666666669 (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 @@ -22431,8 +22430,8 @@ FINAL SYMBOL TABLE (byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 (byte) play_remove_lines::y#8 y zp ZP_BYTE:4 133.46666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$0 $0 zp ZP_BYTE:4 0.06666666666666667 -(byte~) play_spawn_current::$2 reg byte a 4.0 +(byte~) play_spawn_current::$1 reg byte a 4.0 +(byte) play_spawn_current::$7 $7 zp ZP_BYTE:4 0.06666666666666667 (label) play_spawn_current::@1 (label) play_spawn_current::@2 (label) play_spawn_current::@3 @@ -22450,7 +22449,7 @@ FINAL SYMBOL TABLE (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 reg byte a 4.0 (byte~) play_update_score::$4 reg byte a 4.0 -(byte~) play_update_score::$5 reg byte a 4.0 +(byte) play_update_score::$9 reg byte a 4.0 (label) play_update_score::@1 (label) play_update_score::@2 (label) play_update_score::@return @@ -22503,8 +22502,8 @@ FINAL SYMBOL TABLE (byte*) render_bcd::screen_pos#2 screen_pos zp ZP_WORD:7 4.0 (byte*) render_bcd::screen_pos#3 screen_pos zp ZP_WORD:7 2.0 (void()) render_init() -(byte~) render_init::$13 reg byte a 22.0 -(byte~) render_init::$14 reg byte a 22.0 +(byte) render_init::$14 reg byte a 22.0 +(byte) render_init::$15 reg byte a 22.0 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 @@ -22531,7 +22530,8 @@ FINAL SYMBOL TABLE (byte) render_init::vicSelectGfxBank1_toDd001_return (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_CHARSET#0/(byte/signed byte/word/signed word/dword/signed dword) $40 (void()) render_moving() -(byte~) render_moving::$2 reg byte a 202.0 +(byte~) render_moving::$1 reg byte a 202.0 +(byte) render_moving::$6 reg byte a 202.0 (label) render_moving::@1 (label) render_moving::@2 (label) render_moving::@3 @@ -22548,24 +22548,24 @@ FINAL SYMBOL TABLE (byte) render_moving::i (byte) render_moving::i#1 i zp ZP_BYTE:14 202.0 (byte) render_moving::i#2 i zp ZP_BYTE:14 500.5 -(byte) render_moving::i#3 i zp ZP_BYTE:14 60.599999999999994 +(byte) render_moving::i#3 i zp ZP_BYTE:14 50.5 (byte) render_moving::i#4 i zp ZP_BYTE:14 1552.0 (byte) render_moving::i#8 i zp ZP_BYTE:14 300.75 (byte) render_moving::l (byte) render_moving::l#1 l zp ZP_BYTE:13 151.5 -(byte) render_moving::l#4 l zp ZP_BYTE:13 12.625 +(byte) render_moving::l#4 l zp ZP_BYTE:13 11.882352941176471 (byte*) render_moving::screen_line (byte*) render_moving::screen_line#0 screen_line zp ZP_WORD:7 110.19999999999999 (byte) render_moving::xpos (byte) render_moving::xpos#0 xpos zp ZP_BYTE:15 202.0 (byte) render_moving::xpos#1 xpos zp ZP_BYTE:15 667.3333333333334 (byte) render_moving::xpos#2 xpos zp ZP_BYTE:15 620.8 -(byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:12 4.0 -(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:12 67.33333333333333 -(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:12 27.06666666666667 +(byte) render_moving::ypos +(byte) render_moving::ypos#0 ypos zp ZP_BYTE:12 4.0 +(byte) render_moving::ypos#1 ypos zp ZP_BYTE:12 67.33333333333333 +(byte) render_moving::ypos#2 ypos zp ZP_BYTE:12 25.375 (void()) render_next() -(byte~) render_next::$4 reg byte y 1.0 +(byte) render_next::$9 reg byte y 1.0 (label) render_next::@1 (label) render_next::@2 (label) render_next::@3 @@ -22600,7 +22600,7 @@ FINAL SYMBOL TABLE (byte*) render_next::screen_next_area#5 screen_next_area zp ZP_WORD:7 684.1666666666667 (void()) render_playfield() (byte~) render_playfield::$2 reg byte a 202.0 -(byte~) render_playfield::$3 reg byte a 202.0 +(byte) render_playfield::$6 reg byte a 202.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -22687,7 +22687,7 @@ FINAL SYMBOL TABLE (byte) render_screen_render#15 reg byte a 13.0 (byte) render_screen_render#18 render_screen_render zp ZP_BYTE:3 0.923076923076923 (byte) render_screen_render#22 reg byte x 8.615384615384615 -(byte) render_screen_render#33 render_screen_render#33 zp ZP_BYTE:9 5.6 +(byte) render_screen_render#33 render_screen_render#33 zp ZP_BYTE:9 5.333333333333333 (byte~) render_screen_render#68 reg byte a 11.0 (byte~) render_screen_render#69 render_screen_render#69 zp ZP_BYTE:9 5.5 (byte~) render_screen_render#70 reg byte x 22.0 @@ -22800,7 +22800,7 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$0 play_update_score::lines_before#0 ] +zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$7 play_update_score::lines_before#0 ] zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] reg byte y [ render_bcd::only_low#6 ] @@ -22810,12 +22810,12 @@ reg byte x [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] zp ZP_BYTE:9 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] reg byte x [ render_next::c#2 render_next::c#1 ] reg byte x [ current_ypos#13 current_ypos#106 current_ypos#107 ] -zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:12 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 play_remove_lines::c#0 ] zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] reg byte x [ render_screen_render#22 render_screen_render#70 ] reg byte a [ play_move_rotate::return#2 ] @@ -22824,7 +22824,7 @@ reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#15 ] reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] zp ZP_WORD:17 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] zp ZP_DWORD:19 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] zp ZP_BYTE:23 [ level#33 level#10 level#17 level#19 level#21 ] @@ -22866,12 +22866,13 @@ reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] -reg byte y [ render_next::$4 ] +reg byte y [ render_next::$9 ] reg byte a [ render_next::cell#0 ] -reg byte a [ render_moving::$2 ] +reg byte a [ render_moving::$1 ] +reg byte a [ render_moving::$6 ] reg byte a [ render_moving::current_cell#0 ] reg byte a [ render_playfield::$2 ] -reg byte a [ render_playfield::$3 ] +reg byte a [ render_playfield::$6 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] @@ -22884,8 +22885,9 @@ reg byte x [ play_move_rotate::$5 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$2 ] reg byte x [ play_move_rotate::$7 ] +reg byte a [ play_collision::$14 ] zp ZP_BYTE:43 [ play_collision::i#1 ] -reg byte a [ play_collision::$7 ] +reg byte a [ play_collision::$5 ] reg byte a [ play_collision::return#13 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_collision::return#1 ] @@ -22899,15 +22901,16 @@ reg byte a [ play_move_down::removed#0 ] reg byte x [ play_update_score::removed#0 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] reg byte a [ play_collision::return#10 ] -reg byte a [ play_spawn_current::$2 ] +reg byte a [ play_spawn_current::$1 ] reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_update_score::$2 ] -reg byte a [ play_update_score::$4 ] +reg byte a [ play_update_score::$9 ] zp ZP_DWORD:44 [ play_update_score::add_bcd#0 ] -reg byte a [ play_update_score::$5 ] +reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] reg byte a [ play_increase_level::$1 ] -reg byte a [ play_increase_level::b4#0 ] +reg byte a [ play_increase_level::$5 ] +reg byte a [ play_lock_current::$4 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ] @@ -22926,11 +22929,11 @@ reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] reg byte a [ keyboard_matrix_read::return#0 ] -reg byte x [ play_init::$2 ] -reg byte a [ play_init::b4#0 ] +reg byte x [ play_init::$4 ] +reg byte a [ play_init::$5 ] reg byte x [ sprites_init::s2#0 ] -reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] +reg byte a [ render_init::$15 ] reg byte a [ sprites_irq::ypos#0 ] reg byte x [ sprites_irq::$0 ] reg byte x [ sprites_irq::ptr#0 ] @@ -22941,7 +22944,7 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 3348847 +Score: 3346133 //SEG0 File Comments // Tetris Game for the Commodore 64 @@ -23109,7 +23112,7 @@ Score: 3348847 bbegin: //SEG4 @1 //SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 - // The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. + // The screen currently being showed to the user. $00 for screen 1 / $20 for screen 2. lda #0 sta render_screen_showing //SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -23154,7 +23157,7 @@ main: { //SEG28 asm { sei } sei //SEG29 [17] call render_init - //SEG30 [494] phi from main::@8 to render_init [phi:main::@8->render_init] + //SEG30 [496] phi from main::@8 to render_init [phi:main::@8->render_init] jsr render_init //SEG31 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] //SEG32 main::@9 @@ -23167,31 +23170,31 @@ main: { //SEG37 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] //SEG38 main::@11 //SEG39 [23] call play_init - //SEG40 [453] phi from main::@11 to play_init [phi:main::@11->play_init] + //SEG40 [455] phi from main::@11 to play_init [phi:main::@11->play_init] jsr play_init //SEG41 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] //SEG42 main::@12 //SEG43 [25] call play_spawn_current - //SEG44 [283] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] - //SEG45 [283] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG44 [284] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current] + //SEG45 [284] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG46 [283] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [284] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1 sta next_piece_idx jsr play_spawn_current //SEG47 [26] phi from main::@12 to main::@13 [phi:main::@12->main::@13] //SEG48 main::@13 //SEG49 [27] call play_spawn_current - //SEG50 [283] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] - //SEG51 [283] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy - //SEG52 [283] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy + //SEG50 [284] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current] + //SEG51 [284] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@13->play_spawn_current#0] -- register_copy + //SEG52 [284] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy jsr play_spawn_current //SEG53 [28] phi from main::@13 to main::@14 [phi:main::@13->main::@14] //SEG54 main::@14 //SEG55 [29] call render_playfield - //SEG56 [149] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] - //SEG57 [149] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 - ldx #$40 + //SEG56 [150] phi from main::@14 to render_playfield [phi:main::@14->render_playfield] + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1 + ldx #$20 jsr render_playfield //SEG58 main::@15 //SEG59 [30] (byte~) current_ypos#106 ← (byte) current_ypos#6 -- vbuxx=vbuz1 @@ -23212,8 +23215,8 @@ main: { //SEG65 [128] phi (byte) current_piece_char#68 = (byte~) current_piece_char#108 [phi:main::@15->render_moving#0] -- register_copy //SEG66 [128] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#120 [phi:main::@15->render_moving#1] -- register_copy //SEG67 [128] phi (byte) current_xpos#59 = (byte~) current_xpos#130 [phi:main::@15->render_moving#2] -- register_copy - //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 - lda #$40 + //SEG68 [128] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render_33 //SEG69 [128] phi (byte) current_ypos#13 = (byte~) current_ypos#106 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving @@ -23223,11 +23226,11 @@ main: { //SEG72 [36] call render_next //SEG73 [107] phi from main::@16 to render_next [phi:main::@16->render_next] //SEG74 [107] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@16->render_next#0] -- register_copy - //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 - lda #$40 + //SEG75 [107] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 + lda #$20 jsr render_next - //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG76 [37] (byte*~) current_piece#98 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y @@ -23260,8 +23263,8 @@ main: { //SEG90 [38] phi (byte) current_piece_char#10 = (byte) current_piece_char#5 [phi:main::@16->main::@1#12] -- register_copy //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#98 [phi:main::@16->main::@1#13] -- register_copy //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@16->main::@1#14] -- register_copy - //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 - lda #$40 + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:main::@16->main::@1#15] -- vbuz1=vbuc1 + lda #$20 sta render_screen_render //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@16->main::@1#16] -- vbuz1=vbuc1 lda #0 @@ -23298,7 +23301,7 @@ main: { //SEG117 [42] phi from main::@3 to main::@17 [phi:main::@3->main::@17] //SEG118 main::@17 //SEG119 [43] call keyboard_event_scan - //SEG120 [388] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] + //SEG120 [390] phi from main::@17 to keyboard_event_scan [phi:main::@17->keyboard_event_scan] jsr keyboard_event_scan //SEG121 [44] phi from main::@17 to main::@18 [phi:main::@17->main::@18] //SEG122 main::@18 @@ -23334,8 +23337,8 @@ main: { //SEG139 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render //SEG140 [56] call render_playfield - //SEG141 [149] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] - //SEG142 [149] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy + //SEG141 [150] phi from main::@7 to render_playfield [phi:main::@7->render_playfield] + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@7->render_playfield#0] -- register_copy jsr render_playfield //SEG143 main::@21 //SEG144 [57] (byte~) current_ypos#107 ← (byte) current_ypos#19 -- vbuxx=vbuz1 @@ -23403,12 +23406,12 @@ main: { //SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_render sta render_screen_render - //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuz1=vbuz1_bxor_vbuc1 - lda #$40 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $20 -- vbuz1=vbuz1_bxor_vbuc1 + lda #$20 eor render_screen_show sta render_screen_show //SEG190 render_screen_swap::@return @@ -23633,14 +23636,14 @@ render_next: { sta screen_next_area+1 //SEG280 render_next::@1 b1: - //SEG281 [111] (byte~) render_next::$4 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuxx_rol_1 + //SEG281 [111] (byte) render_next::$9 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuxx_rol_1 txa asl tay //SEG282 [112] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_NEXT_CHARS,x sta next_piece_char - //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$4) -- pbuz1=pptc1_derefidx_vbuyy + //SEG283 [113] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte) render_next::$9) -- pbuz1=pptc1_derefidx_vbuyy lda PIECES,y sta next_piece_gfx lda PIECES+1,y @@ -23726,31 +23729,29 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label ypos2 = $c + .label ypos = $c .label screen_line = 7 .label xpos = $f .label i = $e .label l = $d - //SEG320 [129] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa - asl - sta ypos2 + //SEG320 [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx + stx ypos //SEG321 [130] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] //SEG322 [130] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l //SEG323 [130] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 sta i - //SEG324 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG324 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy //SEG325 [130] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] //SEG326 [130] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy //SEG327 [130] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [130] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG328 [130] phi (byte) render_moving::ypos#2 = (byte) render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy //SEG329 render_moving::@1 b1: - //SEG330 [131] if((byte) render_moving::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 - lda ypos2 - cmp #2+1 + //SEG330 [131] if((byte) render_moving::ypos#2>=(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos + cmp #1+1 bcs b2 //SEG331 render_moving::@7 //SEG332 [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 @@ -23761,11 +23762,8 @@ render_moving: { //SEG334 [133] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy //SEG335 render_moving::@3 b3: - //SEG336 [134] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 + //SEG336 [134] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2 -- vbuz1=_inc_vbuz1 + inc ypos //SEG337 [135] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l //SEG338 [136] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 @@ -23777,128 +23775,129 @@ render_moving: { rts //SEG341 render_moving::@2 b2: - //SEG342 [138] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG342 [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc - adc ypos2 - //SEG343 [139] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa + adc ypos + //SEG343 [139] (byte) render_moving::$6 ← (byte~) render_moving::$1 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_moving::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [140] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#59 -- vbuz1=vbuz2 lda current_xpos_59 sta xpos - //SEG345 [141] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] - //SEG346 [141] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG347 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy - //SEG349 [141] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] - //SEG350 [141] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [141] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [141] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy - //SEG353 render_moving::@4 + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG354 render_moving::@4 b4: - //SEG354 [142] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG355 [143] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [144] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG357 render_moving::@6 - //SEG358 [145] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG358 render_moving::@6 + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_68 ldy xpos sta (screen_line),y - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [146] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [147] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx inx - //SEG362 [148] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4 jmp b3 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG364 [150] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG365 [150] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [150] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l - //SEG367 [150] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG368 [150] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [150] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG370 render_playfield::@1 + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG371 render_playfield::@1 b1: - //SEG371 [151] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 - lda l - asl - //SEG372 [152] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa - stx $ff + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1 + txa clc - adc $ff - //SEG373 [153] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + adc l + //SEG373 [153] (byte) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_playfield::$6) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [154] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG375 [154] 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 + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG376 [155] 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 - //SEG376 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG378 [154] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG379 [154] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [154] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [154] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG382 render_playfield::@2 + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG383 render_playfield::@2 b2: - //SEG383 [155] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [156] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [157] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [158] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [159] 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 + //SEG388 [160] 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 #PLAYFIELD_COLS-1+1 cmp c bne b2 - //SEG388 render_playfield::@3 - //SEG389 [160] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG389 render_playfield::@3 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [161] 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 + //SEG391 [162] 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 #PLAYFIELD_LINES-1+1 cmp l bne b1 - //SEG391 render_playfield::@return - //SEG392 [162] return + //SEG392 render_playfield::@return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -23907,158 +23906,158 @@ play_movement: { .label render = 9 .label return = 9 .label key_event = $2a - //SEG394 [163] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG395 [164] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [165] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG397 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa - //SEG397 play_movement::@2 - //SEG398 [166] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa + //SEG398 play_movement::@2 + //SEG399 [167] (byte) play_movement::render#1 ← (byte) play_move_down::return#0 -- vbuz1=vbuaa sta render - //SEG399 [167] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG400 [168] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG400 [168] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] - //SEG401 [168] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy - //SEG402 [168] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy - //SEG403 [168] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy - //SEG404 [168] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy - //SEG405 play_movement::@return - //SEG406 [169] return + //SEG401 [169] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return] + //SEG402 [169] phi (byte) current_xpos#19 = (byte) current_xpos#22 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy + //SEG403 [169] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy + //SEG404 [169] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy + //SEG405 [169] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy + //SEG406 play_movement::@return + //SEG407 [170] return rts - //SEG407 play_movement::@1 + //SEG408 play_movement::@1 b1: - //SEG408 [170] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG409 [171] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG409 [171] call play_move_leftright + //SEG410 [172] call play_move_leftright jsr play_move_leftright - //SEG410 [172] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 - //SEG411 play_movement::@3 - //SEG412 [173] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG413 [174] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG411 [173] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG412 play_movement::@3 + //SEG413 [174] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG414 [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG414 [175] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG415 [176] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG415 [176] call play_move_rotate + //SEG416 [177] call play_move_rotate jsr play_move_rotate - //SEG416 [177] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 - //SEG417 play_movement::@4 - //SEG418 [178] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG419 [179] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG417 [178] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG418 play_movement::@4 + //SEG419 [179] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG420 [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return rts } -//SEG420 play_move_rotate +//SEG421 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed // play_move_rotate(byte register(A) key_event) play_move_rotate: { .label orientation = $a - //SEG421 [180] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG422 [181] 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 - //SEG422 play_move_rotate::@4 - //SEG423 [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG423 play_move_rotate::@4 + //SEG424 [182] 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 - //SEG424 [182] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] + //SEG425 [183] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return] b4: - //SEG425 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG426 [182] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG427 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG426 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG427 [183] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG428 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG428 play_move_rotate::@return - //SEG429 [183] return + //SEG429 play_move_rotate::@return + //SEG430 [184] return rts - //SEG430 play_move_rotate::@2 + //SEG431 play_move_rotate::@2 b2: - //SEG431 [184] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_plus_vbuc1 + //SEG432 [185] (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_plus_vbuc1 lax current_orientation axs #-[$10] - //SEG432 [185] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG433 [186] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$5 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation - //SEG433 [186] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] - //SEG434 [186] 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::@3#0] -- register_copy - //SEG435 play_move_rotate::@3 + //SEG434 [187] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3] + //SEG435 [187] 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::@3#0] -- register_copy + //SEG436 play_move_rotate::@3 b3: - //SEG436 [187] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 + //SEG437 [188] (byte) play_collision::xpos#3 ← (byte) current_xpos#26 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG437 [188] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::ypos#3 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG438 [189] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG439 [190] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG439 [190] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG440 [191] (byte*~) current_piece#103 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_103 lda current_piece+1 sta current_piece_103+1 - //SEG440 [191] call play_collision - //SEG441 [199] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] - //SEG442 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy - //SEG443 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy - //SEG444 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy - //SEG445 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy + //SEG441 [192] call play_collision + //SEG442 [200] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision] + //SEG443 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy + //SEG444 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy + //SEG445 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy + //SEG446 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#103 [phi:play_move_rotate::@3->play_collision#3] -- register_copy jsr play_collision - //SEG446 [192] (byte) play_collision::return#14 ← (byte) play_collision::return#15 - //SEG447 play_move_rotate::@6 - //SEG448 [193] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 - //SEG449 [194] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG447 [193] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG448 play_move_rotate::@6 + //SEG449 [194] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14 + //SEG450 [195] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b4 - //SEG450 play_move_rotate::@5 - //SEG451 [195] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG451 play_move_rotate::@5 + //SEG452 [196] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG452 [196] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG453 [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG453 [182] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] - //SEG454 [182] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy - //SEG455 [182] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy - //SEG456 [182] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG454 [183] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return] + //SEG455 [183] phi (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy + //SEG456 [183] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy + //SEG457 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 rts - //SEG457 play_move_rotate::@1 + //SEG458 play_move_rotate::@1 b1: - //SEG458 [197] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_minus_vbuc1 + //SEG459 [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_minus_vbuc1 lax current_orientation axs #$10 - //SEG459 [198] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 + //SEG460 [199] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 & (byte/signed byte/word/signed word/dword/signed dword) $3f -- vbuz1=vbuxx_band_vbuc1 lda #$3f sax orientation jmp b3 } -//SEG460 play_collision +//SEG461 play_collision // 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 -// play_collision(byte zeropage($c) xpos, byte zeropage($b) ypos, byte register(X) orientation) +// play_collision(byte zeropage($b) xpos, byte zeropage($c) ypos, byte register(X) orientation) play_collision: { - .label xpos = $c - .label ypos = $b + .label xpos = $b + .label ypos = $c .label piece_gfx = 5 - .label ypos2 = $b + .label yp = $c .label playfield_line = 7 .label i = $2b - .label col = $f + .label xp = $f .label l = $d .label i_2 = $e .label i_3 = $e .label i_11 = $e .label i_13 = $e - //SEG461 [200] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG462 [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -24066,529 +24065,527 @@ play_collision: { bcc !+ inc piece_gfx+1 !: - //SEG462 [201] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 - asl ypos2 //SEG463 [202] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] //SEG464 [202] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l //SEG465 [202] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG466 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG466 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy //SEG467 play_collision::@1 b1: - //SEG468 [203] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG468 [203] (byte) play_collision::$14 ← (byte) play_collision::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda yp + asl + //SEG469 [204] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::$14) -- pbuz1=pptc1_derefidx_vbuaa + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG469 [204] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG470 [205] (byte~) play_collision::xp#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos - sta col - //SEG470 [205] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG471 [205] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + sta xp + //SEG471 [206] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG472 [206] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG472 [205] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG473 [205] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG474 play_collision::@2 + //SEG473 [206] phi (byte) play_collision::xp#2 = (byte~) play_collision::xp#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG474 [206] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG475 play_collision::@2 b2: - //SEG475 [206] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG476 [207] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG476 [207] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG477 [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG477 play_collision::@7 - //SEG478 [208] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda ypos2 - cmp #2*PLAYFIELD_LINES + //SEG478 play_collision::@7 + //SEG479 [209] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda yp + cmp #PLAYFIELD_LINES bcc b4 - //SEG479 [209] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] - //SEG480 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG480 [210] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return] + //SEG481 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG481 play_collision::@return - //SEG482 [210] return + //SEG482 play_collision::@return + //SEG483 [211] return rts - //SEG483 play_collision::@4 + //SEG484 play_collision::@4 b4: - //SEG484 [211] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG485 [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 - and col - //SEG485 [212] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + and xp + //SEG486 [213] if((byte~) play_collision::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG486 [209] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG487 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG487 [210] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG488 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT rts - //SEG488 play_collision::@5 + //SEG489 play_collision::@5 b5: - //SEG489 [213] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 - lda col + //SEG490 [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + lda xp cmp #PLAYFIELD_COLS bcc b6 - //SEG490 [209] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG491 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG491 [210] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG492 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT rts - //SEG492 play_collision::@6 + //SEG493 play_collision::@6 b6: - //SEG493 [214] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 - ldy col + //SEG494 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy xp lda (playfield_line),y cmp #0 beq b3 - //SEG494 [209] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG495 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG495 [210] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG496 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD rts - //SEG496 play_collision::@3 + //SEG497 play_collision::@3 b3: - //SEG497 [215] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG498 [216] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG498 [216] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG499 [217] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG499 [217] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 + //SEG500 [218] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b10 - //SEG500 play_collision::@8 - //SEG501 [218] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG502 [219] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG501 play_collision::@8 + //SEG502 [219] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG503 [220] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG503 [220] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG504 [221] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b9 - //SEG504 [209] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG505 [209] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG505 [210] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG506 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE rts - //SEG506 play_collision::@9 + //SEG507 play_collision::@9 b9: - //SEG507 [221] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG508 [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG508 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] - //SEG509 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy - //SEG510 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy - //SEG511 [202] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy + //SEG509 [202] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1] + //SEG510 [202] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy + //SEG511 [202] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@9->play_collision::@1#1] -- register_copy + //SEG512 [202] phi (byte) play_collision::yp#2 = (byte) play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy jmp b1 - //SEG512 play_collision::@10 + //SEG513 play_collision::@10 b10: - //SEG513 [222] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG514 [223] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG514 [205] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] - //SEG515 [205] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy - //SEG516 [205] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy - //SEG517 [205] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy + //SEG515 [206] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2] + //SEG516 [206] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy + //SEG517 [206] phi (byte) play_collision::xp#2 = (byte) play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy + //SEG518 [206] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@10->play_collision::@2#2] -- register_copy jmp b2 } -//SEG518 play_move_leftright +//SEG519 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed // play_move_leftright(byte register(A) key_event) play_move_leftright: { - //SEG519 [223] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG520 [224] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 // Handle keyboard events cmp #KEY_COMMA beq b1 - //SEG520 play_move_leftright::@2 - //SEG521 [224] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG521 play_move_leftright::@2 + //SEG522 [225] 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 - //SEG522 play_move_leftright::@3 - //SEG523 [225] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG523 play_move_leftright::@3 + //SEG524 [226] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG524 [226] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG525 [227] (byte) play_collision::ypos#2 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG525 [227] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG526 [228] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG526 [228] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG527 [229] (byte*~) current_piece#102 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_102 lda current_piece+1 sta current_piece_102+1 - //SEG527 [229] call play_collision - //SEG528 [199] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] - //SEG529 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy - //SEG530 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy - //SEG531 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy - //SEG532 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy + //SEG528 [230] call play_collision + //SEG529 [200] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision] + //SEG530 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy + //SEG531 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy + //SEG532 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy + //SEG533 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_move_leftright::@3->play_collision#3] -- register_copy jsr play_collision - //SEG533 [230] (byte) play_collision::return#13 ← (byte) play_collision::return#15 - //SEG534 play_move_leftright::@7 - //SEG535 [231] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG536 [232] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG534 [231] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG535 play_move_leftright::@7 + //SEG536 [232] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG537 [233] 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 - //SEG537 play_move_leftright::@4 - //SEG538 [233] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 + //SEG538 play_move_leftright::@4 + //SEG539 [234] (byte) current_xpos#6 ← ++ (byte) current_xpos#22 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG539 [234] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] + //SEG540 [235] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return] b2: - //SEG540 [234] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy - //SEG541 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG541 [235] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy + //SEG542 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 rts - //SEG542 [234] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] + //SEG543 [235] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] b3: - //SEG543 [234] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy - //SEG544 [234] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG544 [235] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy + //SEG545 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 - //SEG545 play_move_leftright::@return - //SEG546 [235] return + //SEG546 play_move_leftright::@return + //SEG547 [236] return rts - //SEG547 play_move_leftright::@1 + //SEG548 play_move_leftright::@1 b1: - //SEG548 [236] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG549 [237] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG549 [237] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 + //SEG550 [238] (byte) play_collision::ypos#1 ← (byte) current_ypos#19 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG550 [238] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG551 [239] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG551 [239] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG552 [240] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG552 [240] call play_collision - //SEG553 [199] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG554 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG555 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG556 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG557 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG553 [241] call play_collision + //SEG554 [200] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG555 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG556 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG557 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG558 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG558 [241] (byte) play_collision::return#1 ← (byte) play_collision::return#15 - //SEG559 play_move_leftright::@6 - //SEG560 [242] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG561 [243] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG559 [242] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG560 play_move_leftright::@6 + //SEG561 [243] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG562 [244] 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 - //SEG562 play_move_leftright::@5 - //SEG563 [244] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 + //SEG563 play_move_leftright::@5 + //SEG564 [245] (byte) current_xpos#8 ← -- (byte) current_xpos#22 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } -//SEG564 play_move_down +//SEG565 play_move_down // Move down the current piece // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { - //SEG565 [245] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG566 [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG566 [246] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG567 [247] 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 b4 - //SEG567 [247] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] - //SEG568 play_move_down::@4 - //SEG569 [248] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] - //SEG570 [248] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG568 [248] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] + //SEG569 play_move_down::@4 + //SEG570 [249] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] + //SEG571 [249] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG571 [248] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG572 [249] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b4: - //SEG572 [248] 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 + //SEG573 [249] 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 - //SEG573 play_move_down::@1 + //SEG574 play_move_down::@1 b1: - //SEG574 [249] call keyboard_event_pressed - //SEG575 [377] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG576 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG575 [250] call keyboard_event_pressed + //SEG576 [379] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG577 [379] 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 - //SEG577 [250] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - //SEG578 play_move_down::@12 - //SEG579 [251] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG580 [252] 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 + //SEG578 [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG579 play_move_down::@12 + //SEG580 [252] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG581 [253] 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 - //SEG581 play_move_down::@5 - //SEG582 [253] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG582 play_move_down::@5 + //SEG583 [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2 - //SEG583 play_move_down::@6 - //SEG584 [254] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG584 play_move_down::@6 + //SEG585 [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG585 [255] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] - //SEG586 [255] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy - //SEG587 play_move_down::@2 + //SEG586 [256] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] + //SEG587 [256] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy + //SEG588 play_move_down::@2 b2: - //SEG588 [256] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG589 [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b3 - //SEG589 play_move_down::@7 - //SEG590 [257] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG590 play_move_down::@7 + //SEG591 [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG591 [258] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] - //SEG592 [258] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy - //SEG593 play_move_down::@3 + //SEG592 [259] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] + //SEG593 [259] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy + //SEG594 play_move_down::@3 b3: - //SEG594 [259] 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 + //SEG595 [260] 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 - //SEG595 play_move_down::@8 - //SEG596 [260] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG596 play_move_down::@8 + //SEG597 [261] (byte) play_collision::ypos#0 ← (byte) current_ypos#100 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG597 [261] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG598 [262] (byte) play_collision::xpos#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG598 [262] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG599 [263] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG599 [263] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG600 [264] (byte*~) current_piece#100 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG600 [264] call play_collision - //SEG601 [199] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] - //SEG602 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy - //SEG603 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy - //SEG604 [199] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy - //SEG605 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy + //SEG601 [265] call play_collision + //SEG602 [200] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision] + //SEG603 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy + //SEG604 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy + //SEG605 [200] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy + //SEG606 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_down::@8->play_collision#3] -- register_copy jsr play_collision - //SEG606 [265] (byte) play_collision::return#0 ← (byte) play_collision::return#15 - //SEG607 play_move_down::@13 - //SEG608 [266] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG609 [267] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 + //SEG607 [266] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG608 play_move_down::@13 + //SEG609 [267] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG610 [268] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b10 - //SEG610 [268] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] - //SEG611 play_move_down::@9 - //SEG612 [269] call play_lock_current + //SEG611 [269] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9] + //SEG612 play_move_down::@9 + //SEG613 [270] call play_lock_current jsr play_lock_current - //SEG613 [270] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] - //SEG614 play_move_down::@14 - //SEG615 [271] call play_remove_lines - //SEG616 [337] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] + //SEG614 [271] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14] + //SEG615 play_move_down::@14 + //SEG616 [272] call play_remove_lines + //SEG617 [338] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines] jsr play_remove_lines - //SEG617 [272] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 + //SEG618 [273] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8 -- vbuaa=vbuz1 lda play_remove_lines.removed - //SEG618 play_move_down::@15 - //SEG619 [273] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG620 [274] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG619 play_move_down::@15 + //SEG620 [274] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG621 [275] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG621 [275] call play_update_score + //SEG622 [276] call play_update_score jsr play_update_score - //SEG622 [276] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] - //SEG623 play_move_down::@16 - //SEG624 [277] call play_spawn_current - //SEG625 [283] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] - //SEG626 [283] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy - //SEG627 [283] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy + //SEG623 [277] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16] + //SEG624 play_move_down::@16 + //SEG625 [278] call play_spawn_current + //SEG626 [284] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current] + //SEG627 [284] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy + //SEG628 [284] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG628 [278] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy play_spawn_current._0 + //SEG629 [279] (byte*~) current_piece#106 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._7 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG629 [279] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] - //SEG630 [279] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy - //SEG631 [279] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy - //SEG632 [279] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy - //SEG633 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy - //SEG634 [279] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 + //SEG630 [280] phi from play_move_down::@16 to play_move_down::@11 [phi:play_move_down::@16->play_move_down::@11] + //SEG631 [280] phi (byte) next_piece_idx#30 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@16->play_move_down::@11#0] -- register_copy + //SEG632 [280] phi (byte) game_over#27 = (byte) game_over#52 [phi:play_move_down::@16->play_move_down::@11#1] -- register_copy + //SEG633 [280] phi (byte) current_xpos#43 = (byte) current_xpos#103 [phi:play_move_down::@16->play_move_down::@11#2] -- register_copy + //SEG634 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#74 [phi:play_move_down::@16->play_move_down::@11#3] -- register_copy + //SEG635 [280] phi (byte) current_orientation#37 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@16->play_move_down::@11#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG635 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy - //SEG636 [279] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy - //SEG637 [279] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy - //SEG638 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy - //SEG639 [279] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy - //SEG640 [279] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy - //SEG641 [279] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy - //SEG642 [279] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy - //SEG643 play_move_down::@11 + //SEG636 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#5 [phi:play_move_down::@16->play_move_down::@11#5] -- register_copy + //SEG637 [280] phi (byte*) current_piece#28 = (byte*~) current_piece#106 [phi:play_move_down::@16->play_move_down::@11#6] -- register_copy + //SEG638 [280] phi (byte) level_bcd#31 = (byte) level_bcd#19 [phi:play_move_down::@16->play_move_down::@11#7] -- register_copy + //SEG639 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#23 [phi:play_move_down::@16->play_move_down::@11#8] -- register_copy + //SEG640 [280] phi (byte) level#33 = (byte) level#19 [phi:play_move_down::@16->play_move_down::@11#9] -- register_copy + //SEG641 [280] phi (dword) score_bcd#26 = (dword) score_bcd#16 [phi:play_move_down::@16->play_move_down::@11#10] -- register_copy + //SEG642 [280] phi (word) lines_bcd#26 = (word) lines_bcd#17 [phi:play_move_down::@16->play_move_down::@11#11] -- register_copy + //SEG643 [280] phi (byte) current_ypos#38 = (byte) current_ypos#6 [phi:play_move_down::@16->play_move_down::@11#12] -- register_copy + //SEG644 play_move_down::@11 b11: - //SEG644 [280] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] - //SEG645 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy - //SEG646 [280] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy - //SEG647 [280] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy - //SEG648 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy - //SEG649 [280] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy - //SEG650 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy - //SEG651 [280] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy - //SEG652 [280] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy - //SEG653 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy - //SEG654 [280] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy - //SEG655 [280] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy - //SEG656 [280] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy - //SEG657 [280] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy - //SEG658 [280] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG645 [281] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return] + //SEG646 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#30 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy + //SEG647 [281] phi (byte) game_over#15 = (byte) game_over#27 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy + //SEG648 [281] phi (byte) current_xpos#22 = (byte) current_xpos#43 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy + //SEG649 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#35 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy + //SEG650 [281] phi (byte) current_orientation#20 = (byte) current_orientation#37 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy + //SEG651 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#29 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy + //SEG652 [281] phi (byte*) current_piece#15 = (byte*) current_piece#28 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy + //SEG653 [281] phi (byte) level_bcd#17 = (byte) level_bcd#31 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy + //SEG654 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#37 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy + //SEG655 [281] phi (byte) level#17 = (byte) level#33 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy + //SEG656 [281] phi (dword) score_bcd#14 = (dword) score_bcd#26 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy + //SEG657 [281] phi (word) lines_bcd#15 = (word) lines_bcd#26 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy + //SEG658 [281] phi (byte) current_ypos#19 = (byte) current_ypos#38 [phi:play_move_down::@11->play_move_down::@return#12] -- register_copy + //SEG659 [281] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG659 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG660 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #1 rts - //SEG660 [280] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] + //SEG661 [281] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] b5: - //SEG661 [280] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy - //SEG662 [280] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy - //SEG663 [280] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy - //SEG664 [280] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy - //SEG665 [280] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy - //SEG666 [280] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy - //SEG667 [280] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy - //SEG668 [280] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy - //SEG669 [280] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy - //SEG670 [280] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy - //SEG671 [280] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy - //SEG672 [280] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy - //SEG673 [280] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy - //SEG674 [280] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy - //SEG675 [280] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 + //SEG662 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy + //SEG663 [281] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy + //SEG664 [281] phi (byte) current_xpos#22 = (byte) current_xpos#124 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy + //SEG665 [281] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#114 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy + //SEG666 [281] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy + //SEG667 [281] phi (byte) current_piece_char#16 = (byte) current_piece_char#10 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy + //SEG668 [281] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy + //SEG669 [281] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy + //SEG670 [281] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy + //SEG671 [281] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy + //SEG672 [281] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy + //SEG673 [281] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy + //SEG674 [281] phi (byte) current_ypos#19 = (byte) current_ypos#100 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy + //SEG675 [281] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@3->play_move_down::@return#13] -- register_copy + //SEG676 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #0 - //SEG676 play_move_down::@return - //SEG677 [281] return + //SEG677 play_move_down::@return + //SEG678 [282] return rts - //SEG678 play_move_down::@10 + //SEG679 play_move_down::@10 b10: - //SEG679 [282] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 + //SEG680 [283] (byte) current_ypos#3 ← ++ (byte) current_ypos#100 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG680 [279] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] - //SEG681 [279] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy - //SEG682 [279] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy - //SEG683 [279] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy - //SEG684 [279] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy - //SEG685 [279] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy - //SEG686 [279] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy - //SEG687 [279] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy - //SEG688 [279] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy - //SEG689 [279] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy - //SEG690 [279] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy - //SEG691 [279] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy - //SEG692 [279] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy - //SEG693 [279] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy + //SEG681 [280] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11] + //SEG682 [280] phi (byte) next_piece_idx#30 = (byte) next_piece_idx#10 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy + //SEG683 [280] phi (byte) game_over#27 = (byte) game_over#10 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy + //SEG684 [280] phi (byte) current_xpos#43 = (byte) current_xpos#124 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy + //SEG685 [280] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#114 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy + //SEG686 [280] phi (byte) current_orientation#37 = (byte) current_orientation#13 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy + //SEG687 [280] phi (byte) current_piece_char#29 = (byte) current_piece_char#10 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy + //SEG688 [280] phi (byte*) current_piece#28 = (byte*) current_piece#10 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy + //SEG689 [280] phi (byte) level_bcd#31 = (byte) level_bcd#11 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy + //SEG690 [280] phi (byte) current_movedown_slow#37 = (byte) current_movedown_slow#14 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy + //SEG691 [280] phi (byte) level#33 = (byte) level#10 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy + //SEG692 [280] phi (dword) score_bcd#26 = (dword) score_bcd#18 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy + //SEG693 [280] phi (word) lines_bcd#26 = (word) lines_bcd#19 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy + //SEG694 [280] phi (byte) current_ypos#38 = (byte) current_ypos#3 [phi:play_move_down::@10->play_move_down::@11#12] -- register_copy jmp b11 } -//SEG694 play_spawn_current +//SEG695 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { - .label _0 = 4 + .label _7 = 4 .label piece_idx = $21 - //SEG695 [284] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG696 [285] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current ldx next_piece_idx - //SEG696 [285] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG697 [286] (byte) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl - sta _0 - //SEG697 [286] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + sta _7 + //SEG698 [287] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG698 [287] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _0 + //SEG699 [288] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _7 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG699 [288] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG700 [289] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG700 [289] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG701 [290] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG701 [290] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 + //SEG702 [291] (byte) play_collision::xpos#4 ← (byte) current_xpos#103 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG702 [291] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::ypos#4 ← (byte) current_ypos#6 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG703 [292] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG704 [293] (byte*~) current_piece#104 ← (byte*)*((const word[]) PIECES#0 + (byte) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 lda PIECES,y sta current_piece_104 lda PIECES+1,y sta current_piece_104+1 - //SEG704 [293] call play_collision - //SEG705 [199] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] - //SEG706 [199] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG707 [199] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG708 [199] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG705 [294] call play_collision + //SEG706 [200] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG707 [200] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG708 [200] phi (byte) play_collision::yp#0 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG709 [200] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG709 [199] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG710 [200] phi (byte*) current_piece#17 = (byte*~) current_piece#104 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG710 [294] (byte) play_collision::return#10 ← (byte) play_collision::return#15 - //SEG711 play_spawn_current::@4 - //SEG712 [295] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - //SEG713 [296] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG711 [295] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG712 play_spawn_current::@4 + //SEG713 [296] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10 + //SEG714 [297] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b1 - //SEG714 [297] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] - //SEG715 [297] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG715 [298] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1] + //SEG716 [298] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over - //SEG716 play_spawn_current::@1 + //SEG717 play_spawn_current::@1 b1: - //SEG717 [298] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG718 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG718 [299] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG719 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx - //SEG719 play_spawn_current::@2 + //SEG720 play_spawn_current::@2 b2: - //SEG720 [299] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 + //SEG721 [300] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1 lda #7 cmp piece_idx beq sid_rnd1 - //SEG721 play_spawn_current::@return - //SEG722 [300] return + //SEG722 play_spawn_current::@return + //SEG723 [301] return rts - //SEG723 play_spawn_current::sid_rnd1 + //SEG724 play_spawn_current::sid_rnd1 sid_rnd1: - //SEG724 [301] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG725 [302] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG725 play_spawn_current::@3 - //SEG726 [302] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG726 play_spawn_current::@3 + //SEG727 [303] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG727 [298] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] - //SEG728 [298] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy + //SEG728 [299] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2] + //SEG729 [299] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG729 [303] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] - //SEG730 play_spawn_current::@5 - //SEG731 [297] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] - //SEG732 [297] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy + //SEG730 [304] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5] + //SEG731 play_spawn_current::@5 + //SEG732 [298] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1] + //SEG733 [298] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy } -//SEG733 play_update_score +//SEG734 play_update_score // Update the score based on the number of lines removed // play_update_score(byte register(X) removed) play_update_score: { .label lines_before = 4 .label add_bcd = $2c - //SEG734 [304] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG735 [305] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn - //SEG735 play_update_score::@1 - //SEG736 [305] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG736 play_update_score::@1 + //SEG737 [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG737 [306] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuaa_band_vbuc1 + //SEG738 [307] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG738 [307] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG739 [308] (byte) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG739 [308] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG740 [309] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte) play_update_score::$9) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -24598,9 +24595,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG740 asm { sed } + //SEG741 asm { sed } sed - //SEG741 [310] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG742 [311] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -24608,7 +24605,7 @@ play_update_score: { bcc !+ inc lines_bcd+1 !: - //SEG742 [311] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG743 [312] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -24622,88 +24619,88 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG743 asm { cld } + //SEG744 asm { cld } cld - //SEG744 [313] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 + //SEG745 [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG745 [314] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 -- vbuaa=vbuaa_band_vbuc1 + //SEG746 [315] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte/word/signed word/dword/signed dword) $f0 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG746 [315] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG747 [316] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn - //SEG747 [316] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] - //SEG748 play_update_score::@2 - //SEG749 [317] call play_increase_level + //SEG748 [317] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2] + //SEG749 play_update_score::@2 + //SEG750 [318] call play_increase_level jsr play_increase_level - //SEG750 [318] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] - //SEG751 [318] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy - //SEG752 [318] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy - //SEG753 [318] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy - //SEG754 [318] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy - //SEG755 [318] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy - //SEG756 play_update_score::@return + //SEG751 [319] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return] + //SEG752 [319] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy + //SEG753 [319] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy + //SEG754 [319] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy + //SEG755 [319] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy + //SEG756 [319] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#4] -- register_copy + //SEG757 play_update_score::@return breturn: - //SEG757 [319] return + //SEG758 [320] return rts } -//SEG758 play_increase_level +//SEG759 play_increase_level // Increase the level play_increase_level: { - //SEG759 [320] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG760 [321] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG760 [321] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 + //SEG761 [322] if((byte) level#21>=(byte/signed byte/word/signed word/dword/signed dword) $1d+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1 // Update speed of moving tetrominos down lda level cmp #$1d+1 bcs b3 - //SEG761 play_increase_level::@3 - //SEG762 [322] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG762 play_increase_level::@3 + //SEG763 [323] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 tay lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG763 [323] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] - //SEG764 [323] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy + //SEG764 [324] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1] + //SEG765 [324] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy jmp b1 - //SEG765 [323] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] + //SEG766 [324] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1] b3: - //SEG766 [323] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 + //SEG767 [324] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow - //SEG767 play_increase_level::@1 + //SEG768 play_increase_level::@1 b1: - //SEG768 [324] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG769 [325] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG769 [325] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG770 [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG770 [326] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG771 [327] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b2 - //SEG771 play_increase_level::@4 - //SEG772 [327] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG772 play_increase_level::@4 + //SEG773 [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 // If level low nybble hits $a change to $10 lax level_bcd axs #-[6] stx level_bcd - //SEG773 [328] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] - //SEG774 [328] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy - //SEG775 play_increase_level::@2 + //SEG774 [329] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2] + //SEG775 [329] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy + //SEG776 play_increase_level::@2 b2: - //SEG776 asm { sed } + //SEG777 asm { sed } // Increase the score values gained sed - //SEG777 [330] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] - //SEG778 [330] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 + //SEG778 [331] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5] + //SEG779 [331] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG779 [330] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] - //SEG780 [330] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy - //SEG781 play_increase_level::@5 + //SEG780 [331] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5] + //SEG781 [331] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy + //SEG782 play_increase_level::@5 b5: - //SEG782 [331] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG783 [332] (byte) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG783 [332] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG784 [333] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::$5) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -24718,19 +24715,19 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG784 [333] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG785 [334] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG785 [334] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG786 [335] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b5 - //SEG786 play_increase_level::@6 - //SEG787 asm { cld } + //SEG787 play_increase_level::@6 + //SEG788 asm { cld } cld - //SEG788 play_increase_level::@return - //SEG789 [336] return + //SEG789 play_increase_level::@return + //SEG790 [337] return rts } -//SEG790 play_remove_lines +//SEG791 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -24741,265 +24738,264 @@ play_remove_lines: { .label y = 4 .label removed = 9 .label full = $b - //SEG791 [338] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG792 [338] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG792 [339] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG793 [339] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG793 [338] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG794 [339] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 sta y - //SEG794 [338] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG795 [339] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG795 [338] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG796 [339] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 // Read all lines and rewrite them - //SEG796 [338] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] - //SEG797 [338] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy - //SEG798 [338] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy - //SEG799 [338] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy - //SEG800 [338] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy - //SEG801 play_remove_lines::@1 + //SEG797 [339] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1] + //SEG798 [339] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#8 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy + //SEG799 [339] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy + //SEG800 [339] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy + //SEG801 [339] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy + //SEG802 play_remove_lines::@1 b1: - //SEG802 [339] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG803 [339] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG803 [340] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG804 [340] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG804 [339] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG805 [340] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG805 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG806 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy - //SEG807 [339] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG808 [339] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG809 [339] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG810 [339] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG811 [339] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy - //SEG812 play_remove_lines::@2 + //SEG806 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG807 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG808 [340] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG809 [340] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG810 [340] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG811 [340] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG812 [340] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG813 play_remove_lines::@2 b2: - //SEG813 [340] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG814 [341] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG814 [341] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG815 [342] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG815 [342] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 + //SEG816 [343] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG816 [343] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG817 [343] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG817 [344] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG818 [344] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG818 play_remove_lines::@3 + //SEG819 play_remove_lines::@3 b3: - //SEG819 [344] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG820 [345] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG820 [345] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG821 [346] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG821 [346] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG822 [347] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG822 [347] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG823 [348] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_COLS-1+1 cmp x bne b2 - //SEG823 play_remove_lines::@4 - //SEG824 [348] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG824 play_remove_lines::@4 + //SEG825 [349] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp full bne b6 - //SEG825 play_remove_lines::@5 - //SEG826 [349] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG826 play_remove_lines::@5 + //SEG827 [350] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[PLAYFIELD_COLS] - //SEG827 [350] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG828 [351] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG828 [351] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] - //SEG829 [351] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy - //SEG830 [351] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy - //SEG831 play_remove_lines::@6 + //SEG829 [352] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6] + //SEG830 [352] phi (byte) play_remove_lines::removed#8 = (byte) play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy + //SEG831 [352] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy + //SEG832 play_remove_lines::@6 b6: - //SEG832 [352] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG833 [353] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG833 [353] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG834 [354] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLAYFIELD_LINES-1+1 cmp y bne b1 - //SEG834 [354] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] + //SEG835 [355] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7] b4: - //SEG835 [354] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy + //SEG836 [355] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy // Write zeros in the rest of the lines - //SEG836 play_remove_lines::@7 - //SEG837 [355] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG837 play_remove_lines::@7 + //SEG838 [356] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) $ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 - //SEG838 play_remove_lines::@return - //SEG839 [356] return + //SEG839 play_remove_lines::@return + //SEG840 [357] return rts - //SEG840 play_remove_lines::@8 + //SEG841 play_remove_lines::@8 b8: - //SEG841 [357] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG842 [358] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG842 [358] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG843 [359] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b4 - //SEG843 [359] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] - //SEG844 play_remove_lines::@9 - //SEG845 [343] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] - //SEG846 [343] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy + //SEG844 [360] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9] + //SEG845 play_remove_lines::@9 + //SEG846 [344] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3] + //SEG847 [344] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy } -//SEG847 play_lock_current +//SEG848 play_lock_current // Lock the current piece onto the playfield play_lock_current: { - .label ypos2 = $10 + .label yp = $10 .label playfield_line = 5 - .label col = $a + .label xp = $a .label i = $b .label l = 4 .label i_2 = 9 .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG848 [360] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#100 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 - asl ypos2 - //SEG849 [361] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG850 [361] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG849 [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#100 + //SEG850 [362] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG851 [362] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG851 [361] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG852 [362] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG852 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG853 play_lock_current::@1 + //SEG853 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG854 play_lock_current::@1 b1: - //SEG854 [362] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 - ldy ypos2 + //SEG855 [363] (byte) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda yp + asl + //SEG856 [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::$4) -- pbuz1=pptc1_derefidx_vbuaa + tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG855 [363] (byte) play_lock_current::col#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 + //SEG857 [365] (byte) play_lock_current::xp#0 ← (byte) current_xpos#124 -- vbuz1=vbuz2 lda current_xpos - sta col - //SEG856 [364] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG857 [364] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + sta xp + //SEG858 [366] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG859 [366] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG858 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG859 [364] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy - //SEG860 play_lock_current::@2 + //SEG860 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG861 [366] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG862 play_lock_current::@2 b2: - //SEG861 [365] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG863 [367] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG862 [366] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG864 [368] if(*((byte*) current_piece_gfx#114 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG863 play_lock_current::@4 - //SEG864 [367] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG865 play_lock_current::@4 + //SEG866 [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char - ldy col + ldy xp sta (playfield_line),y - //SEG865 play_lock_current::@3 + //SEG867 play_lock_current::@3 b3: - //SEG866 [368] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG867 [369] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG868 [370] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2 -- vbuz1=_inc_vbuz1 + inc xp + //SEG869 [371] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG868 [370] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG870 [372] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b7 - //SEG869 play_lock_current::@5 - //SEG870 [371] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG871 [372] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG871 play_lock_current::@5 + //SEG872 [373] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2 -- vbuz1=_inc_vbuz1 + inc yp + //SEG873 [374] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG872 [373] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG874 [375] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp l bne b6 - //SEG873 play_lock_current::@return - //SEG874 [374] return + //SEG875 play_lock_current::@return + //SEG876 [376] return rts - //SEG875 play_lock_current::@6 + //SEG877 play_lock_current::@6 b6: - //SEG876 [375] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG878 [377] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG877 [361] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] - //SEG878 [361] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy - //SEG879 [361] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy - //SEG880 [361] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy + //SEG879 [362] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1] + //SEG880 [362] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy + //SEG881 [362] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy + //SEG882 [362] phi (byte) play_lock_current::yp#2 = (byte) play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG881 play_lock_current::@7 + //SEG883 play_lock_current::@7 b7: - //SEG882 [376] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG884 [378] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG883 [364] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] - //SEG884 [364] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy - //SEG885 [364] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy - //SEG886 [364] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy + //SEG885 [366] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2] + //SEG886 [366] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy + //SEG887 [366] phi (byte) play_lock_current::xp#2 = (byte) play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy + //SEG888 [366] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG887 keyboard_event_pressed +//SEG889 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed // keyboard_event_pressed(byte zeropage(9) keycode) keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG888 [378] (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 + //SEG890 [380] (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 - //SEG889 [379] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG891 [381] (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 - //SEG890 [380] (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 + //SEG892 [382] (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 - //SEG891 [381] (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 + //SEG893 [383] (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 - //SEG892 keyboard_event_pressed::@return - //SEG893 [382] return + //SEG894 keyboard_event_pressed::@return + //SEG895 [384] return rts } -//SEG894 keyboard_event_get +//SEG896 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG895 [383] 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 + //SEG897 [385] 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 - //SEG896 keyboard_event_get::@1 - //SEG897 [384] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG898 keyboard_event_get::@1 + //SEG899 [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG898 [385] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG900 [387] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldy keyboard_events_size ldx keyboard_events,y - //SEG899 [386] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] - //SEG900 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy - //SEG901 [386] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy + //SEG901 [388] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] + //SEG902 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy + //SEG903 [388] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy rts - //SEG902 [386] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG904 [388] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG903 [386] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG904 [386] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG905 [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG906 [388] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff - //SEG905 keyboard_event_get::@return - //SEG906 [387] return + //SEG907 keyboard_event_get::@return + //SEG908 [389] return rts } -//SEG907 keyboard_event_scan +//SEG909 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -25008,184 +25004,184 @@ keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG908 [389] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] - //SEG909 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy - //SEG910 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 + //SEG910 [391] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] + //SEG911 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + //SEG912 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG911 [389] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 + //SEG913 [391] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 sta row - //SEG912 [389] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] - //SEG913 [389] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy - //SEG914 [389] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy - //SEG915 [389] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy - //SEG916 keyboard_event_scan::@7 + //SEG914 [391] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] + //SEG915 [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + //SEG916 [391] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy + //SEG917 [391] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy + //SEG918 keyboard_event_scan::@7 b7: - //SEG917 [390] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG919 [392] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG918 [391] call keyboard_matrix_read + //SEG920 [393] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG919 [392] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG920 keyboard_event_scan::@19 - //SEG921 [393] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG921 [394] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG922 keyboard_event_scan::@19 + //SEG923 [395] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG922 [394] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG924 [396] 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::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b5 - //SEG923 keyboard_event_scan::@16 - //SEG924 [395] (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 + //SEG925 keyboard_event_scan::@16 + //SEG926 [397] (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 lax keycode axs #-[8] stx keycode - //SEG925 [396] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] - //SEG926 [396] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy - //SEG927 [396] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy - //SEG928 keyboard_event_scan::@8 + //SEG927 [398] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] + //SEG928 [398] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + //SEG929 [398] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy + //SEG930 keyboard_event_scan::@8 b8: - //SEG929 [397] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG931 [399] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG930 [398] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG932 [400] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp row bne b7 - //SEG931 [399] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] - //SEG932 keyboard_event_scan::@17 - //SEG933 [400] call keyboard_event_pressed - //SEG934 [377] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] - //SEG935 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG933 [401] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17] + //SEG934 keyboard_event_scan::@17 + //SEG935 [402] call keyboard_event_pressed + //SEG936 [379] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] + //SEG937 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG936 [401] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 - //SEG937 keyboard_event_scan::@20 - //SEG938 [402] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 - //SEG939 [403] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 + //SEG938 [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG939 keyboard_event_scan::@20 + //SEG940 [404] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0 + //SEG941 [405] if((byte~) keyboard_event_scan::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG940 [404] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] - //SEG941 keyboard_event_scan::@18 - //SEG942 [405] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] - //SEG943 keyboard_event_scan::@1 - //SEG944 [406] call keyboard_event_pressed - //SEG945 [377] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] - //SEG946 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG942 [406] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18] + //SEG943 keyboard_event_scan::@18 + //SEG944 [407] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1] + //SEG945 keyboard_event_scan::@1 + //SEG946 [408] call keyboard_event_pressed + //SEG947 [379] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] + //SEG948 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG947 [407] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 - //SEG948 keyboard_event_scan::@21 - //SEG949 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 - //SEG950 [409] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 + //SEG949 [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG950 keyboard_event_scan::@21 + //SEG951 [410] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1 + //SEG952 [411] if((byte~) keyboard_event_scan::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG951 [410] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] - //SEG952 keyboard_event_scan::@4 - //SEG953 [411] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] - //SEG954 keyboard_event_scan::@2 - //SEG955 [412] call keyboard_event_pressed - //SEG956 [377] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] - //SEG957 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG953 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4] + //SEG954 keyboard_event_scan::@4 + //SEG955 [413] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2] + //SEG956 keyboard_event_scan::@2 + //SEG957 [414] call keyboard_event_pressed + //SEG958 [379] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] + //SEG959 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG958 [413] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 - //SEG959 keyboard_event_scan::@22 - //SEG960 [414] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 - //SEG961 [415] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 + //SEG960 [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG961 keyboard_event_scan::@22 + //SEG962 [416] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2 + //SEG963 [417] if((byte~) keyboard_event_scan::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG962 [416] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] - //SEG963 keyboard_event_scan::@5 - //SEG964 [417] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] - //SEG965 keyboard_event_scan::@3 - //SEG966 [418] call keyboard_event_pressed - //SEG967 [377] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] - //SEG968 [377] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG964 [418] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5] + //SEG965 keyboard_event_scan::@5 + //SEG966 [419] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3] + //SEG967 keyboard_event_scan::@3 + //SEG968 [420] call keyboard_event_pressed + //SEG969 [379] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] + //SEG970 [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG969 [419] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 - //SEG970 keyboard_event_scan::@23 - //SEG971 [420] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 - //SEG972 [421] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG971 [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG972 keyboard_event_scan::@23 + //SEG973 [422] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10 + //SEG974 [423] if((byte~) keyboard_event_scan::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG973 [422] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] - //SEG974 keyboard_event_scan::@6 - //SEG975 keyboard_event_scan::@return - //SEG976 [423] return + //SEG975 [424] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6] + //SEG976 keyboard_event_scan::@6 + //SEG977 keyboard_event_scan::@return + //SEG978 [425] return rts // Something has changed on the keyboard row - check each column - //SEG977 [424] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] - //SEG978 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy - //SEG979 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy - //SEG980 [424] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy - //SEG981 [424] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] + //SEG979 [426] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] + //SEG980 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + //SEG981 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy + //SEG982 [426] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy + //SEG983 [426] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b5: - //SEG982 [424] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy - //SEG983 [424] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy - //SEG984 [424] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 + //SEG984 [426] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + //SEG985 [426] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy + //SEG986 [426] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 - //SEG985 keyboard_event_scan::@9 + //SEG987 keyboard_event_scan::@9 b9: - //SEG986 [425] (byte~) keyboard_event_scan::$15 ← (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 + //SEG988 [427] (byte~) keyboard_event_scan::$15 ← (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 - //SEG987 [426] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG989 [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((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 - //SEG988 [427] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG990 [429] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG989 keyboard_event_scan::@12 - //SEG990 [428] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 + //SEG991 keyboard_event_scan::@12 + //SEG992 [430] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1 lda #8 cmp keyboard_events_size beq b10 - //SEG991 keyboard_event_scan::@13 - //SEG992 [429] (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 + //SEG993 keyboard_event_scan::@13 + //SEG994 [431] (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 - //SEG993 [430] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG995 [432] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG994 keyboard_event_scan::@14 - //SEG995 [431] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG996 keyboard_event_scan::@14 + //SEG997 [433] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 // Key pressed lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG996 [432] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG998 [434] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG997 [433] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] - //SEG998 [433] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy - //SEG999 keyboard_event_scan::@10 + //SEG999 [435] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] + //SEG1000 [435] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + //SEG1001 keyboard_event_scan::@10 b10: - //SEG1000 [434] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1002 [436] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1001 [435] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1003 [437] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1002 [436] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG1004 [438] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b9 - //SEG1003 keyboard_event_scan::@15 - //SEG1004 [437] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1005 keyboard_event_scan::@15 + //SEG1006 [439] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 // Store the current keyboard status for the row to debounce lda row_scan ldy row sta keyboard_scan_values,y jmp b8 - //SEG1005 keyboard_event_scan::@11 + //SEG1007 keyboard_event_scan::@11 b11: - //SEG1006 [438] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuaa=vbuz1_bor_vbuc1 + //SEG1008 [440] (byte/word/dword~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG1007 [439] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1009 [441] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa // Key released ldy keyboard_events_size sta keyboard_events,y - //SEG1008 [440] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [442] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b10 } -//SEG1009 keyboard_matrix_read +//SEG1011 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -25193,90 +25189,90 @@ keyboard_event_scan: { // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. // keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG1010 [441] *((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 + //SEG1012 [443] *((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 - //SEG1011 [442] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1013 [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG1012 keyboard_matrix_read::@return - //SEG1013 [443] return + //SEG1014 keyboard_matrix_read::@return + //SEG1015 [445] return rts } -//SEG1014 render_show +//SEG1016 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f - //SEG1015 [444] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1017 [446] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181 - //SEG1016 [445] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] - //SEG1017 render_show::toD0182 - //SEG1018 [446] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] - //SEG1019 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1018 [447] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1019 render_show::toD0182 + //SEG1020 [448] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1] + //SEG1021 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0182_return - //SEG1020 render_show::@1 + //SEG1022 render_show::@1 b1: - //SEG1021 [447] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1023 [449] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1022 [448] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1024 [450] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1023 [449] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1025 [451] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1024 [450] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1026 [452] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing - //SEG1025 render_show::@return - //SEG1026 [451] return + //SEG1027 render_show::@return + //SEG1028 [453] return rts - //SEG1027 [452] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] - //SEG1028 render_show::toD0181 + //SEG1029 [454] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1030 render_show::toD0181 toD0181: - //SEG1029 [446] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] - //SEG1030 [446] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 + //SEG1031 [448] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1] + //SEG1032 [448] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b1 } -//SEG1031 play_init +//SEG1033 play_init // Initialize play data tables play_init: { .label pli = 5 .label idx = 2 - //SEG1032 [454] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG1033 [454] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1034 [456] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1035 [456] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1034 [454] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1036 [456] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1035 [454] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 + //SEG1037 [456] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1 ldy #0 - //SEG1036 [454] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG1037 [454] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1038 [454] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1039 [454] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG1040 play_init::@1 + //SEG1038 [456] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1039 [456] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1040 [456] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1041 [456] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1042 play_init::@1 b1: - //SEG1041 [455] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG1043 [457] (byte) play_init::$4 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1042 [456] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$2) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG1044 [458] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_init::$4) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuxx=pbuz1 lda pli sta playfield_lines,x lda pli+1 sta playfield_lines+1,x - //SEG1043 [457] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG1045 [459] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda idx sta playfield_lines_idx,y - //SEG1044 [458] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1046 [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc pli @@ -25284,36 +25280,36 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1045 [459] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1047 [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[PLAYFIELD_COLS] stx idx - //SEG1046 [460] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy + //SEG1048 [462] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG1047 [461] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1049 [463] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #PLAYFIELD_LINES-1+1 bne b1 - //SEG1048 play_init::@2 - //SEG1049 [462] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG1050 play_init::@2 + //SEG1051 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG1050 [463] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1052 [465] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 // Set initial speed of moving down a tetromino lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1051 [464] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] - //SEG1052 [464] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 + //SEG1053 [466] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3] + //SEG1054 [466] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1 ldx #0 // Set the initial score add values - //SEG1053 [464] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] - //SEG1054 [464] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy - //SEG1055 play_init::@3 + //SEG1055 [466] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3] + //SEG1056 [466] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy + //SEG1057 play_init::@3 b3: - //SEG1056 [465] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG1058 [467] (byte) play_init::$5 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1057 [466] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1059 [468] *((const dword[5]) score_add_bcd#0 + (byte) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::$5) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -25323,200 +25319,200 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1058 [467] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1060 [469] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1059 [468] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1061 [470] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b3 - //SEG1060 play_init::@return - //SEG1061 [469] return + //SEG1062 play_init::@return + //SEG1063 [471] return rts } -//SEG1062 sprites_irq_init +//SEG1064 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1063 asm { sei } + //SEG1065 asm { sei } sei - //SEG1064 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1066 [473] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1065 asm { ldaCIA1_INTERRUPT } + //SEG1067 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1066 [473] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1068 [475] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1067 [474] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1069 [476] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1068 [475] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1070 [477] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1069 [476] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG1071 [478] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG1070 [477] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1072 [479] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1071 [478] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1073 [480] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1072 [479] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1074 [481] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1073 asm { cli } + //SEG1075 asm { cli } cli - //SEG1074 sprites_irq_init::@return - //SEG1075 [481] return + //SEG1076 sprites_irq_init::@return + //SEG1077 [483] return rts } -//SEG1076 sprites_init +//SEG1078 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG1077 [482] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 + //SEG1079 [484] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1078 [483] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1080 [485] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1079 [484] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1081 [486] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG1080 [485] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1082 [487] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG1081 [486] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG1082 [486] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1083 [488] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1084 [488] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1083 [486] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG1085 [488] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG1084 [486] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG1085 [486] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1086 [486] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG1087 sprites_init::@1 + //SEG1086 [488] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1087 [488] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1088 [488] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1089 sprites_init::@1 b1: - //SEG1088 [487] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG1090 [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG1089 [488] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1091 [490] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG1090 [489] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG1092 [491] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG1091 [490] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1093 [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG1092 [491] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG1094 [493] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG1093 [492] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG1095 [494] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1 - //SEG1094 sprites_init::@return - //SEG1095 [493] return + //SEG1096 sprites_init::@return + //SEG1097 [495] return rts } -//SEG1096 render_init +//SEG1098 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)/$40 .label li_1 = 5 .label li_2 = 7 - //SEG1097 render_init::vicSelectGfxBank1 - //SEG1098 [495] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1099 render_init::vicSelectGfxBank1 + //SEG1100 [497] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG1099 [496] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG1100 render_init::vicSelectGfxBank1_toDd001 - //SEG1101 render_init::vicSelectGfxBank1_@1 - //SEG1102 [497] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1101 [498] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1102 render_init::vicSelectGfxBank1_toDd001 + //SEG1103 render_init::vicSelectGfxBank1_@1 + //SEG1104 [499] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG1103 render_init::@2 - //SEG1104 [498] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1105 render_init::@2 + //SEG1106 [500] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 // Enable Extended Background Color Mode lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1105 [499] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1107 [501] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1106 [500] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1108 [502] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG1107 [501] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1109 [503] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1108 [502] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1110 [504] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1109 [503] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1111 [505] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1110 [504] call render_screen_original - //SEG1111 [517] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] - //SEG1112 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1112 [506] call render_screen_original + //SEG1113 [519] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original] + //SEG1114 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1113 [505] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] - //SEG1114 render_init::@3 - //SEG1115 [506] call render_screen_original - //SEG1116 [517] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] - //SEG1117 [517] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1115 [507] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG1116 render_init::@3 + //SEG1117 [508] call render_screen_original + //SEG1118 [519] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1119 [519] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1118 [507] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] - //SEG1119 [507] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1120 [509] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1] + //SEG1121 [509] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1120 [507] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1122 [509] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1121 [507] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1123 [509] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@3->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG1122 [507] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG1123 [507] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1124 [507] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1125 [507] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy - //SEG1126 render_init::@1 + //SEG1124 [509] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1125 [509] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1126 [509] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1127 [509] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1128 render_init::@1 b1: - //SEG1127 [508] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1129 [510] (byte) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1128 [509] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte) render_init::$14) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1129 [510] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1131 [512] (byte) render_init::$15 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1130 [511] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1132 [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte) render_init::$15) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1131 [512] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1133 [514] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_1 @@ -25524,7 +25520,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1132 [513] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1134 [515] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc li_2 @@ -25532,16 +25528,16 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1133 [514] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1135 [516] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1134 [515] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1136 [517] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG1135 render_init::@return - //SEG1136 [516] return + //SEG1137 render_init::@return + //SEG1138 [518] return rts } -//SEG1137 render_screen_original +//SEG1139 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 // render_screen_original(byte* zeropage($11) screen) @@ -25552,315 +25548,315 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1138 [518] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] - //SEG1139 [518] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1140 [520] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1141 [520] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1140 [518] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1142 [520] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1141 [518] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1143 [520] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) $20*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1142 [518] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1144 [520] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1143 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy - //SEG1144 [518] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] - //SEG1145 [518] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy - //SEG1146 [518] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy - //SEG1147 [518] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy - //SEG1148 [518] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy - //SEG1149 [518] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy - //SEG1150 render_screen_original::@1 + //SEG1145 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1146 [520] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1] + //SEG1147 [520] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy + //SEG1148 [520] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy + //SEG1149 [520] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy + //SEG1150 [520] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy + //SEG1151 [520] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy + //SEG1152 render_screen_original::@1 b1: - //SEG1151 [519] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG1152 [519] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1153 [521] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1154 [521] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1153 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1154 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy - //SEG1155 [519] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG1156 [519] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1157 [519] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1158 [519] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy - //SEG1159 render_screen_original::@2 + //SEG1155 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1156 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1157 [521] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1158 [521] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1159 [521] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1160 [521] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1161 render_screen_original::@2 b2: - //SEG1160 [520] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1162 [522] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1161 [521] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1163 [523] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1162 [522] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1164 [524] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1163 [523] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1165 [525] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1164 [524] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1166 [526] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1165 [525] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1167 [527] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2 - //SEG1166 [526] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] - //SEG1167 [526] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1168 [526] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1169 [526] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy - //SEG1172 render_screen_original::@3 + //SEG1168 [528] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1169 [528] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1170 [528] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1171 [528] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1172 [528] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1173 [528] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1174 render_screen_original::@3 b3: - //SEG1173 [527] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1175 [529] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1176 [530] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1177 [531] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1176 [530] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1178 [532] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y sta (cols),y - //SEG1177 [531] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1179 [533] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1178 [532] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1180 [534] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1179 [533] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1181 [535] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1180 [534] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1182 [536] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) $24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3 - //SEG1181 [535] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] - //SEG1182 [535] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1183 [535] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1184 [535] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy - //SEG1185 render_screen_original::@4 + //SEG1183 [537] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1184 [537] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1185 [537] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1186 [537] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1187 render_screen_original::@4 b4: - //SEG1186 [536] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1188 [538] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1187 [537] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1189 [539] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [538] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1190 [540] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1189 [539] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1191 [541] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1190 [540] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1192 [542] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1191 [541] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1193 [543] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4 - //SEG1192 render_screen_original::@5 - //SEG1193 [542] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1194 render_screen_original::@5 + //SEG1195 [544] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1194 [543] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1196 [545] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1 - //SEG1195 render_screen_original::@return - //SEG1196 [544] return + //SEG1197 render_screen_original::@return + //SEG1198 [546] return rts } -//SEG1197 sid_rnd_init +//SEG1199 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1198 [545] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG1200 [547] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1199 [546] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1201 [548] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG1200 sid_rnd_init::@return - //SEG1201 [547] return + //SEG1202 sid_rnd_init::@return + //SEG1203 [549] return rts } -//SEG1202 sprites_irq +//SEG1204 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = $24 - //SEG1203 entry interrupt(HARDWARE_CLOBBER) + //SEG1205 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1204 asm { cld } + //SEG1206 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG1205 [549] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1207 [551] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG1206 [550] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1208 [552] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1207 [551] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1208 [552] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1210 [554] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1209 [553] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1211 [555] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1210 [554] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1212 [556] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1211 [555] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1213 [557] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify - //SEG1212 sprites_irq::@8 + //SEG1214 sprites_irq::@8 b8: - //SEG1213 [556] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1215 [558] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 - //SEG1214 sprites_irq::@9 - //SEG1215 [557] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1216 sprites_irq::@9 + //SEG1217 [559] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1216 [558] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG1218 [560] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 - //SEG1217 sprites_irq::@10 - //SEG1218 [559] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1219 sprites_irq::@10 + //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1219 [560] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1221 [562] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG1220 [561] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1222 [563] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1221 [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1222 [563] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1224 [565] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1223 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1225 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG1224 sprites_irq::@2 + //SEG1226 sprites_irq::@2 b2: - //SEG1225 [565] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1227 [567] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1226 [566] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG1228 [568] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 - //SEG1227 sprites_irq::@6 - //SEG1228 [567] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1229 sprites_irq::@6 + //SEG1230 [569] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 - //SEG1229 sprites_irq::@7 - //SEG1230 [568] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1231 sprites_irq::@7 + //SEG1232 [570] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG1231 [569] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1233 [571] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1232 [570] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1234 [572] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG1233 [571] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] - //SEG1234 [571] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy - //SEG1235 sprites_irq::@5 + //SEG1235 [573] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG1236 [573] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG1237 sprites_irq::@5 b5: - //SEG1236 [572] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1238 [574] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG1237 [573] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1239 [575] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG1238 sprites_irq::@return - //SEG1239 [574] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1240 sprites_irq::@return + //SEG1241 [576] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1240 sprites_irq::@4 + //SEG1242 sprites_irq::@4 b4: - //SEG1241 [575] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1243 [577] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1242 [576] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1244 [578] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1243 [577] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1245 [579] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG1244 [578] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1246 [580] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5 - //SEG1245 sprites_irq::@3 + //SEG1247 sprites_irq::@3 b3: - //SEG1246 [579] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1248 [581] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG1247 [580] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1249 [582] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1248 [581] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] - //SEG1249 sprites_irq::toSpritePtr2 - //SEG1250 sprites_irq::@11 - //SEG1251 [582] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1250 [583] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG1251 sprites_irq::toSpritePtr2 + //SEG1252 sprites_irq::@11 + //SEG1253 [584] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5 - //SEG1252 sprites_irq::@1 + //SEG1254 sprites_irq::@1 b1: - //SEG1253 [583] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1254 [584] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG1256 [586] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG1255 [585] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1257 [587] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1256 [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1257 [587] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG1259 [589] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG1258 [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1260 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } diff --git a/src/test/ref/complex/tetris/tetris.sym b/src/test/ref/complex/tetris/tetris.sym index 6f2b2d845..a42d3d6d1 100644 --- a/src/test/ref/complex/tetris/tetris.sym +++ b/src/test/ref/complex/tetris/tetris.sym @@ -229,34 +229,34 @@ (byte*) current_piece#28 current_piece zp ZP_WORD:26 6.0 (byte*~) current_piece#98 current_piece zp ZP_WORD:26 4.0 (byte) current_piece_char -(byte) current_piece_char#10 current_piece_char zp ZP_BYTE:28 187.38888888888889 +(byte) current_piece_char#10 current_piece_char zp ZP_BYTE:28 183.9818181818182 (byte~) current_piece_char#108 current_piece_char#108 zp ZP_BYTE:11 4.0 (byte~) current_piece_char#109 current_piece_char#109 zp ZP_BYTE:11 22.0 (byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 3.4324324324324325 (byte) current_piece_char#29 current_piece_char zp ZP_BYTE:28 6.0 (byte) current_piece_char#5 current_piece_char zp ZP_BYTE:28 0.25806451612903225 -(byte) current_piece_char#68 current_piece_char#68 zp ZP_BYTE:11 50.699999999999996 +(byte) current_piece_char#68 current_piece_char#68 zp ZP_BYTE:11 48.285714285714285 (byte*) current_piece_gfx -(byte*) current_piece_gfx#114 current_piece_gfx zp ZP_WORD:30 187.38888888888889 +(byte*) current_piece_gfx#114 current_piece_gfx zp ZP_WORD:30 183.9818181818182 (byte*~) current_piece_gfx#120 current_piece_gfx#120 zp ZP_WORD:5 2.0 (byte*~) current_piece_gfx#121 current_piece_gfx#121 zp ZP_WORD:5 11.0 (byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:30 6.047619047619047 (byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:30 0.37037037037037035 (byte*) current_piece_gfx#21 current_piece_gfx zp ZP_WORD:30 1.3333333333333333 (byte*) current_piece_gfx#35 current_piece_gfx zp ZP_WORD:30 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 50.699999999999996 +(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 48.285714285714285 (byte*) current_piece_gfx#7 current_piece_gfx zp ZP_WORD:30 4.0 (byte*) current_piece_gfx#74 current_piece_gfx zp ZP_WORD:30 0.26666666666666666 (byte) current_xpos (byte) current_xpos#103 current_xpos zp ZP_BYTE:32 0.3448275862068966 -(byte) current_xpos#124 current_xpos zp ZP_BYTE:32 20.75925925925926 +(byte) current_xpos#124 current_xpos zp ZP_BYTE:32 20.38181818181818 (byte~) current_xpos#130 current_xpos#130 zp ZP_BYTE:10 1.3333333333333333 (byte~) current_xpos#131 current_xpos#131 zp ZP_BYTE:10 7.333333333333333 (byte) current_xpos#19 current_xpos zp ZP_BYTE:32 6.047619047619047 (byte) current_xpos#22 current_xpos zp ZP_BYTE:32 0.7999999999999999 (byte) current_xpos#26 current_xpos zp ZP_BYTE:32 0.4666666666666666 (byte) current_xpos#43 current_xpos zp ZP_BYTE:32 6.0 -(byte) current_xpos#59 current_xpos#59 zp ZP_BYTE:10 5.7 +(byte) current_xpos#59 current_xpos#59 zp ZP_BYTE:10 5.428571428571429 (byte) current_xpos#6 current_xpos zp ZP_BYTE:32 4.0 (byte) current_xpos#8 current_xpos zp ZP_BYTE:32 4.0 (byte) current_ypos @@ -449,7 +449,8 @@ (byte~) next_piece_idx#84 reg byte x 4.0 (byte~) next_piece_idx#85 reg byte x 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 reg byte a 20002.0 +(byte) play_collision::$14 reg byte a 2002.0 +(byte~) play_collision::$5 reg byte a 20002.0 (label) play_collision::@1 (label) play_collision::@10 (label) play_collision::@2 @@ -464,19 +465,15 @@ (byte) play_collision::c (byte) play_collision::c#1 reg byte x 10001.0 (byte) play_collision::c#2 reg byte x 2222.4444444444443 -(byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:15 5000.5 -(byte) play_collision::col#2 col zp ZP_BYTE:15 6375.75 -(byte~) play_collision::col#9 col zp ZP_BYTE:15 2002.0 (byte) play_collision::i (byte) play_collision::i#1 i zp ZP_BYTE:43 1615.6153846153845 (byte~) play_collision::i#11 i#11 zp ZP_BYTE:14 2002.0 (byte~) play_collision::i#13 i#13 zp ZP_BYTE:14 20002.0 (byte) play_collision::i#2 i#2 zp ZP_BYTE:14 15502.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 667.3333333333334 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 500.5 (byte) play_collision::l (byte) play_collision::l#1 l zp ZP_BYTE:13 1001.0 -(byte) play_collision::l#6 l zp ZP_BYTE:13 125.125 +(byte) play_collision::l#6 l zp ZP_BYTE:13 117.76470588235294 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 @@ -494,26 +491,30 @@ (byte) play_collision::return#13 reg byte a 4.0 (byte) play_collision::return#14 reg byte a 4.0 (byte) play_collision::return#15 reg byte a 1.4285714285714284 +(byte) play_collision::xp +(byte) play_collision::xp#1 xp zp ZP_BYTE:15 5000.5 +(byte) play_collision::xp#2 xp zp ZP_BYTE:15 6375.75 +(byte~) play_collision::xp#9 xp zp ZP_BYTE:15 2002.0 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp ZP_BYTE:12 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#2 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#3 xpos zp ZP_BYTE:12 1.0 -(byte) play_collision::xpos#4 xpos zp ZP_BYTE:12 1.3333333333333333 -(byte) play_collision::xpos#6 xpos zp ZP_BYTE:12 45.95454545454545 +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:11 1.0 +(byte) play_collision::xpos#4 xpos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::xpos#6 xpos zp ZP_BYTE:11 45.95454545454545 +(byte) play_collision::yp +(byte) play_collision::yp#0 yp zp ZP_BYTE:12 6.0 +(byte) play_collision::yp#1 yp zp ZP_BYTE:12 500.5 +(byte) play_collision::yp#2 yp zp ZP_BYTE:12 812.875 (byte) play_collision::ypos -(byte) play_collision::ypos#0 ypos zp ZP_BYTE:11 1.0 -(byte) play_collision::ypos#1 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#2 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#3 ypos zp ZP_BYTE:11 1.3333333333333333 -(byte) play_collision::ypos#4 ypos zp ZP_BYTE:11 2.0 -(byte) play_collision::ypos#5 ypos zp ZP_BYTE:11 6.0 -(byte) play_collision::ypos2 -(byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 500.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 867.0666666666667 +(byte) play_collision::ypos#0 ypos zp ZP_BYTE:12 1.0 +(byte) play_collision::ypos#1 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#2 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#3 ypos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::ypos#4 ypos zp ZP_BYTE:12 2.0 (void()) play_increase_level() (byte~) play_increase_level::$1 reg byte a 4.0 +(byte) play_increase_level::$5 reg byte a 4004.0 (label) play_increase_level::@1 (label) play_increase_level::@2 (label) play_increase_level::@3 @@ -524,10 +525,9 @@ (byte) play_increase_level::b (byte) play_increase_level::b#1 reg byte x 1501.5 (byte) play_increase_level::b#2 reg byte x 1001.0 -(byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 reg byte a 4004.0 (void()) play_init() -(byte~) play_init::$2 reg byte x 22.0 +(byte) play_init::$4 reg byte x 22.0 +(byte) play_init::$5 reg byte a 33.0 (label) play_init::@1 (label) play_init::@2 (label) play_init::@3 @@ -535,8 +535,6 @@ (byte) play_init::b (byte) play_init::b#1 reg byte x 16.5 (byte) play_init::b#2 reg byte x 11.0 -(byte) play_init::b4 -(byte) play_init::b4#0 reg byte a 33.0 (byte) play_init::idx (byte) play_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 (byte) play_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 @@ -547,6 +545,7 @@ (byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5 (byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25 (void()) play_lock_current() +(byte) play_lock_current::$4 reg byte a 2002.0 (label) play_lock_current::@1 (label) play_lock_current::@2 (label) play_lock_current::@3 @@ -558,25 +557,25 @@ (byte) play_lock_current::c (byte) play_lock_current::c#1 reg byte x 10001.0 (byte) play_lock_current::c#2 reg byte x 4000.4 -(byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:10 2002.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:10 5000.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:10 7751.0 (byte) play_lock_current::i (byte) play_lock_current::i#1 i zp ZP_BYTE:11 2333.6666666666665 (byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 15502.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 667.3333333333334 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 500.5 (byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 2002.0 (byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 20002.0 (byte) play_lock_current::l (byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 154.0 (byte*) play_lock_current::playfield_line (byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 1100.2 -(byte) play_lock_current::ypos2 -(byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:16 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 500.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 273.1818181818182 +(byte) play_lock_current::xp +(byte) play_lock_current::xp#0 xp zp ZP_BYTE:10 2002.0 +(byte) play_lock_current::xp#1 xp zp ZP_BYTE:10 5000.5 +(byte) play_lock_current::xp#2 xp zp ZP_BYTE:10 7751.0 +(byte) play_lock_current::yp +(byte) play_lock_current::yp#0 yp zp ZP_BYTE:16 4.0 +(byte) play_lock_current::yp#1 yp zp ZP_BYTE:16 500.5 +(byte) play_lock_current::yp#2 yp zp ZP_BYTE:16 250.41666666666669 (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 @@ -704,8 +703,8 @@ (byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 (byte) play_remove_lines::y#8 y zp ZP_BYTE:4 133.46666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$0 $0 zp ZP_BYTE:4 0.06666666666666667 -(byte~) play_spawn_current::$2 reg byte a 4.0 +(byte~) play_spawn_current::$1 reg byte a 4.0 +(byte) play_spawn_current::$7 $7 zp ZP_BYTE:4 0.06666666666666667 (label) play_spawn_current::@1 (label) play_spawn_current::@2 (label) play_spawn_current::@3 @@ -723,7 +722,7 @@ (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 reg byte a 4.0 (byte~) play_update_score::$4 reg byte a 4.0 -(byte~) play_update_score::$5 reg byte a 4.0 +(byte) play_update_score::$9 reg byte a 4.0 (label) play_update_score::@1 (label) play_update_score::@2 (label) play_update_score::@return @@ -776,8 +775,8 @@ (byte*) render_bcd::screen_pos#2 screen_pos zp ZP_WORD:7 4.0 (byte*) render_bcd::screen_pos#3 screen_pos zp ZP_WORD:7 2.0 (void()) render_init() -(byte~) render_init::$13 reg byte a 22.0 -(byte~) render_init::$14 reg byte a 22.0 +(byte) render_init::$14 reg byte a 22.0 +(byte) render_init::$15 reg byte a 22.0 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 @@ -804,7 +803,8 @@ (byte) render_init::vicSelectGfxBank1_toDd001_return (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_CHARSET#0/(byte/signed byte/word/signed word/dword/signed dword) $40 (void()) render_moving() -(byte~) render_moving::$2 reg byte a 202.0 +(byte~) render_moving::$1 reg byte a 202.0 +(byte) render_moving::$6 reg byte a 202.0 (label) render_moving::@1 (label) render_moving::@2 (label) render_moving::@3 @@ -821,24 +821,24 @@ (byte) render_moving::i (byte) render_moving::i#1 i zp ZP_BYTE:14 202.0 (byte) render_moving::i#2 i zp ZP_BYTE:14 500.5 -(byte) render_moving::i#3 i zp ZP_BYTE:14 60.599999999999994 +(byte) render_moving::i#3 i zp ZP_BYTE:14 50.5 (byte) render_moving::i#4 i zp ZP_BYTE:14 1552.0 (byte) render_moving::i#8 i zp ZP_BYTE:14 300.75 (byte) render_moving::l (byte) render_moving::l#1 l zp ZP_BYTE:13 151.5 -(byte) render_moving::l#4 l zp ZP_BYTE:13 12.625 +(byte) render_moving::l#4 l zp ZP_BYTE:13 11.882352941176471 (byte*) render_moving::screen_line (byte*) render_moving::screen_line#0 screen_line zp ZP_WORD:7 110.19999999999999 (byte) render_moving::xpos (byte) render_moving::xpos#0 xpos zp ZP_BYTE:15 202.0 (byte) render_moving::xpos#1 xpos zp ZP_BYTE:15 667.3333333333334 (byte) render_moving::xpos#2 xpos zp ZP_BYTE:15 620.8 -(byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:12 4.0 -(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:12 67.33333333333333 -(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:12 27.06666666666667 +(byte) render_moving::ypos +(byte) render_moving::ypos#0 ypos zp ZP_BYTE:12 4.0 +(byte) render_moving::ypos#1 ypos zp ZP_BYTE:12 67.33333333333333 +(byte) render_moving::ypos#2 ypos zp ZP_BYTE:12 25.375 (void()) render_next() -(byte~) render_next::$4 reg byte y 1.0 +(byte) render_next::$9 reg byte y 1.0 (label) render_next::@1 (label) render_next::@2 (label) render_next::@3 @@ -873,7 +873,7 @@ (byte*) render_next::screen_next_area#5 screen_next_area zp ZP_WORD:7 684.1666666666667 (void()) render_playfield() (byte~) render_playfield::$2 reg byte a 202.0 -(byte~) render_playfield::$3 reg byte a 202.0 +(byte) render_playfield::$6 reg byte a 202.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -960,7 +960,7 @@ (byte) render_screen_render#15 reg byte a 13.0 (byte) render_screen_render#18 render_screen_render zp ZP_BYTE:3 0.923076923076923 (byte) render_screen_render#22 reg byte x 8.615384615384615 -(byte) render_screen_render#33 render_screen_render#33 zp ZP_BYTE:9 5.6 +(byte) render_screen_render#33 render_screen_render#33 zp ZP_BYTE:9 5.333333333333333 (byte~) render_screen_render#68 reg byte a 11.0 (byte~) render_screen_render#69 render_screen_render#69 zp ZP_BYTE:9 5.5 (byte~) render_screen_render#70 reg byte x 22.0 @@ -1073,7 +1073,7 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ] -zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$0 play_update_score::lines_before#0 ] +zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$7 play_update_score::lines_before#0 ] zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] reg byte y [ render_bcd::only_low#6 ] @@ -1083,12 +1083,12 @@ reg byte x [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ] zp ZP_BYTE:9 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] reg byte x [ render_next::c#2 render_next::c#1 ] reg byte x [ current_ypos#13 current_ypos#106 current_ypos#107 ] -zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +zp ZP_BYTE:10 [ current_xpos#59 current_xpos#130 current_xpos#131 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#108 current_piece_char#109 render_playfield::c#2 render_playfield::c#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:12 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 play_remove_lines::c#0 ] zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::xp#2 play_collision::xp#9 play_collision::xp#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] reg byte x [ render_screen_render#22 render_screen_render#70 ] reg byte a [ play_move_rotate::return#2 ] @@ -1097,7 +1097,7 @@ reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#15 ] reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +zp ZP_BYTE:16 [ current_ypos#38 current_ypos#3 current_ypos#100 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] zp ZP_WORD:17 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] zp ZP_DWORD:19 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#16 score_bcd#30 ] zp ZP_BYTE:23 [ level#33 level#10 level#17 level#19 level#21 ] @@ -1139,12 +1139,13 @@ reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] -reg byte y [ render_next::$4 ] +reg byte y [ render_next::$9 ] reg byte a [ render_next::cell#0 ] -reg byte a [ render_moving::$2 ] +reg byte a [ render_moving::$1 ] +reg byte a [ render_moving::$6 ] reg byte a [ render_moving::current_cell#0 ] reg byte a [ render_playfield::$2 ] -reg byte a [ render_playfield::$3 ] +reg byte a [ render_playfield::$6 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] @@ -1157,8 +1158,9 @@ reg byte x [ play_move_rotate::$5 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$2 ] reg byte x [ play_move_rotate::$7 ] +reg byte a [ play_collision::$14 ] zp ZP_BYTE:43 [ play_collision::i#1 ] -reg byte a [ play_collision::$7 ] +reg byte a [ play_collision::$5 ] reg byte a [ play_collision::return#13 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_collision::return#1 ] @@ -1172,15 +1174,16 @@ reg byte a [ play_move_down::removed#0 ] reg byte x [ play_update_score::removed#0 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] reg byte a [ play_collision::return#10 ] -reg byte a [ play_spawn_current::$2 ] +reg byte a [ play_spawn_current::$1 ] reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_update_score::$2 ] -reg byte a [ play_update_score::$4 ] +reg byte a [ play_update_score::$9 ] zp ZP_DWORD:44 [ play_update_score::add_bcd#0 ] -reg byte a [ play_update_score::$5 ] +reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] reg byte a [ play_increase_level::$1 ] -reg byte a [ play_increase_level::b4#0 ] +reg byte a [ play_increase_level::$5 ] +reg byte a [ play_lock_current::$4 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ] @@ -1199,11 +1202,11 @@ reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] reg byte a [ keyboard_matrix_read::return#0 ] -reg byte x [ play_init::$2 ] -reg byte a [ play_init::b4#0 ] +reg byte x [ play_init::$4 ] +reg byte a [ play_init::$5 ] reg byte x [ sprites_init::s2#0 ] -reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] +reg byte a [ render_init::$15 ] reg byte a [ sprites_irq::ypos#0 ] reg byte x [ sprites_irq::$0 ] reg byte x [ sprites_irq::ptr#0 ] diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.asm b/src/test/ref/examples/multiplexer/simple-multiplexer.asm index a5f085fdd..449776ef4 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.asm +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.asm @@ -119,14 +119,18 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + txa asl - tax - lda PLEX_XPOS,x + tay + lda PLEX_XPOS,y ldy plex_sprite_idx2 sta SPRITES_XPOS,y - lda PLEX_XPOS+1,x + txa + asl + tay + lda PLEX_XPOS+1,y cmp #0 bne b1 lda #$ff diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.cfg b/src/test/ref/examples/multiplexer/simple-multiplexer.cfg index 73a86fda2..836cb6582 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.cfg +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.cfg @@ -102,112 +102,114 @@ plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite to:plexShowSprite::@4 plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) - [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 - [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 - [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 + [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) + [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + [47] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 + [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + [50] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 to:plexShowSprite::@3 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@4 - [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 - [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 + [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3 - [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 - [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 + [53] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [54] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [55] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 + [56] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [57] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 to:plexShowSprite::@return plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@5 - [56] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@5/(byte) plex_sprite_msb#25 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [57] return + [58] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@5/(byte) plex_sprite_msb#25 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [59] return to:@return plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::@2 - [58] phi() + [60] phi() to:plexShowSprite::@return plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@4 - [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 + [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 to:plexShowSprite::@2 plexSort: scope:[plexSort] from loop::@5 - [60] phi() + [62] phi() to:plexSort::@1 plexSort::@1: scope:[plexSort] from plexSort plexSort::@2 - [61] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) - [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) - [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) - [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 + [63] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) + [64] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) + [65] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) + [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 to:plexSort::@6 plexSort::@6: scope:[plexSort] from plexSort::@1 - [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 + [67] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 to:plexSort::@3 plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@6 - [66] (byte) plexSort::s#3 ← phi( plexSort::@5/(byte) plexSort::s#1 plexSort::@6/(byte~) plexSort::s#6 ) - [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) - [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 - [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 + [68] (byte) plexSort::s#3 ← phi( plexSort::@5/(byte) plexSort::s#1 plexSort::@6/(byte~) plexSort::s#6 ) + [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) + [70] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 + [71] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 to:plexSort::@4 plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@5 - [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 - [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 + [72] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 + [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 to:plexSort::@2 plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4 - [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 - [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 + [74] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 + [75] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 to:plexSort::plexFreePrepare1 plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@2 - [74] phi() + [76] phi() to:plexSort::plexFreePrepare1_@1 plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1 - [75] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 ) - [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 - [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 + [77] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 ) + [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [79] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 + [80] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 to:plexSort::@return plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@1 - [79] return + [81] return to:@return plexSort::@5: scope:[plexSort] from plexSort::@3 - [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 + [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 to:plexSort::@4 init: scope:[init] from main - [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [82] call plexInit + [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [84] call plexInit to:init::@1 init::@1: scope:[init] from init init::@1 - [83] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) - [83] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 - [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 - [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 - [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 - [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [85] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) + [85] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 + [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 + [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 + [90] (byte) init::sx#1 ← ++ (byte) init::sx#2 + [91] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 - [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff + [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff to:init::@3 init::@3: scope:[init] from init::@2 init::@3 - [91] (byte) init::ss#2 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@3/(byte) init::ss#1 ) - [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 - [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 - [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 + [93] (byte) init::ss#2 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@3/(byte) init::ss#1 ) + [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 + [95] (byte) init::ss#1 ← ++ (byte) init::ss#2 + [96] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 to:init::@return init::@return: scope:[init] from init::@3 - [95] return + [97] return to:@return plexInit: scope:[plexInit] from init - [96] phi() + [98] phi() to:plexInit::plexSetScreen1 plexInit::plexSetScreen1: scope:[plexInit] from plexInit - [97] phi() + [99] phi() to:plexInit::@1 plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1 - [98] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 - [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 - [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 + [100] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [101] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 + [102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 + [103] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 to:plexInit::@return plexInit::@return: scope:[plexInit] from plexInit::@1 - [102] return + [104] return to:@return diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index 24d3cfbed..49e93843f 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -1,3 +1,6 @@ +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) plexShowSprite::xpos_idx) +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) plexShowSprite::xpos_idx) +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) init::sx) Identified constant variable (byte*) SCREEN Identified constant variable (byte*) SPRITE Identified constant variable (byte*) YSIN @@ -179,13 +182,14 @@ plexShowSprite::@7: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 (byte*) PLEX_SCREEN_PTR#9 ← phi( plexShowSprite::plexFreeAdd1/(byte*) PLEX_SCREEN_PTR#16 ) (byte) plex_show_idx#13 ← phi( plexShowSprite::plexFreeAdd1/(byte) plex_show_idx#24 ) *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#13) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) - (byte~) plexShowSprite::$2 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) plexShowSprite::xpos_idx#0 ← (byte~) plexShowSprite::$2 - (byte~) plexShowSprite::$3 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#1) ← (byte~) plexShowSprite::$3 - (byte~) plexShowSprite::$4 ← > *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - (bool~) plexShowSprite::$5 ← (byte~) plexShowSprite::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) plexShowSprite::$5) goto plexShowSprite::@1 + (byte) plexShowSprite::xpos_idx#0 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) + (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD + (byte~) plexShowSprite::$2 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#1) ← (byte~) plexShowSprite::$2 + (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD + (byte~) plexShowSprite::$3 ← > *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + (bool~) plexShowSprite::$4 ← (byte~) plexShowSprite::$3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) plexShowSprite::$4) goto plexShowSprite::@1 to:plexShowSprite::@4 plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@7 (byte) plex_free_next#38 ← phi( plexShowSprite::@7/(byte) plex_free_next#44 ) @@ -199,22 +203,22 @@ plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@7 (byte) plex_show_idx#26 ← phi( plexShowSprite::@7/(byte) plex_show_idx#13 ) (byte) plex_sprite_idx#26 ← phi( plexShowSprite::@7/(byte) plex_sprite_idx#13 ) (byte) plex_sprite_msb#14 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#24 ) - (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#14 - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#14 + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@4 (byte) plex_free_next#30 ← phi( plexShowSprite::@1/(byte) plex_free_next#38 plexShowSprite::@4/(byte) plex_free_next#39 ) (byte) plex_sprite_msb#15 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#13 plexShowSprite::@4/(byte) plex_sprite_msb#14 ) (byte) plex_show_idx#14 ← phi( plexShowSprite::@1/(byte) plex_show_idx#25 plexShowSprite::@4/(byte) plex_show_idx#26 ) (byte) plex_sprite_idx#14 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#25 plexShowSprite::@4/(byte) plex_sprite_idx#26 ) - (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$7 + (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$6 (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#14 (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) plexShowSprite::$9 ← ! (bool~) plexShowSprite::$8 - if((bool~) plexShowSprite::$9) goto plexShowSprite::@3 + (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) plexShowSprite::$8 ← ! (bool~) plexShowSprite::$7 + if((bool~) plexShowSprite::$8) goto plexShowSprite::@3 to:plexShowSprite::@6 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@2 (byte) plex_sprite_msb#25 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 ) @@ -332,12 +336,12 @@ init::@1: scope:[init] from init::@1 init::@5 (byte*~) init::$4 ← (byte*) SPRITE#0 / (byte/signed byte/word/signed word/dword/signed dword) $40 (byte~) init::$5 ← ((byte)) (byte*~) init::$4 *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← (byte~) init::$5 - (byte/signed word/word/dword/signed dword~) init::$6 ← (byte) init::sx#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte/signed word/word/dword/signed dword~) init::$6) ← (word) init::xp#2 + (byte) init::$8 ← (byte) init::sx#2 * (const byte) SIZEOF_WORD + *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) init::sx#1 ← (byte) init::sx#2 + rangenext(0,init::$3) - (bool~) init::$7 ← (byte) init::sx#1 != rangelast(0,init::$3) - if((bool~) init::$7) goto init::@1 + (bool~) init::$6 ← (byte) init::sx#1 != rangelast(0,init::$3) + if((bool~) init::$6) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 (byte*) PLEX_SCREEN_PTR#24 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#28 ) @@ -349,8 +353,8 @@ init::@3: scope:[init] from init::@2 init::@3 (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#0 init::@3/(byte) init::ss#1 ) *((byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (byte) GREEN#0 (byte) init::ss#1 ← (byte) init::ss#2 + rangenext(0,7) - (bool~) init::$8 ← (byte) init::ss#1 != rangelast(0,7) - if((bool~) init::$8) goto init::@3 + (bool~) init::$7 ← (byte) init::ss#1 != rangelast(0,7) + if((bool~) init::$7) goto init::@3 to:init::@return init::@return: scope:[init] from init::@3 (byte*) PLEX_SCREEN_PTR#13 ← phi( init::@3/(byte*) PLEX_SCREEN_PTR#20 ) @@ -697,6 +701,7 @@ SYMBOL TABLE SSA (byte*) RASTER#0 (byte*) SCREEN (byte*) SCREEN#0 +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SPRITE (byte*) SPRITE#0 (byte*) SPRITES_COLS @@ -723,9 +728,9 @@ SYMBOL TABLE SSA (byte/signed word/word/dword/signed dword~) init::$3 (byte*~) init::$4 (byte~) init::$5 -(byte/signed word/word/dword/signed dword~) init::$6 +(bool~) init::$6 (bool~) init::$7 -(bool~) init::$8 +(byte) init::$8 (label) init::@1 (label) init::@2 (label) init::@3 @@ -850,15 +855,16 @@ SYMBOL TABLE SSA (byte*) plexInit::screen#1 (void()) plexShowSprite() (byte~) plexShowSprite::$0 -(byte/word/dword~) plexShowSprite::$10 +(byte) plexShowSprite::$10 +(byte) plexShowSprite::$11 (byte~) plexShowSprite::$2 (byte~) plexShowSprite::$3 -(byte~) plexShowSprite::$4 -(bool~) plexShowSprite::$5 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 -(byte/word/dword~) plexShowSprite::$7 +(bool~) plexShowSprite::$4 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 +(byte/word/dword~) plexShowSprite::$6 +(bool~) plexShowSprite::$7 (bool~) plexShowSprite::$8 -(bool~) plexShowSprite::$9 +(byte/word/dword~) plexShowSprite::$9 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -1151,7 +1157,7 @@ SYMBOL TABLE SSA (byte) plex_sprite_msb#9 Inversing boolean not [46] (bool~) plexSort::$4 ← (byte) plexSort::nxt_y#0 >= *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) from [45] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 < *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) -Inversing boolean not [116] (bool~) plexShowSprite::$9 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [115] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [117] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [116] (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#22 @@ -1177,8 +1183,7 @@ Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREE Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#24 (byte) plex_sprite_idx#13 (byte) plex_sprite_idx#25 (byte) plex_sprite_idx#26 Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#32 (byte) plex_sprite_msb#40 (byte) plex_sprite_msb#24 (byte) plex_sprite_msb#14 Alias (byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 (byte) plex_free_next#44 (byte) plex_free_next#38 (byte) plex_free_next#39 -Alias (byte) plexShowSprite::xpos_idx#0 = (byte~) plexShowSprite::$2 -Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#28 +Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$6 (byte) plex_sprite_idx#28 Alias (byte) plex_free_next#22 = (byte) plex_free_next#30 (byte) plex_free_next#23 Alias (byte) plex_show_idx#27 = (byte) plex_show_idx#3 (byte) plex_show_idx#28 Alias (byte) plex_sprite_msb#25 = (byte) plex_sprite_msb#3 @@ -1379,15 +1384,15 @@ Simple Condition (bool~) plexInit::$2 [35] if((byte) plexInit::i#1!=rangelast(0, Simple Condition (bool~) plexSort::$4 [47] if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 Simple Condition (bool~) plexSort::$9 [51] if((byte) plexSort::m#1!=rangelast(0,plexSort::$1)) goto plexSort::@1 Simple Condition (bool) plexSort::plexFreePrepare1_$0#0 [74] if((byte) plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1 -Simple Condition (bool~) plexShowSprite::$5 [103] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -Simple Condition (bool~) plexShowSprite::$9 [117] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 -Simple Condition (bool~) init::$7 [174] if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1 -Simple Condition (bool~) init::$8 [182] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3 -Simple Condition (bool~) loop::$0 [193] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5 -Simple Condition (bool~) loop::$2 [205] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 -Simple Condition (bool~) loop::$5 [219] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@13 -Simple Condition (bool~) loop::$8 [235] if(*((byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@20 -Simple Condition (bool~) loop::$10 [247] if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@18 +Simple Condition (bool~) plexShowSprite::$4 [104] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 +Simple Condition (bool~) plexShowSprite::$8 [118] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 +Simple Condition (bool~) init::$6 [175] if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1 +Simple Condition (bool~) init::$7 [183] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3 +Simple Condition (bool~) loop::$0 [194] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5 +Simple Condition (bool~) loop::$2 [206] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 +Simple Condition (bool~) loop::$5 [220] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@13 +Simple Condition (bool~) loop::$8 [236] if(*((byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@20 +Simple Condition (bool~) loop::$10 [248] if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@18 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s [60] (bool~) plexSort::$8 ← (bool~) plexSort::$6 && (bool~) plexSort::$7 Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -1450,7 +1455,7 @@ Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in assignment *(PLEX_SORTED_IDX#0+1 + plexSort::$2) Consolidated array index constant in assignment *(PLEX_SORTED_IDX#0+1 + plexSort::$5) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [71] if(true) goto loop::@2 +if() condition always true - replacing block destination [73] if(true) goto loop::@2 Successful SSA optimization Pass2ConstantIfs Inferred type updated to byte in [6] (byte/signed word/word/dword/signed dword~) plexSort::$2 ← (byte) plexSort::m#2 Inferred type updated to byte in [13] (byte/signed word/word/dword/signed dword~) plexSort::$5 ← (byte) plexSort::s#3 @@ -1472,7 +1477,9 @@ Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++ Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value loop::ss#1 ← ++ loop::ss#6 to ++ Resolved ranged comparison value if(loop::ss#1!=rangelast(0,loop::$6)) goto loop::@18 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) init::$6 ← (byte) init::sx#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 +Rewriting multiplication to use shift (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) init::$8 ← (byte) init::sx#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) @4 Culled Empty Block (label) plexInit::@3 @@ -1502,9 +1509,9 @@ Redundant Phi (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#44 Redundant Phi (byte) loop::sin_idx#14 (byte) loop::sin_idx#1 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) plexSort::$6 [18] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@8 -Simple Condition (bool~) plexSort::$7 [94] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 +Simple Condition (bool~) plexSort::$7 [96] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Inferred type updated to byte in [55] (byte/signed word/word/dword/signed dword~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 +Successful SSA optimization PassNEliminateUnusedVars Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#44 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte*) PLEX_SCREEN_PTR#44 (const byte*) PLEX_SCREEN_PTR#1 @@ -1572,7 +1579,7 @@ CALL GRAPH Calls in [] to main:4 Calls in [main] to init:7 loop:9 Calls in [loop] to plexSort:23 plexShowSprite:32 -Calls in [init] to plexInit:94 +Calls in [init] to plexInit:96 Created 16 initial phi equivalence classes Not coalescing [15] loop::y_idx#4 ← loop::sin_idx#6 @@ -1584,15 +1591,15 @@ Coalesced [40] plex_sprite_msb#54 ← plex_sprite_msb#16 Coalesced [41] loop::ss#10 ← loop::ss#1 Coalesced [42] loop::y_idx#3 ← loop::y_idx#1 Coalesced [43] loop::sy#3 ← loop::sy#1 -Coalesced [67] plex_sprite_msb#55 ← plex_sprite_msb#25 -Not coalescing [74] plexSort::s#6 ← plexSort::m#2 -Coalesced [89] plexSort::plexFreePrepare1_s#3 ← plexSort::plexFreePrepare1_s#1 -Coalesced [90] plexSort::m#7 ← plexSort::m#1 -Coalesced [92] plexSort::s#5 ← plexSort::s#1 -Coalesced [108] init::ss#3 ← init::ss#1 -Coalesced [109] init::sx#3 ← init::sx#1 -Coalesced [110] init::xp#3 ← init::xp#1 -Coalesced [118] plexInit::i#3 ← plexInit::i#1 +Coalesced [69] plex_sprite_msb#55 ← plex_sprite_msb#25 +Not coalescing [76] plexSort::s#6 ← plexSort::m#2 +Coalesced [91] plexSort::plexFreePrepare1_s#3 ← plexSort::plexFreePrepare1_s#1 +Coalesced [92] plexSort::m#7 ← plexSort::m#1 +Coalesced [94] plexSort::s#5 ← plexSort::s#1 +Coalesced [110] init::ss#3 ← init::ss#1 +Coalesced [111] init::sx#3 ← init::sx#1 +Coalesced [112] init::xp#3 ← init::xp#1 +Coalesced [120] plexInit::i#3 ← plexInit::i#1 Coalesced down to 15 phi equivalence classes Culled Empty Block (label) loop::@33 Culled Empty Block (label) loop::@32 @@ -1737,114 +1744,116 @@ plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite to:plexShowSprite::@4 plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) - [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 - [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 - [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 + [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) + [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + [47] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 + [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + [50] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 to:plexShowSprite::@3 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@4 - [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 - [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 + [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3 - [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 - [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 + [53] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [54] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [55] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 + [56] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [57] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 to:plexShowSprite::@return plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@5 - [56] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@5/(byte) plex_sprite_msb#25 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [57] return + [58] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@5/(byte) plex_sprite_msb#25 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [59] return to:@return plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::@2 - [58] phi() + [60] phi() to:plexShowSprite::@return plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@4 - [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 + [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 to:plexShowSprite::@2 plexSort: scope:[plexSort] from loop::@5 - [60] phi() + [62] phi() to:plexSort::@1 plexSort::@1: scope:[plexSort] from plexSort plexSort::@2 - [61] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) - [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) - [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) - [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 + [63] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) + [64] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) + [65] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) + [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 to:plexSort::@6 plexSort::@6: scope:[plexSort] from plexSort::@1 - [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 + [67] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 to:plexSort::@3 plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@6 - [66] (byte) plexSort::s#3 ← phi( plexSort::@5/(byte) plexSort::s#1 plexSort::@6/(byte~) plexSort::s#6 ) - [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) - [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 - [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 + [68] (byte) plexSort::s#3 ← phi( plexSort::@5/(byte) plexSort::s#1 plexSort::@6/(byte~) plexSort::s#6 ) + [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) + [70] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 + [71] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 to:plexSort::@4 plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@5 - [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 - [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 + [72] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 + [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 to:plexSort::@2 plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4 - [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 - [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 + [74] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 + [75] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 to:plexSort::plexFreePrepare1 plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@2 - [74] phi() + [76] phi() to:plexSort::plexFreePrepare1_@1 plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1 - [75] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 ) - [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 - [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 + [77] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 ) + [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [79] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 + [80] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 to:plexSort::@return plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@1 - [79] return + [81] return to:@return plexSort::@5: scope:[plexSort] from plexSort::@3 - [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 + [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 to:plexSort::@4 init: scope:[init] from main - [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [82] call plexInit + [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [84] call plexInit to:init::@1 init::@1: scope:[init] from init init::@1 - [83] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) - [83] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 - [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 - [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 - [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 - [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [85] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) + [85] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 + [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 + [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 + [90] (byte) init::sx#1 ← ++ (byte) init::sx#2 + [91] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 - [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff + [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff to:init::@3 init::@3: scope:[init] from init::@2 init::@3 - [91] (byte) init::ss#2 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@3/(byte) init::ss#1 ) - [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 - [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 - [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 + [93] (byte) init::ss#2 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@3/(byte) init::ss#1 ) + [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 + [95] (byte) init::ss#1 ← ++ (byte) init::ss#2 + [96] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 to:init::@return init::@return: scope:[init] from init::@3 - [95] return + [97] return to:@return plexInit: scope:[plexInit] from init - [96] phi() + [98] phi() to:plexInit::plexSetScreen1 plexInit::plexSetScreen1: scope:[plexInit] from plexInit - [97] phi() + [99] phi() to:plexInit::@1 plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1 - [98] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 - [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 - [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 + [100] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [101] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 + [102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 + [103] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 to:plexInit::@return plexInit::@return: scope:[plexInit] from plexInit::@1 - [102] return + [104] return to:@return @@ -1873,7 +1882,7 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_RST8 (byte*) YSIN (void()) init() -(byte~) init::$6 22.0 +(byte) init::$8 22.0 (byte) init::ss (byte) init::ss#1 16.5 (byte) init::ss#2 16.5 @@ -1910,10 +1919,12 @@ VARIABLE REGISTER WEIGHTS (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 4.0 +(byte) plexShowSprite::$10 4.0 +(byte) plexShowSprite::$11 4.0 +(byte~) plexShowSprite::$2 4.0 (byte~) plexShowSprite::$3 4.0 -(byte~) plexShowSprite::$4 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 4.0 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 4.0 +(byte/word/dword~) plexShowSprite::$9 4.0 (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$0 (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 4.0 (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1 @@ -1922,9 +1933,9 @@ VARIABLE REGISTER WEIGHTS (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 2.0 +(byte) plexShowSprite::xpos_idx#0 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (byte) plexSort::m @@ -1944,18 +1955,18 @@ VARIABLE REGISTER WEIGHTS (byte) plexSort::s#3 2052.5 (byte~) plexSort::s#6 202.0 (byte) plex_free_next -(byte) plex_free_next#13 4.904761904761904 +(byte) plex_free_next#13 4.478260869565218 (byte) plex_free_next#17 20.599999999999998 (byte) plex_show_idx (byte) plex_show_idx#15 11.444444444444443 -(byte) plex_show_idx#44 4.73913043478261 +(byte) plex_show_idx#44 4.36 (byte) plex_sprite_idx (byte) plex_sprite_idx#15 10.299999999999999 -(byte) plex_sprite_idx#44 5.095238095238094 +(byte) plex_sprite_idx#44 4.652173913043479 (byte) plex_sprite_msb (byte) plex_sprite_msb#16 20.599999999999998 (byte) plex_sprite_msb#25 2.0 -(byte) plex_sprite_msb#44 4.458333333333332 +(byte) plex_sprite_msb#44 4.115384615384615 Initial phi equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] @@ -1980,14 +1991,16 @@ Added variable plexShowSprite::plexFreeAdd1_ypos#0 to zero page equivalence clas Added variable plexShowSprite::plexFreeAdd1_$0#0 to zero page equivalence class [ plexShowSprite::plexFreeAdd1_$0#0 ] Added variable plexShowSprite::plexFreeAdd1_$1#0 to zero page equivalence class [ plexShowSprite::plexFreeAdd1_$1#0 ] Added variable plexShowSprite::xpos_idx#0 to zero page equivalence class [ plexShowSprite::xpos_idx#0 ] -Added variable plexShowSprite::$3 to zero page equivalence class [ plexShowSprite::$3 ] -Added variable plexShowSprite::$4 to zero page equivalence class [ plexShowSprite::$4 ] Added variable plexShowSprite::$10 to zero page equivalence class [ plexShowSprite::$10 ] -Added variable plexShowSprite::$6 to zero page equivalence class [ plexShowSprite::$6 ] +Added variable plexShowSprite::$2 to zero page equivalence class [ plexShowSprite::$2 ] +Added variable plexShowSprite::$11 to zero page equivalence class [ plexShowSprite::$11 ] +Added variable plexShowSprite::$3 to zero page equivalence class [ plexShowSprite::$3 ] +Added variable plexShowSprite::$9 to zero page equivalence class [ plexShowSprite::$9 ] +Added variable plexShowSprite::$5 to zero page equivalence class [ plexShowSprite::$5 ] Added variable plexSort::nxt_idx#0 to zero page equivalence class [ plexSort::nxt_idx#0 ] Added variable plexSort::nxt_y#0 to zero page equivalence class [ plexSort::nxt_y#0 ] Added variable plexSort::s#2 to zero page equivalence class [ plexSort::s#2 ] -Added variable init::$6 to zero page equivalence class [ init::$6 ] +Added variable init::$8 to zero page equivalence class [ init::$8 ] Complete equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] @@ -2011,14 +2024,16 @@ Complete equivalence classes [ plexShowSprite::plexFreeAdd1_$0#0 ] [ plexShowSprite::plexFreeAdd1_$1#0 ] [ plexShowSprite::xpos_idx#0 ] -[ plexShowSprite::$3 ] -[ plexShowSprite::$4 ] [ plexShowSprite::$10 ] -[ plexShowSprite::$6 ] +[ plexShowSprite::$2 ] +[ plexShowSprite::$11 ] +[ plexShowSprite::$3 ] +[ plexShowSprite::$9 ] +[ plexShowSprite::$5 ] [ plexSort::nxt_idx#0 ] [ plexSort::nxt_y#0 ] [ plexSort::s#2 ] -[ init::$6 ] +[ init::$8 ] Allocated zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Allocated zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] Allocated zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] @@ -2041,14 +2056,16 @@ Allocated zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] Allocated zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] Allocated zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] Allocated zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] -Allocated zp ZP_BYTE:25 [ plexShowSprite::$3 ] -Allocated zp ZP_BYTE:26 [ plexShowSprite::$4 ] -Allocated zp ZP_BYTE:27 [ plexShowSprite::$10 ] -Allocated zp ZP_BYTE:28 [ plexShowSprite::$6 ] -Allocated zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] -Allocated zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] -Allocated zp ZP_BYTE:31 [ plexSort::s#2 ] -Allocated zp ZP_BYTE:32 [ init::$6 ] +Allocated zp ZP_BYTE:25 [ plexShowSprite::$10 ] +Allocated zp ZP_BYTE:26 [ plexShowSprite::$2 ] +Allocated zp ZP_BYTE:27 [ plexShowSprite::$11 ] +Allocated zp ZP_BYTE:28 [ plexShowSprite::$3 ] +Allocated zp ZP_BYTE:29 [ plexShowSprite::$9 ] +Allocated zp ZP_BYTE:30 [ plexShowSprite::$5 ] +Allocated zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] +Allocated zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] +Allocated zp ZP_BYTE:33 [ plexSort::s#2 ] +Allocated zp ZP_BYTE:34 [ init::$8 ] INITIAL ASM //SEG0 File Comments @@ -2192,7 +2209,7 @@ loop: { //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [23] call plexSort - //SEG45 [60] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] + //SEG45 [62] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] plexSort_from_b5: jsr plexSort jmp b11 @@ -2289,10 +2306,12 @@ loop: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label _3 = $19 - .label _4 = $1a - .label _6 = $1c - .label _10 = $1b + .label _2 = $1a + .label _3 = $1c + .label _5 = $1e + .label _9 = $1d + .label _10 = $19 + .label _11 = $1b .label plex_sprite_idx2 = $14 .label plexFreeAdd1_ypos = $15 .label plexFreeAdd1__0 = $16 @@ -2339,85 +2358,92 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) -- vbuz1=pbuc1_derefidx_vbuz2 ldy plex_show_idx lda PLEX_SORTED_IDX,y - asl sta xpos_idx - //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 - ldy xpos_idx + //SEG91 [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda xpos_idx + asl + sta _10 + //SEG92 [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 + ldy _10 lda PLEX_XPOS,y - sta _3 - //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _3 + sta _2 + //SEG93 [47] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _2 ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 - ldy xpos_idx + //SEG94 [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda xpos_idx + asl + sta _11 + //SEG95 [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 + ldy _11 lda PLEX_XPOS+1,y - sta _4 - //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 - lda _4 + sta _3 + //SEG96 [50] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 + lda _3 cmp #0 bne b1 jmp b3 - //SEG95 plexShowSprite::@3 + //SEG97 plexShowSprite::@3 b3: - //SEG96 [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG98 [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor plex_sprite_msb - sta _10 - //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _9 + //SEG99 [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB - and _10 + and _9 sta SPRITES_XMSB jmp b2 - //SEG98 plexShowSprite::@2 + //SEG100 plexShowSprite::@2 b2: - //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG101 [53] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy plex_sprite_idx iny - sty _6 - //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + sty _5 + //SEG102 [54] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 - and _6 + and _5 sta plex_sprite_idx - //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG103 [55] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG104 [56] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 + //SEG105 [57] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne b5_from_b2 - //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG106 [58] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG107 [58] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG106 plexShowSprite::@return + //SEG108 plexShowSprite::@return breturn: - //SEG107 [57] return + //SEG109 [59] return rts - //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] + //SEG110 [60] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] b5_from_b2: jmp b5 - //SEG109 plexShowSprite::@5 + //SEG111 plexShowSprite::@5 b5: - //SEG110 [56] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] + //SEG112 [58] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] breturn_from_b5: - //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy + //SEG113 [58] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG112 plexShowSprite::@1 + //SEG114 plexShowSprite::@1 b1: - //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG115 [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG114 plexSort +//SEG116 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -2428,116 +2454,116 @@ plexShowSprite: { // elements before the marker are shifted right one at a time until encountering one smaller than the current one. // It is then inserted at the spot. Now the marker can move forward. plexSort: { - .label nxt_idx = $1d - .label nxt_y = $1e + .label nxt_idx = $1f + .label nxt_y = $20 .label m = $a .label s = $b - .label s_2 = $1f + .label s_2 = $21 .label plexFreePrepare1_s = $c - //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG117 [63] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG118 [63] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG119 [63] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG120 [63] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG119 plexSort::@1 + //SEG121 plexSort::@1 b1: - //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG122 [64] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG123 [65] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG124 [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b6 - //SEG123 plexSort::@6 + //SEG125 plexSort::@6 b6: - //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuz1=vbuz2 + //SEG126 [67] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuz1=vbuz2 lda m sta s - //SEG125 [66] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] + //SEG127 [68] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] b3_from_b5: b3_from_b6: - //SEG126 [66] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy + //SEG128 [68] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy jmp b3 - //SEG127 plexSort::@3 + //SEG129 plexSort::@3 b3: - //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG130 [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy s lda PLEX_SORTED_IDX,y sta PLEX_SORTED_IDX+1,y - //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuz1=_dec_vbuz1 + //SEG131 [70] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuz1=_dec_vbuz1 dec s - //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG132 [71] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$ff cmp s bne b5 jmp b4 - //SEG131 plexSort::@4 + //SEG133 plexSort::@4 b4: - //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuz1=_inc_vbuz2 + //SEG134 [72] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuz1=_inc_vbuz2 ldy s iny sty s_2 - //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG135 [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda nxt_idx ldy s_2 sta PLEX_SORTED_IDX,y jmp b2 - //SEG134 plexSort::@2 + //SEG136 plexSort::@2 b2: - //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG137 [74] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG138 [75] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLEX_COUNT-2+1 cmp m bne b1_from_b2 - //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG139 [76] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] plexFreePrepare1_from_b2: jmp plexFreePrepare1 - //SEG138 plexSort::plexFreePrepare1 + //SEG140 plexSort::plexFreePrepare1 plexFreePrepare1: - //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG141 [77] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1: - //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuz1=vbuc1 + //SEG142 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuz1=vbuc1 lda #0 sta plexFreePrepare1_s jmp plexFreePrepare1_b1 - //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG143 [77] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1_b1: - //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG144 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy jmp plexFreePrepare1_b1 - //SEG143 plexSort::plexFreePrepare1_@1 + //SEG145 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG146 [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy plexFreePrepare1_s sta PLEX_FREE_YPOS,y - //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuz1=_inc_vbuz1 + //SEG147 [79] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuz1=_inc_vbuz1 inc plexFreePrepare1_s - //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG148 [80] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp plexFreePrepare1_s bne plexFreePrepare1_b1_from_plexFreePrepare1_b1 jmp breturn - //SEG147 plexSort::@return + //SEG149 plexSort::@return breturn: - //SEG148 [79] return + //SEG150 [81] return rts - //SEG149 plexSort::@5 + //SEG151 plexSort::@5 b5: - //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG152 [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx s ldy PLEX_SORTED_IDX,x @@ -2545,53 +2571,53 @@ plexSort: { bcc b3_from_b5 jmp b4 } -//SEG151 init +//SEG153 init // Initialize the program init: { - .label _6 = $20 + .label _8 = $22 .label xp = $e .label sx = $d .label ss = $10 - //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG154 [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG153 [82] call plexInit - //SEG154 [96] phi from init to plexInit [phi:init->plexInit] + //SEG155 [84] call plexInit + //SEG156 [98] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] + //SEG157 [85] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG158 [85] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #$20 sta xp lda #0 sta xp+1 - //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 + //SEG159 [85] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 lda #0 sta sx jmp b1 - //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG160 [85] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG161 [85] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG162 [85] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG161 init::@1 + //SEG163 init::@1 b1: - //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG164 [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuz1=vbuc2 lda #$ff&SPRITE/$40 ldy sx sta PLEX_PTR,y - //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG165 [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda sx asl - sta _6 - //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _6 + sta _8 + //SEG166 [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _8 lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG167 [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 lda #9 clc adc xp @@ -2599,82 +2625,82 @@ init: { bcc !+ inc xp+1 !: - //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuz1=_inc_vbuz1 + //SEG168 [90] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuz1=_inc_vbuz1 inc sx - //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG169 [91] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLEX_COUNT-1+1 cmp sx bne b1_from_b1 jmp b2 - //SEG168 init::@2 + //SEG170 init::@2 b2: - //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 + //SEG171 [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 // Enable & initialize sprites lda #$ff sta SPRITES_ENABLE - //SEG170 [91] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG172 [93] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG173 [93] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta ss jmp b3 - //SEG172 [91] phi from init::@3 to init::@3 [phi:init::@3->init::@3] + //SEG174 [93] phi from init::@3 to init::@3 [phi:init::@3->init::@3] b3_from_b3: - //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy + //SEG175 [93] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy jmp b3 - //SEG174 init::@3 + //SEG176 init::@3 b3: - //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG177 [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #GREEN ldy ss sta SPRITES_COLS,y - //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuz1=_inc_vbuz1 + //SEG178 [95] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuz1=_inc_vbuz1 inc ss - //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG179 [96] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp ss bne b3_from_b3 jmp breturn - //SEG178 init::@return + //SEG180 init::@return breturn: - //SEG179 [95] return + //SEG181 [97] return rts } -//SEG180 plexInit +//SEG182 plexInit // Initialize the multiplexer data structures plexInit: { .label i = $11 - //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG183 [99] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG182 plexInit::plexSetScreen1 + //SEG184 plexInit::plexSetScreen1 plexSetScreen1: - //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG185 [100] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 + //SEG186 [100] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG187 [100] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG188 [100] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG187 plexInit::@1 + //SEG189 plexInit::@1 b1: - //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG190 [101] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta PLEX_SORTED_IDX,y - //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuz1=_inc_vbuz1 + //SEG191 [102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG192 [103] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLEX_COUNT-1+1 cmp i bne b1_from_b1 jmp breturn - //SEG191 plexInit::@return + //SEG193 plexInit::@return breturn: - //SEG192 [102] return + //SEG194 [104] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. @@ -2720,30 +2746,31 @@ Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a -Statement [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] -Statement [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ) always clobbers reg byte a -Statement [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$10 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$10 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a -Statement [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a -Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a +Statement [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$11 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$11 ] ) always clobbers reg byte a +Statement [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$9 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a +Statement [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a +Statement [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Statement [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a +Statement [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a +Statement [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] -Statement [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a +Statement [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ init::sx#2 init::sx#1 ] -Statement [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a -Statement [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a +Statement [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$8 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$8 ] ) always clobbers reg byte a +Statement [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ init::ss#2 init::ss#1 ] Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@2 [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] ) always clobbers reg byte a Statement [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a @@ -2754,24 +2781,25 @@ Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a -Statement [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ) always clobbers reg byte a -Statement [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$10 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$10 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a -Statement [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a -Statement [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a -Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a -Statement [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a -Statement [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a -Statement [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a +Statement [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ) always clobbers reg byte a +Statement [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$11 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$11 ] ) always clobbers reg byte a +Statement [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$9 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a +Statement [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a +Statement [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a +Statement [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a +Statement [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a +Statement [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a +Statement [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a +Statement [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$8 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$8 ] ) always clobbers reg byte a +Statement [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -2794,81 +2822,87 @@ Potential registers zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] : zp Z Potential registers zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ plexShowSprite::$3 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ plexShowSprite::$4 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ plexShowSprite::$10 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ plexShowSprite::$6 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ plexSort::s#2 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ init::$6 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ plexShowSprite::$10 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ plexShowSprite::$2 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ plexShowSprite::$11 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ plexShowSprite::$3 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ plexShowSprite::$9 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ plexShowSprite::$5 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] : zp ZP_BYTE:31 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] : zp ZP_BYTE:32 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ plexSort::s#2 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ init::$8 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp ZP_BYTE:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp ZP_BYTE:31 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] +Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp ZP_BYTE:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp ZP_BYTE:33 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] Uplift Scope [loop] 551: zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 202: zp ZP_BYTE:18 [ loop::$4 ] 185.17: zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] 5.13: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplift Scope [init] 33: zp ZP_BYTE:16 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:13 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:32 [ init::$6 ] 15.58: zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] -Uplift Scope [] 27.06: zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] 25.5: zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] 16.18: zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] 15.4: zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] +Uplift Scope [init] 33: zp ZP_BYTE:16 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:13 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:34 [ init::$8 ] 15.58: zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] +Uplift Scope [] 26.72: zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] 25.08: zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] 15.8: zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] 14.95: zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] Uplift Scope [plexInit] 38.5: zp ZP_BYTE:17 [ plexInit::i#2 plexInit::i#1 ] -Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:25 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:26 [ plexShowSprite::$4 ] 4: zp ZP_BYTE:27 [ plexShowSprite::$10 ] 4: zp ZP_BYTE:28 [ plexShowSprite::$6 ] 3: zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] 0.6: zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:25 [ plexShowSprite::$10 ] 4: zp ZP_BYTE:26 [ plexShowSprite::$2 ] 4: zp ZP_BYTE:27 [ plexShowSprite::$11 ] 4: zp ZP_BYTE:28 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:29 [ plexShowSprite::$9 ] 4: zp ZP_BYTE:30 [ plexShowSprite::$5 ] 3: zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 1.5: zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] 0.55: zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Uplift Scope [main] -Uplifting [plexSort] best 82378 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 82392 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:33 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] Limited combination testing to 10 combinations of 972 possible. -Uplifting [loop] best 81178 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [loop] best 81192 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Limited combination testing to 10 combinations of 1296 possible. -Uplifting [init] best 80928 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] +Uplifting [init] best 80942 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:34 [ init::$8 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [] best 80928 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] +Uplifting [] best 80942 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] Limited combination testing to 10 combinations of 81 possible. -Uplifting [plexInit] best 80808 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [plexShowSprite] best 80798 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$10 ] zp ZP_BYTE:28 [ plexShowSprite::$6 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Limited combination testing to 10 combinations of 147456 possible. -Uplifting [main] best 80798 combination +Uplifting [plexInit] best 80822 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [plexShowSprite] best 80812 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$10 ] zp ZP_BYTE:26 [ plexShowSprite::$2 ] zp ZP_BYTE:27 [ plexShowSprite::$11 ] zp ZP_BYTE:28 [ plexShowSprite::$3 ] zp ZP_BYTE:29 [ plexShowSprite::$9 ] zp ZP_BYTE:30 [ plexShowSprite::$5 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Limited combination testing to 10 combinations of 2359296 possible. +Uplifting [main] best 80812 combination Attempting to uplift remaining variables inzp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] -Uplifting [loop] best 80798 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] +Uplifting [loop] best 80812 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] -Uplifting [loop] best 80068 combination reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] +Uplifting [loop] best 80082 combination reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::$4 ] -Uplifting [loop] best 79468 combination reg byte a [ loop::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexSort::s#2 ] -Uplifting [plexSort] best 78868 combination reg byte x [ plexSort::s#2 ] +Uplifting [loop] best 79482 combination reg byte a [ loop::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ plexSort::s#2 ] +Uplifting [plexSort] best 78882 combination reg byte x [ plexSort::s#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Uplifting [plexSort] best 78868 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] +Uplifting [plexSort] best 78882 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] -Uplifting [loop] best 78868 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexSort::nxt_y#0 ] -Uplifting [plexSort] best 78868 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 78868 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] +Uplifting [loop] best 78882 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ plexSort::nxt_y#0 ] +Uplifting [plexSort] best 78882 combination zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 78882 combination zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] -Uplifting [] best 78868 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] +Uplifting [] best 78882 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] -Uplifting [] best 78868 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init::$6 ] -Uplifting [init] best 78828 combination reg byte a [ init::$6 ] +Uplifting [] best 78882 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init::$8 ] +Uplifting [init] best 78842 combination reg byte a [ init::$8 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] -Uplifting [] best 78828 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] +Uplifting [] best 78842 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] -Uplifting [] best 78828 combination zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] +Uplifting [] best 78842 combination zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplifting [loop] best 78828 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::$3 ] +Uplifting [loop] best 78842 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::$10 ] +Uplifting [plexShowSprite] best 78838 combination reg byte a [ plexShowSprite::$10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexShowSprite::$2 ] +Uplifting [plexShowSprite] best 78832 combination reg byte a [ plexShowSprite::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ plexShowSprite::$11 ] +Uplifting [plexShowSprite] best 78828 combination reg byte a [ plexShowSprite::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plexShowSprite::$3 ] Uplifting [plexShowSprite] best 78822 combination reg byte a [ plexShowSprite::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexShowSprite::$4 ] -Uplifting [plexShowSprite] best 78816 combination reg byte a [ plexShowSprite::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ plexShowSprite::$10 ] -Uplifting [plexShowSprite] best 78810 combination reg byte a [ plexShowSprite::$10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plexShowSprite::$6 ] -Uplifting [plexShowSprite] best 78804 combination reg byte x [ plexShowSprite::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexShowSprite::$9 ] +Uplifting [plexShowSprite] best 78816 combination reg byte a [ plexShowSprite::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexShowSprite::$5 ] +Uplifting [plexShowSprite] best 78810 combination reg byte x [ plexShowSprite::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Uplifting [plexShowSprite] best 78795 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Uplifting [plexShowSprite] best 78801 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] -Uplifting [plexShowSprite] best 78788 combination reg byte x [ plexShowSprite::xpos_idx#0 ] +Uplifting [plexShowSprite] best 78796 combination reg byte x [ plexShowSprite::xpos_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 78788 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 78796 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Coalescing zero page register [ zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] ] with [ zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] ] with [ zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:31 [ plexSort::nxt_idx#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] ] with [ zp ZP_BYTE:32 [ plexSort::nxt_y#0 ] ] Coalescing zero page register [ zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] ] with [ zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ] @@ -3011,7 +3045,7 @@ loop: { //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [23] call plexSort - //SEG45 [60] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] + //SEG45 [62] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] plexSort_from_b5: jsr plexSort jmp b11 @@ -3142,75 +3176,81 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + //SEG91 [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa asl - tax - //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx - lda PLEX_XPOS,x - //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG92 [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuaa=_lo_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS,y + //SEG93 [47] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx - lda PLEX_XPOS+1,x - //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG94 [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG95 [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuaa=_hi_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS+1,y + //SEG96 [50] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 jmp b3 - //SEG95 plexShowSprite::@3 + //SEG97 plexShowSprite::@3 b3: - //SEG96 [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG98 [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor plex_sprite_msb - //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG99 [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b2 - //SEG98 plexShowSprite::@2 + //SEG100 plexShowSprite::@2 b2: - //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG101 [53] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx plex_sprite_idx inx - //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG102 [54] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax plex_sprite_idx - //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG103 [55] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG104 [56] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 + //SEG105 [57] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne b5_from_b2 - //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG106 [58] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG107 [58] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG106 plexShowSprite::@return + //SEG108 plexShowSprite::@return breturn: - //SEG107 [57] return + //SEG109 [59] return rts - //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] + //SEG110 [60] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] b5_from_b2: jmp b5 - //SEG109 plexShowSprite::@5 + //SEG111 plexShowSprite::@5 b5: - //SEG110 [56] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] + //SEG112 [58] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] breturn_from_b5: - //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy + //SEG113 [58] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG112 plexShowSprite::@1 + //SEG114 plexShowSprite::@1 b1: - //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG115 [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG114 plexSort +//SEG116 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -3224,148 +3264,148 @@ plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG117 [63] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG118 [63] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG119 [63] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG120 [63] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG119 plexSort::@1 + //SEG121 plexSort::@1 b1: - //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG122 [64] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG123 [65] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG124 [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b6 - //SEG123 plexSort::@6 + //SEG125 plexSort::@6 b6: - //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 + //SEG126 [67] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 ldx m - //SEG125 [66] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] + //SEG127 [68] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] b3_from_b5: b3_from_b6: - //SEG126 [66] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy + //SEG128 [68] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy jmp b3 - //SEG127 plexSort::@3 + //SEG129 plexSort::@3 b3: - //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG130 [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx + //SEG131 [70] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx dex - //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG132 [71] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b5 jmp b4 - //SEG131 plexSort::@4 + //SEG133 plexSort::@4 b4: - //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx + //SEG134 [72] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx inx - //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG135 [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x jmp b2 - //SEG134 plexSort::@2 + //SEG136 plexSort::@2 b2: - //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG137 [74] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG138 [75] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLEX_COUNT-2+1 cmp m bne b1_from_b2 - //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG139 [76] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] plexFreePrepare1_from_b2: jmp plexFreePrepare1 - //SEG138 plexSort::plexFreePrepare1 + //SEG140 plexSort::plexFreePrepare1 plexFreePrepare1: - //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG141 [77] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1: - //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 + //SEG142 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 ldx #0 jmp plexFreePrepare1_b1 - //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG143 [77] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1_b1: - //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG144 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy jmp plexFreePrepare1_b1 - //SEG143 plexSort::plexFreePrepare1_@1 + //SEG145 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG146 [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PLEX_FREE_YPOS,x - //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx + //SEG147 [79] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx inx - //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG148 [80] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne plexFreePrepare1_b1_from_plexFreePrepare1_b1 jmp breturn - //SEG147 plexSort::@return + //SEG149 plexSort::@return breturn: - //SEG148 [79] return + //SEG150 [81] return rts - //SEG149 plexSort::@5 + //SEG151 plexSort::@5 b5: - //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG152 [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3_from_b5 jmp b4 } -//SEG151 init +//SEG153 init // Initialize the program init: { .label xp = 8 - //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG154 [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG153 [82] call plexInit - //SEG154 [96] phi from init to plexInit [phi:init->plexInit] + //SEG155 [84] call plexInit + //SEG156 [98] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] + //SEG157 [85] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG158 [85] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #$20 sta xp lda #0 sta xp+1 - //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG159 [85] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG160 [85] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG161 [85] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG162 [85] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG161 init::@1 + //SEG163 init::@1 b1: - //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG164 [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG165 [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG166 [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG167 [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 lda #9 clc adc xp @@ -3373,74 +3413,74 @@ init: { bcc !+ inc xp+1 !: - //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx + //SEG168 [90] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx inx - //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG169 [91] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp b2 - //SEG168 init::@2 + //SEG170 init::@2 b2: - //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 + //SEG171 [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 // Enable & initialize sprites lda #$ff sta SPRITES_ENABLE - //SEG170 [91] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG172 [93] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuxx=vbuc1 + //SEG173 [93] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG172 [91] phi from init::@3 to init::@3 [phi:init::@3->init::@3] + //SEG174 [93] phi from init::@3 to init::@3 [phi:init::@3->init::@3] b3_from_b3: - //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy + //SEG175 [93] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy jmp b3 - //SEG174 init::@3 + //SEG176 init::@3 b3: - //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG177 [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx + //SEG178 [95] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx inx - //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG179 [96] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3_from_b3 jmp breturn - //SEG178 init::@return + //SEG180 init::@return breturn: - //SEG179 [95] return + //SEG181 [97] return rts } -//SEG180 plexInit +//SEG182 plexInit // Initialize the multiplexer data structures plexInit: { - //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG183 [99] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG182 plexInit::plexSetScreen1 + //SEG184 plexInit::plexSetScreen1 plexSetScreen1: - //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG185 [100] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG186 [100] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG187 [100] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG188 [100] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG187 plexInit::@1 + //SEG189 plexInit::@1 b1: - //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG190 [101] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx + //SEG191 [102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx inx - //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG192 [103] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp breturn - //SEG191 plexInit::@return + //SEG193 plexInit::@return breturn: - //SEG192 [102] return + //SEG194 [104] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. @@ -3652,7 +3692,7 @@ FINAL SYMBOL TABLE (byte*) YSIN (const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) $2100 (void()) init() -(byte~) init::$6 reg byte a 22.0 +(byte) init::$8 reg byte a 22.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -3711,10 +3751,12 @@ FINAL SYMBOL TABLE (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$11 reg byte a 4.0 +(byte~) plexShowSprite::$2 reg byte a 4.0 (byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$4 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 reg byte x 4.0 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 reg byte x 4.0 +(byte/word/dword~) plexShowSprite::$9 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -3730,9 +3772,9 @@ FINAL SYMBOL TABLE (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -3761,18 +3803,18 @@ FINAL SYMBOL TABLE (byte) plexSort::s#3 reg byte x 2052.5 (byte~) plexSort::s#6 reg byte x 202.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.904761904761904 +(byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.478260869565218 (byte) plex_free_next#17 plex_free_next zp ZP_BYTE:3 20.599999999999998 (byte) plex_show_idx (byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 11.444444444444443 -(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.73913043478261 +(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.36 (byte) plex_sprite_idx (byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999 -(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 5.095238095238094 +(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 4.652173913043479 (byte) plex_sprite_msb (byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:6 20.599999999999998 (byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:6 2.0 -(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332 +(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.115384615384615 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] @@ -3794,16 +3836,18 @@ reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] reg byte x [ plexShowSprite::xpos_idx#0 ] -reg byte a [ plexShowSprite::$3 ] -reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$10 ] -reg byte x [ plexShowSprite::$6 ] +reg byte a [ plexShowSprite::$2 ] +reg byte a [ plexShowSprite::$11 ] +reg byte a [ plexShowSprite::$3 ] +reg byte a [ plexShowSprite::$9 ] +reg byte x [ plexShowSprite::$5 ] reg byte x [ plexSort::s#2 ] -reg byte a [ init::$6 ] +reg byte a [ init::$8 ] FINAL ASSEMBLER -Score: 63150 +Score: 63158 //SEG0 File Comments // A simple usage of the flexible sprite multiplexer routine @@ -3909,7 +3953,7 @@ loop: { //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [23] call plexSort - //SEG45 [60] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] + //SEG45 [62] phi from loop::@5 to plexSort [phi:loop::@5->plexSort] jsr plexSort //SEG46 loop::@11 //SEG47 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 @@ -4016,65 +4060,71 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + //SEG91 [45] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa asl - tax - //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx - lda PLEX_XPOS,x - //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG92 [46] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuaa=_lo_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS,y + //SEG93 [47] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx - lda PLEX_XPOS+1,x - //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG94 [48] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG95 [49] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuaa=_hi_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS+1,y + //SEG96 [50] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG95 plexShowSprite::@3 - //SEG96 [49] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG97 plexShowSprite::@3 + //SEG98 [51] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor plex_sprite_msb - //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG99 [52] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG98 plexShowSprite::@2 + //SEG100 plexShowSprite::@2 b2: - //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG101 [53] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx plex_sprite_idx inx - //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG102 [54] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax plex_sprite_idx - //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG103 [55] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG104 [56] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 + //SEG105 [57] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@5 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne breturn - //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] - //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG106 [58] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG107 [58] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG106 plexShowSprite::@return + //SEG108 plexShowSprite::@return breturn: - //SEG107 [57] return + //SEG109 [59] return rts - //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] - //SEG109 plexShowSprite::@5 - //SEG110 [56] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] - //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy - //SEG112 plexShowSprite::@1 + //SEG110 [60] phi from plexShowSprite::@2 to plexShowSprite::@5 [phi:plexShowSprite::@2->plexShowSprite::@5] + //SEG111 plexShowSprite::@5 + //SEG112 [58] phi from plexShowSprite::@5 to plexShowSprite::@return [phi:plexShowSprite::@5->plexShowSprite::@return] + //SEG113 [58] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@5->plexShowSprite::@return#0] -- register_copy + //SEG114 plexShowSprite::@1 b1: - //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG115 [61] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG114 plexSort +//SEG116 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -4088,121 +4138,121 @@ plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] - //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG117 [63] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG118 [63] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m - //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] - //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy - //SEG119 plexSort::@1 + //SEG119 [63] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG120 [63] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG121 plexSort::@1 b1: - //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG122 [64] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG123 [65] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 tay lda PLEX_YPOS,y sta nxt_y - //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG124 [66] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 - //SEG123 plexSort::@6 - //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 - //SEG125 [66] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] - //SEG126 [66] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy - //SEG127 plexSort::@3 + //SEG125 plexSort::@6 + //SEG126 [67] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 + //SEG127 [68] phi from plexSort::@5 plexSort::@6 to plexSort::@3 [phi:plexSort::@5/plexSort::@6->plexSort::@3] + //SEG128 [68] phi (byte) plexSort::s#3 = (byte) plexSort::s#1 [phi:plexSort::@5/plexSort::@6->plexSort::@3#0] -- register_copy + //SEG129 plexSort::@3 b3: - //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG130 [69] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx + //SEG131 [70] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx dex - //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG132 [71] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b5 - //SEG131 plexSort::@4 + //SEG133 plexSort::@4 b4: - //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx + //SEG134 [72] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx inx - //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG135 [73] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x - //SEG134 plexSort::@2 + //SEG136 plexSort::@2 b2: - //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG137 [74] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG138 [75] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda #PLEX_COUNT-2+1 cmp m bne b1 - //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] - //SEG138 plexSort::plexFreePrepare1 - //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] - //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 + //SEG139 [76] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG140 plexSort::plexFreePrepare1 + //SEG141 [77] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG142 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] - //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy - //SEG143 plexSort::plexFreePrepare1_@1 + //SEG143 [77] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG144 [77] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG145 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG146 [78] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PLEX_FREE_YPOS,x - //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx + //SEG147 [79] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx inx - //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG148 [80] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne plexFreePrepare1_b1 - //SEG147 plexSort::@return - //SEG148 [79] return + //SEG149 plexSort::@return + //SEG150 [81] return rts - //SEG149 plexSort::@5 + //SEG151 plexSort::@5 b5: - //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG152 [82] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3 jmp b4 } -//SEG151 init +//SEG153 init // Initialize the program init: { .label xp = 8 - //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG154 [83] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG153 [82] call plexInit - //SEG154 [96] phi from init to plexInit [phi:init->plexInit] + //SEG155 [84] call plexInit + //SEG156 [98] phi from init to plexInit [phi:init->plexInit] jsr plexInit - //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] - //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG157 [85] phi from init to init::@1 [phi:init->init::@1] + //SEG158 [85] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) $20 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #$20 sta xp lda #0 sta xp+1 - //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG159 [85] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 tax - //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy - //SEG161 init::@1 + //SEG160 [85] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG161 [85] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG162 [85] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG163 init::@1 b1: - //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG164 [86] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG165 [87] (byte) init::$8 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG166 [88] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$8) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG167 [89] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 lda #9 clc adc xp @@ -4210,57 +4260,57 @@ init: { bcc !+ inc xp+1 !: - //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx + //SEG168 [90] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx inx - //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG169 [91] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG168 init::@2 - //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 + //SEG170 init::@2 + //SEG171 [92] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff -- _deref_pbuc1=vbuc2 // Enable & initialize sprites lda #$ff sta SPRITES_ENABLE - //SEG170 [91] phi from init::@2 to init::@3 [phi:init::@2->init::@3] - //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuxx=vbuc1 + //SEG172 [93] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG173 [93] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG172 [91] phi from init::@3 to init::@3 [phi:init::@3->init::@3] - //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy - //SEG174 init::@3 + //SEG174 [93] phi from init::@3 to init::@3 [phi:init::@3->init::@3] + //SEG175 [93] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@3->init::@3#0] -- register_copy + //SEG176 init::@3 b3: - //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG177 [94] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx + //SEG178 [95] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx inx - //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG179 [96] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3 - //SEG178 init::@return - //SEG179 [95] return + //SEG180 init::@return + //SEG181 [97] return rts } -//SEG180 plexInit +//SEG182 plexInit // Initialize the multiplexer data structures plexInit: { - //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] - //SEG182 plexInit::plexSetScreen1 - //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] - //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG183 [99] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG184 plexInit::plexSetScreen1 + //SEG185 [100] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG186 [100] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] - //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy - //SEG187 plexInit::@1 + //SEG187 [100] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG188 [100] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG189 plexInit::@1 b1: - //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG190 [101] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx + //SEG191 [102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx inx - //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG192 [103] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG191 plexInit::@return - //SEG192 [102] return + //SEG193 plexInit::@return + //SEG194 [104] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.sym b/src/test/ref/examples/multiplexer/simple-multiplexer.sym index c55af6676..6e7270d4e 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.sym +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.sym @@ -49,7 +49,7 @@ (byte*) YSIN (const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) $2100 (void()) init() -(byte~) init::$6 reg byte a 22.0 +(byte) init::$8 reg byte a 22.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -108,10 +108,12 @@ (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$11 reg byte a 4.0 +(byte~) plexShowSprite::$2 reg byte a 4.0 (byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$4 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 reg byte x 4.0 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 reg byte x 4.0 +(byte/word/dword~) plexShowSprite::$9 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -127,9 +129,9 @@ (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -158,18 +160,18 @@ (byte) plexSort::s#3 reg byte x 2052.5 (byte~) plexSort::s#6 reg byte x 202.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.904761904761904 +(byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.478260869565218 (byte) plex_free_next#17 plex_free_next zp ZP_BYTE:3 20.599999999999998 (byte) plex_show_idx (byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 11.444444444444443 -(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.73913043478261 +(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.36 (byte) plex_sprite_idx (byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999 -(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 5.095238095238094 +(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 4.652173913043479 (byte) plex_sprite_msb (byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:6 20.599999999999998 (byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:6 2.0 -(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332 +(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.115384615384615 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] @@ -191,9 +193,11 @@ reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] reg byte x [ plexShowSprite::xpos_idx#0 ] -reg byte a [ plexShowSprite::$3 ] -reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$10 ] -reg byte x [ plexShowSprite::$6 ] +reg byte a [ plexShowSprite::$2 ] +reg byte a [ plexShowSprite::$11 ] +reg byte a [ plexShowSprite::$3 ] +reg byte a [ plexShowSprite::$9 ] +reg byte x [ plexShowSprite::$5 ] reg byte x [ plexSort::s#2 ] -reg byte a [ init::$6 ] +reg byte a [ init::$8 ] diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index 9f01ff472..01fc856af 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -52,20 +52,17 @@ main: { b1: jsr point_init lda i - lsr - tax - ldy i + asl + tay lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - ldy y_start,x + ldy i + ldx y_start,y jsr bitmap_plot - lda i - clc - adc #2 - sta i - lda #8 + inc i + lda #4 cmp i bne b1 b2: @@ -76,15 +73,15 @@ main: { jmp b2 } // Plot a single dot in the bitmap -// bitmap_plot(word zeropage(3) x, byte register(Y) y) +// bitmap_plot(word zeropage(3) x, byte register(X) y) bitmap_plot: { .label _1 = 7 .label x = 3 .label plotter = 5 .label _3 = 5 - lda bitmap_plot_yhi,y + lda bitmap_plot_yhi,x sta _3+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta _3 lda x and #<$fff8 @@ -110,13 +107,12 @@ bitmap_plot: { // Initialize the points to be animated // point_init(byte zeropage(2) point_idx) point_init: { - .label _4 = 7 - .label _5 = 3 + .label _3 = 7 + .label _4 = 3 + .label _9 = 3 .label _10 = 3 .label _11 = 3 - .label _12 = 3 .label point_idx = 2 - .label point_idx1 = $b .label y_diff = 7 .label abs16s1__2 = 3 .label abs16s1_return = 3 @@ -125,31 +121,33 @@ point_init: { .label x_stepf = 5 .label x_diff = 9 lda point_idx - lsr - sta point_idx1 - ldy point_idx + asl + tax + lda point_idx + asl + tay sec - lda x_end,y + lda x_end,x sbc x_start,y sta x_diff - lda x_end+1,y + lda x_end+1,x sbc x_start+1,y sta x_diff+1 - ldy point_idx1 + ldy point_idx lda y_end,y + sta _3 + lda #0 + sta _3+1 + lda y_start,y sta _4 lda #0 sta _4+1 - lda y_start,y - sta _5 - lda #0 - sta _5+1 lda y_diff sec - sbc _5 + sbc _4 sta y_diff lda y_diff+1 - sbc _5+1 + sbc _4+1 sta y_diff+1 lda x_diff+1 bpl !abs16s1_b1+ @@ -178,43 +176,50 @@ point_init: { bcc b1 !: b2: - ldy point_idx + lda point_idx + asl + tay lda x_start,y - sta _10 + sta _9 lda x_start+1,y - sta _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - lda _10 + sta _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + lda point_idx + asl + tay + lda _9 sta x_cur,y - lda _10+1 + lda _9+1 sta x_cur+1,y - ldy point_idx1 - lda y_start,y - sta _11 - lda #0 - sta _11+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 ldy point_idx - lda _12 + lda y_start,y + sta _10 + lda #0 + sta _10+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + tya + asl + tay + lda _11 sta y_cur,y - lda _12+1 + lda _11+1 sta y_cur+1,y lda #DELAY - ldy point_idx1 + ldy point_idx sta delay,y rts b1: @@ -232,7 +237,7 @@ point_init: { lsr lsr lsr - ldy point_idx1 + ldy point_idx sta y_add,y jmp b2 b4: diff --git a/src/test/ref/line-anim.cfg b/src/test/ref/line-anim.cfg index 05e6a3a41..9180286ae 100644 --- a/src/test/ref/line-anim.cfg +++ b/src/test/ref/line-anim.cfg @@ -43,14 +43,14 @@ main::@1: scope:[main] from main::@6 main::@8 [20] call point_init to:main::@7 main::@7: scope:[main] from main::@1 - [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) - [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) + [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) + [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte) main::i#2) [24] call bitmap_plot to:main::@8 main::@8: scope:[main] from main::@7 - [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 + [25] (byte) main::i#1 ← ++ (byte) main::i#2 + [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 main::@8 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 @@ -69,241 +69,245 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot [34] return to:@return point_init: scope:[point_init] from main::@1 - [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) - [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) - [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 + [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) + [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) + [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) + [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 to:point_init::abs16s1 point_init::abs16s1: scope:[point_init] from point_init - [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 + [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 to:point_init::@8 point_init::@8: scope:[point_init] from point_init::abs16s1 - [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 + [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 to:point_init::abs16s1_@return point_init::abs16s1_@return: scope:[point_init] from point_init::@8 point_init::abs16s1_@1 - [42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@8/(word~) point_init::abs16s1_return#6 ) + [43] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@8/(word~) point_init::abs16s1_return#6 ) to:point_init::abs16s2 point_init::abs16s2: scope:[point_init] from point_init::abs16s1_@return - [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 + [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 to:point_init::@9 point_init::@9: scope:[point_init] from point_init::abs16s2 - [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 + [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 to:point_init::abs16s2_@return point_init::abs16s2_@return: scope:[point_init] from point_init::@9 point_init::abs16s2_@1 - [45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@9/(word~) point_init::abs16s2_return#6 ) + [46] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@9/(word~) point_init::abs16s2_return#6 ) to:point_init::@6 point_init::@6: scope:[point_init] from point_init::abs16s2_@return - [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 + [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@6 point_init::@7 - [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 - [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 - [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 - [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 + [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 + [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 + [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) + [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 + [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [53] return + [57] return to:@return point_init::@1: scope:[point_init] from point_init::@6 - [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 + [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 to:point_init::@3 point_init::@3: scope:[point_init] from point_init::@1 - [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 + [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 to:point_init::@5 point_init::@5: scope:[point_init] from point_init::@3 point_init::@4 - [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [58] call divr16s - [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [62] call divr16s + [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@5 - [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 - [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$17 + [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 + [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [67] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16 to:point_init::@2 point_init::@4: scope:[point_init] from point_init::@1 - [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 + [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 to:point_init::@5 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 - [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 + [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 - [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 + [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 to:point_init::abs16s1_@return divr16s: scope:[divr16s] from point_init::@5 - [69] phi() + [73] phi() to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s - [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@7 - [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@8 - [72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@8/(word~) divr16s::remu#8 ) - [72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@8/((word))(const signed word) divr16s::dividend#0 ) - [72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [76] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@8/(word~) divr16s::remu#8 ) + [76] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@8/((word))(const signed word) divr16s::dividend#0 ) + [76] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@2 - [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9 - [75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#3 ) - [75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@9/(word~) divr16s::divisoru#5 ) - [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [79] call divr16u - [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + [79] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#3 ) + [79] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@9/(word~) divr16s::divisoru#5 ) + [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [83] call divr16u + [84] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@4 - [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 + [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [86] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 to:divr16s::@5 divr16s::@5: scope:[divr16s] from divr16s::@6 - [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@10 divr16s::@5 - [84] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@10/(signed word~) divr16s::return#7 ) - [85] return + [88] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@10/(signed word~) divr16s::return#7 ) + [89] return to:@return divr16s::@10: scope:[divr16s] from divr16s::@6 - [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 - [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 + [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@7 - [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 - [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 + [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 + [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 to:divr16s::@2 divr16u: scope:[divr16u] from divr16s::@4 - [92] phi() + [96] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) - [93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [97] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [97] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [97] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) + [97] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) + [98] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [100] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [101] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [103] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [104] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [105] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [107] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [109] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [109] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [110] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [111] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [108] return + [112] return to:@return screen_fill: scope:[screen_fill] from main::@6 - [109] phi() + [113] phi() to:screen_fill::@1 screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 - [110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) - [110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) + [114] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) + [114] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) to:screen_fill::@2 screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 - [111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) - [111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) - [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 - [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 - [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 - [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 + [115] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) + [115] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) + [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 + [117] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 + [118] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 + [119] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 to:screen_fill::@3 screen_fill::@3: scope:[screen_fill] from screen_fill::@2 - [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 - [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 + [120] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 + [121] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 to:screen_fill::@return screen_fill::@return: scope:[screen_fill] from screen_fill::@3 - [118] return + [122] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@5 - [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) - [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) + [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [125] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [125] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 + [126] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [126] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [128] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [129] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [130] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 + [131] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [132] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [129] return + [133] return to:@return bitmap_init: scope:[bitmap_init] from main::@4 - [130] phi() + [134] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 + [135] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [135] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [136] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [137] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) $80 ) - [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [139] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) $80 ) + [140] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [141] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [142] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [144] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [142] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [142] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [144] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [145] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [146] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [147] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [148] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [150] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 + [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [152] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [153] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [154] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [151] return + [155] return to:@return bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [152] phi() + [156] phi() to:bitmap_init::@2 diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index e61abbfea..e832d31d3 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -1,10 +1,16 @@ +Fixing pointer array-indexing *((word[4]) x_start + (byte) main::i) +Fixing pointer array-indexing *((word[4]) x_end + (byte) point_init::point_idx) +Fixing pointer array-indexing *((word[4]) x_start + (byte) point_init::point_idx) +Fixing pointer array-indexing *((word[4]) x_start + (byte) point_init::point_idx) +Fixing pointer array-indexing *((word[4]) x_cur + (byte) point_init::point_idx) +Fixing pointer array-indexing *((word[4]) y_cur + (byte) point_init::point_idx) Identified constant variable (byte*) BITMAP Identified constant variable (byte*) SCREEN Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call vicSelectGfxBank (byte*) SCREEN Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP -Inlined call (word~) point_init::$7 ← call abs16s (signed word) point_init::x_diff -Inlined call (word~) point_init::$8 ← call abs16s (signed word) point_init::y_diff +Inlined call (word~) point_init::$6 ← call abs16s (signed word) point_init::x_diff +Inlined call (word~) point_init::$7 ← call abs16s (signed word) point_init::y_diff CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -285,16 +291,16 @@ main::@1: scope:[main] from main::@19 main::@21 to:main::@20 main::@20: scope:[main] from main::@1 (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) - (byte/signed word/word/dword/signed dword~) main::$9 ← (byte) main::i#3 / (byte/signed byte/word/signed word/dword/signed dword) 2 - (word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3) - (byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte/signed word/word/dword/signed dword~) main::$9) + (byte) main::$12 ← (byte) main::i#3 * (const byte) SIZEOF_WORD + (word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::$12) + (byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte) main::i#3) call bitmap_plot to:main::@21 main::@21: scope:[main] from main::@20 (byte) main::i#4 ← phi( main::@20/(byte) main::i#3 ) - (byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 - if((bool~) main::$11) goto main::@1 + (byte) main::i#1 ← ++ (byte) main::i#4 + (bool~) main::$10 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 4 + if((bool~) main::$10) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@21 main::@8 if(true) goto main::@4 @@ -302,8 +308,8 @@ main::@3: scope:[main] from main::@21 main::@8 main::@4: scope:[main] from main::@3 to:main::@6 main::@6: scope:[main] from main::@4 main::@7 - (bool~) main::$12 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff - if((bool~) main::$12) goto main::@7 + (bool~) main::$11 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff + if((bool~) main::$11) goto main::@7 to:main::@8 main::@7: scope:[main] from main::@6 to:main::@6 @@ -315,20 +321,19 @@ main::@return: scope:[main] from main::@3 to:@return point_init: scope:[point_init] from main::@1 (byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 ) - (byte/signed word/word/dword/signed dword~) point_init::$0 ← (byte) point_init::point_idx#1 / (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) point_init::point_idx1#0 ← (byte/signed word/word/dword/signed dword~) point_init::$0 - (signed word~) point_init::$1 ← ((signed word)) *((word[4]) x_end#0 + (byte) point_init::point_idx#1) - (signed word~) point_init::$2 ← ((signed word)) *((word[4]) x_start#0 + (byte) point_init::point_idx#1) - (signed word~) point_init::$3 ← (signed word~) point_init::$1 - (signed word~) point_init::$2 - (signed word) point_init::x_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 ← ((signed word)) *((byte[4]) y_end#0 + (byte) point_init::point_idx1#0) - (signed word~) point_init::$5 ← ((signed word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - (signed word~) point_init::$6 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 - (signed word) point_init::y_diff#0 ← (signed word~) point_init::$6 + (byte) point_init::$18 ← (byte) point_init::point_idx#1 * (const byte) SIZEOF_WORD + (signed word~) point_init::$0 ← ((signed word)) *((word[4]) x_end#0 + (byte) point_init::$18) + (byte) point_init::$19 ← (byte) point_init::point_idx#1 * (const byte) SIZEOF_WORD + (signed word~) point_init::$1 ← ((signed word)) *((word[4]) x_start#0 + (byte) point_init::$19) + (signed word~) point_init::$2 ← (signed word~) point_init::$0 - (signed word~) point_init::$1 + (signed word) point_init::x_diff#0 ← (signed word~) point_init::$2 + (signed word~) point_init::$3 ← ((signed word)) *((byte[4]) y_end#0 + (byte) point_init::point_idx#1) + (signed word~) point_init::$4 ← ((signed word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx#1) + (signed word~) point_init::$5 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 + (signed word) point_init::y_diff#0 ← (signed word~) point_init::$5 (signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0 to:point_init::abs16s1 point_init::abs16s1: scope:[point_init] from point_init - (byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 ) (byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 ) (signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 ) (signed word) point_init::y_diff#9 ← phi( point_init/(signed word) point_init::y_diff#0 ) @@ -337,7 +342,6 @@ point_init::abs16s1: scope:[point_init] from point_init if((bool) point_init::abs16s1_$0#0) goto point_init::abs16s1_@1 to:point_init::abs16s1_@3 point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - (byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) (byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) (signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) (signed word) point_init::y_diff#6 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 ) @@ -347,7 +351,6 @@ point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 (word) point_init::abs16s1_return#0 ← (word) point_init::abs16s1_$3#0 to:point_init::abs16s1_@return point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 - (byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) (byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) (signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) (signed word) point_init::y_diff#7 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 ) @@ -356,7 +359,6 @@ point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 (word) point_init::abs16s1_return#1 ← (word) point_init::abs16s1_$1#0 to:point_init::abs16s1_@return point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 point_init::abs16s1_@3 - (byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 ) (byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 ) (signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 ) (signed word) point_init::y_diff#3 ← phi( point_init::abs16s1_@1/(signed word) point_init::y_diff#6 point_init::abs16s1_@3/(signed word) point_init::y_diff#7 ) @@ -364,17 +366,15 @@ point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 poi (word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3 to:point_init::@9 point_init::@9: scope:[point_init] from point_init::abs16s1_@return - (byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 ) (byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 ) (signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 ) (signed word) point_init::y_diff#1 ← phi( point_init::abs16s1_@return/(signed word) point_init::y_diff#3 ) (word) point_init::abs16s1_return#4 ← phi( point_init::abs16s1_@return/(word) point_init::abs16s1_return#2 ) - (word~) point_init::$7 ← (word) point_init::abs16s1_return#4 + (word~) point_init::$6 ← (word) point_init::abs16s1_return#4 (signed word) point_init::abs16s2_w#0 ← (signed word) point_init::y_diff#1 to:point_init::abs16s2 point_init::abs16s2: scope:[point_init] from point_init::@9 (signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 ) - (byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 ) (byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 ) (signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 ) (signed word) point_init::abs16s2_w#1 ← phi( point_init::@9/(signed word) point_init::abs16s2_w#0 ) @@ -383,7 +383,6 @@ point_init::abs16s2: scope:[point_init] from point_init::@9 to:point_init::abs16s2_@3 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) - (byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) (byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) (signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) (signed word) point_init::abs16s2_w#2 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 ) @@ -393,7 +392,6 @@ point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 to:point_init::abs16s2_@return point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) - (byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) (byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) (signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) (signed word) point_init::abs16s2_w#3 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 ) @@ -402,58 +400,54 @@ point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 to:point_init::abs16s2_@return point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 point_init::abs16s2_@3 (signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 ) - (byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 ) - (byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 ) + (byte) point_init::point_idx#9 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 ) (signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 ) (word) point_init::abs16s2_return#3 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#0 point_init::abs16s2_@3/(word) point_init::abs16s2_return#1 ) (word) point_init::abs16s2_return#2 ← (word) point_init::abs16s2_return#3 to:point_init::@10 point_init::@10: scope:[point_init] from point_init::abs16s2_@return (signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 ) - (byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 ) - (byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 ) + (byte) point_init::point_idx#6 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#9 ) (signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 ) (word) point_init::abs16s2_return#4 ← phi( point_init::abs16s2_@return/(word) point_init::abs16s2_return#2 ) - (word~) point_init::$8 ← (word) point_init::abs16s2_return#4 - (bool~) point_init::$9 ← (word~) point_init::$7 > (word~) point_init::$8 - if((bool~) point_init::$9) goto point_init::@1 + (word~) point_init::$7 ← (word) point_init::abs16s2_return#4 + (bool~) point_init::$8 ← (word~) point_init::$6 > (word~) point_init::$7 + if((bool~) point_init::$8) goto point_init::@1 to:point_init::@2 point_init::@1: scope:[point_init] from point_init::@10 - (byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 ) (signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 ) - (byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 ) + (byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#6 ) (signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 ) - (bool~) point_init::$13 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) point_init::$13) goto point_init::@7 + (bool~) point_init::$12 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) point_init::$12) goto point_init::@7 to:point_init::@5 point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 - (byte) point_init::point_idx1#1 ← phi( point_init::@10/(byte) point_init::point_idx1#3 point_init::@11/(byte) point_init::point_idx1#2 ) - (byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#5 point_init::@11/(byte) point_init::point_idx#6 ) - (word/signed dword/dword~) point_init::$10 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#2) * (byte/signed byte/word/signed word/dword/signed dword) $10 - *((word[4]) x_cur#0 + (byte) point_init::point_idx#2) ← (word/signed dword/dword~) point_init::$10 - (word~) point_init::$11 ← ((word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#1) - (word/signed dword/dword~) point_init::$12 ← (word~) point_init::$11 * (byte/signed byte/word/signed word/dword/signed dword) $10 - *((word[4]) y_cur#0 + (byte) point_init::point_idx#2) ← (word/signed dword/dword~) point_init::$12 - *((byte[4]) delay#0 + (byte) point_init::point_idx1#1) ← (byte) DELAY#0 + (byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#6 point_init::@11/(byte) point_init::point_idx#5 ) + (byte) point_init::$20 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD + (word/signed dword/dword~) point_init::$9 ← *((word[4]) x_start#0 + (byte) point_init::$20) * (byte/signed byte/word/signed word/dword/signed dword) $10 + (byte) point_init::$21 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD + *((word[4]) x_cur#0 + (byte) point_init::$21) ← (word/signed dword/dword~) point_init::$9 + (word~) point_init::$10 ← ((word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx#2) + (word/signed dword/dword~) point_init::$11 ← (word~) point_init::$10 * (byte/signed byte/word/signed word/dword/signed dword) $10 + (byte) point_init::$22 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD + *((word[4]) y_cur#0 + (byte) point_init::$22) ← (word/signed dword/dword~) point_init::$11 + *((byte[4]) delay#0 + (byte) point_init::point_idx#2) ← (byte) DELAY#0 to:point_init::@return point_init::@7: scope:[point_init] from point_init::@1 - (byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) (signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) (signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) - (signed byte/signed word/signed dword~) point_init::$14 ← - (byte/signed byte/word/signed word/dword/signed dword) $10 - *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$14 + (signed byte/signed word/signed dword~) point_init::$13 ← - (byte/signed byte/word/signed word/dword/signed dword) $10 + *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$13 to:point_init::@8 point_init::@5: scope:[point_init] from point_init::@1 - (byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) (signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) (signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#4) ← (byte/signed byte/word/signed word/dword/signed dword) $10 to:point_init::@8 point_init::@8: scope:[point_init] from point_init::@5 point_init::@7 - (byte) point_init::point_idx#9 ← phi( point_init::@5/(byte) point_init::point_idx#4 point_init::@7/(byte) point_init::point_idx#3 ) - (byte) point_init::point_idx1#4 ← phi( point_init::@5/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 ) + (byte) point_init::point_idx#8 ← phi( point_init::@5/(byte) point_init::point_idx#4 point_init::@7/(byte) point_init::point_idx#3 ) (signed word) point_init::y_diff#2 ← phi( point_init::@5/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 ) (signed word) point_init::x_diff#2 ← phi( point_init::@5/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 ) (signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -463,15 +457,14 @@ point_init::@8: scope:[point_init] from point_init::@5 point_init::@7 (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@11 point_init::@11: scope:[point_init] from point_init::@8 - (byte) point_init::point_idx#6 ← phi( point_init::@8/(byte) point_init::point_idx#9 ) - (byte) point_init::point_idx1#2 ← phi( point_init::@8/(byte) point_init::point_idx1#4 ) + (byte) point_init::point_idx#5 ← phi( point_init::@8/(byte) point_init::point_idx#8 ) (signed word) divr16s::return#5 ← phi( point_init::@8/(signed word) divr16s::return#3 ) - (signed word~) point_init::$15 ← (signed word) divr16s::return#5 - (signed word) point_init::x_stepf#0 ← (signed word~) point_init::$15 - (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 - (byte/signed word/word/dword/signed dword~) point_init::$17 ← (byte~) point_init::$16 / (byte/signed byte/word/signed word/dword/signed dword) $10 - (signed byte~) point_init::$18 ← ((signed byte)) (byte/signed word/word/dword/signed dword~) point_init::$17 - *((signed byte[4]) y_add#0 + (byte) point_init::point_idx1#2) ← (signed byte~) point_init::$18 + (signed word~) point_init::$14 ← (signed word) divr16s::return#5 + (signed word) point_init::x_stepf#0 ← (signed word~) point_init::$14 + (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 + (byte/signed word/word/dword/signed dword~) point_init::$16 ← (byte~) point_init::$15 / (byte/signed byte/word/signed word/dword/signed dword) $10 + (signed byte~) point_init::$17 ← ((signed byte)) (byte/signed word/word/dword/signed dword~) point_init::$16 + *((signed byte[4]) y_add#0 + (byte) point_init::point_idx#5) ← (signed byte~) point_init::$17 to:point_init::@2 point_init::@return: scope:[point_init] from point_init::@2 return @@ -661,6 +654,7 @@ SYMBOL TABLE SSA (byte*) RASTER#0 (byte*) SCREEN (byte*) SCREEN#0 +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) VIC_BMM (byte) VIC_BMM#0 (byte) VIC_DEN @@ -931,11 +925,11 @@ SYMBOL TABLE SSA (void()) main() (byte~) main::$0 (byte~) main::$1 +(bool~) main::$10 (bool~) main::$11 -(bool~) main::$12 +(byte) main::$12 (byte/word/dword~) main::$2 (byte~) main::$4 -(byte/signed word/word/dword/signed dword~) main::$9 (label) main::@1 (label) main::@15 (label) main::@16 @@ -1013,25 +1007,29 @@ SYMBOL TABLE SSA (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#3 (void()) point_init((byte) point_init::point_idx) -(byte/signed word/word/dword/signed dword~) point_init::$0 +(signed word~) point_init::$0 (signed word~) point_init::$1 -(word/signed dword/dword~) point_init::$10 -(word~) point_init::$11 -(word/signed dword/dword~) point_init::$12 -(bool~) point_init::$13 -(signed byte/signed word/signed dword~) point_init::$14 -(signed word~) point_init::$15 -(byte~) point_init::$16 -(byte/signed word/word/dword/signed dword~) point_init::$17 -(signed byte~) point_init::$18 +(word~) point_init::$10 +(word/signed dword/dword~) point_init::$11 +(bool~) point_init::$12 +(signed byte/signed word/signed dword~) point_init::$13 +(signed word~) point_init::$14 +(byte~) point_init::$15 +(byte/signed word/word/dword/signed dword~) point_init::$16 +(signed byte~) point_init::$17 +(byte) point_init::$18 +(byte) point_init::$19 (signed word~) point_init::$2 +(byte) point_init::$20 +(byte) point_init::$21 +(byte) point_init::$22 (signed word~) point_init::$3 (signed word~) point_init::$4 (signed word~) point_init::$5 -(signed word~) point_init::$6 +(word~) point_init::$6 (word~) point_init::$7 -(word~) point_init::$8 -(bool~) point_init::$9 +(bool~) point_init::$8 +(word/signed dword/dword~) point_init::$9 (label) point_init::@1 (label) point_init::@10 (label) point_init::@11 @@ -1106,24 +1104,6 @@ SYMBOL TABLE SSA (byte) point_init::point_idx#7 (byte) point_init::point_idx#8 (byte) point_init::point_idx#9 -(byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 -(byte) point_init::point_idx1#1 -(byte) point_init::point_idx1#10 -(byte) point_init::point_idx1#11 -(byte) point_init::point_idx1#12 -(byte) point_init::point_idx1#13 -(byte) point_init::point_idx1#14 -(byte) point_init::point_idx1#15 -(byte) point_init::point_idx1#16 -(byte) point_init::point_idx1#2 -(byte) point_init::point_idx1#3 -(byte) point_init::point_idx1#4 -(byte) point_init::point_idx1#5 -(byte) point_init::point_idx1#6 -(byte) point_init::point_idx1#7 -(byte) point_init::point_idx1#8 -(byte) point_init::point_idx1#9 (signed word) point_init::x_diff (signed word) point_init::x_diff#0 (signed word) point_init::x_diff#1 @@ -1211,8 +1191,8 @@ Culled Empty Block (label) @20 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not [22] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [21] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [30] (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from [29] (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 -Inversing boolean not [276] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [275] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [296] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [295] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 +Inversing boolean not [279] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [278] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [299] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [298] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 @@ -1254,28 +1234,24 @@ Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte) main::toD0181_return#0 = (byte/word/dword) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte) point_init::point_idx1#0 = (byte/signed word/word/dword/signed dword~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15 -Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13 -Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7 +Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$2 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13 +Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$5 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7 Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16 Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0 Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0 -Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7 +Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$6 Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (signed word) point_init::abs16s2_w#0 (signed word) point_init::abs16s2_w#1 (signed word) point_init::y_diff#14 (signed word) point_init::abs16s2_w#2 (signed word) point_init::y_diff#12 (signed word) point_init::abs16s2_w#3 (signed word) point_init::y_diff#13 Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8 Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11 -Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9 Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0 Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0 -Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8 +Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$7 Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#5 (signed word) point_init::x_diff#4 -Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 -Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#7 (byte) point_init::point_idx1#6 +Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#6 (byte) point_init::point_idx#9 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#5 (signed word) point_init::y_diff#4 Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 -Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4 -Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9 -Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$15 +Alias (byte) point_init::point_idx#5 = (byte) point_init::point_idx#8 +Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$14 Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3 Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4 Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5 @@ -1300,14 +1276,12 @@ Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2 Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2 -Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6 -Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2 +Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#5 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 Successful SSA optimization Pass2AliasElimination Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2 -Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (word) divr16u::divisor#1 Self Phi Eliminated (byte) screen_fill::ch#1 @@ -1338,20 +1312,20 @@ Simple Condition (bool~) divr16u::$9 [31] if((word) divr16u::rem#5<(word) divr16 Simple Condition (bool~) divr16u::$11 [38] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 Simple Condition (bool~) divr16s::$3 [72] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 Simple Condition (bool~) divr16s::$5 [92] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5 -Simple Condition (bool~) main::$11 [173] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -Simple Condition (bool~) main::$12 [176] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@6 +Simple Condition (bool~) main::$10 [173] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 +Simple Condition (bool~) main::$11 [176] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@6 Simple Condition (bool) point_init::abs16s1_$0#0 [193] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 Simple Condition (bool) point_init::abs16s2_$0#0 [208] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -Simple Condition (bool~) point_init::$9 [221] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -Simple Condition (bool~) point_init::$13 [224] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@7 -Simple Condition (bool~) screen_fill::$0 [260] if((byte) screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 -Simple Condition (bool~) screen_fill::$1 [264] if((byte) screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 -Simple Condition (bool~) bitmap_init::$1 [277] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2 -Simple Condition (bool~) bitmap_init::$2 [281] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 -Simple Condition (bool~) bitmap_init::$9 [297] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@6 -Simple Condition (bool~) bitmap_init::$12 [301] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) bitmap_clear::$1 [317] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 -Simple Condition (bool~) bitmap_clear::$2 [321] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 +Simple Condition (bool~) point_init::$8 [221] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 +Simple Condition (bool~) point_init::$12 [224] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@7 +Simple Condition (bool~) screen_fill::$0 [263] if((byte) screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 +Simple Condition (bool~) screen_fill::$1 [267] if((byte) screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 +Simple Condition (bool~) bitmap_init::$1 [280] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 [284] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 [300] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$12 [304] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) bitmap_clear::$1 [320] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 [324] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting || if()-condition to two if()s [54] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -1389,7 +1363,7 @@ Constant (const signed byte[4]) y_add#0 = { fill( 4, 0) } Constant (const byte[4]) delay#0 = { fill( 4, 0) } Constant (const byte) screen_fill::ch#0 = $10 Constant (const byte) main::i#0 = 0 -Constant (const signed byte/signed word/signed dword) point_init::$14 = -$10 +Constant (const signed byte/signed word/signed dword) point_init::$13 = -$10 Constant (const signed word) divr16s::dividend#0 = 0 Constant (const byte) screen_fill::y#0 = 0 Constant (const byte) screen_fill::x#0 = 0 @@ -1451,13 +1425,13 @@ Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) div Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0 Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0 Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0 -Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::point_idx#0) -Eliminating Noop Cast (signed word~) point_init::$2 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) +Eliminating Noop Cast (signed word~) point_init::$0 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::$18) +Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::$19) Eliminating Noop Cast (word) point_init::abs16s1_return#0 ← ((word)) (signed word) point_init::abs16s1_$2#0 Eliminating Noop Cast (word) point_init::abs16s1_return#1 ← ((word)) (signed word) point_init::x_diff#1 Eliminating Noop Cast (word) point_init::abs16s2_return#0 ← ((word)) (signed word) point_init::abs16s2_$2#0 Eliminating Noop Cast (word) point_init::abs16s2_return#1 ← ((word)) (signed word) point_init::y_diff#0 -Eliminating Noop Cast (signed byte~) point_init::$18 ← ((signed byte)) (byte/signed word/word/dword/signed dword~) point_init::$17 +Eliminating Noop Cast (signed byte~) point_init::$17 ← ((signed byte)) (byte/signed word/word/dword/signed dword~) point_init::$16 Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3 Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3 Successful SSA optimization Pass2NopCastElimination @@ -1477,11 +1451,15 @@ Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) $c8 Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) $28 -Rewriting division to use shift (byte/signed word/word/dword/signed dword~) main::$9 ← (byte) main::i#2 / (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting division to use shift (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (word/signed dword/dword~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) * (byte/signed byte/word/signed word/dword/signed dword) $10 -Rewriting multiplication to use shift (word/signed dword/dword~) point_init::$12 ← (word~) point_init::$11 * (byte/signed byte/word/signed word/dword/signed dword) $10 -Rewriting division to use shift (byte/signed word/word/dword/signed dword~) point_init::$17 ← (byte~) point_init::$16 / (byte/signed byte/word/signed word/dword/signed dword) $10 +Rewriting multiplication to use shift (byte) main::$12 ← (byte) main::i#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) point_init::$18 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) point_init::$19 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) point_init::$20 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (word/signed dword/dword~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) * (byte/signed byte/word/signed word/dword/signed dword) $10 +Rewriting multiplication to use shift (byte) point_init::$21 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (word/signed dword/dword~) point_init::$11 ← (word~) point_init::$10 * (byte/signed byte/word/signed word/dword/signed dword) $10 +Rewriting multiplication to use shift (byte) point_init::$22 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Rewriting division to use shift (byte/signed word/word/dword/signed dword~) point_init::$16 ← (byte~) point_init::$15 / (byte/signed byte/word/signed word/dword/signed dword) $10 Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) divr16u::@6 Culled Empty Block (label) divr16s::@7 @@ -1503,12 +1481,12 @@ Self Phi Eliminated (byte) screen_fill::ch#2 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0 Successful SSA optimization Pass2RedundantPhiElimination -Simple Condition (bool~) divr16s::$1 [131] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 +Simple Condition (bool~) divr16s::$1 [135] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Inferred type updated to byte in [45] (byte/signed word/word/dword/signed dword~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -Inferred type updated to word in [66] (word/signed dword/dword~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -Inferred type updated to word in [69] (word/signed dword/dword~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 -Inferred type updated to byte in [80] (byte/signed word/word/dword/signed dword~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 +Inferred type updated to word in [68] (word/signed dword/dword~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 +Inferred type updated to word in [72] (word/signed dword/dword~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 +Inferred type updated to byte in [84] (byte/signed word/word/dword/signed dword~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 +Successful SSA optimization PassNEliminateUnusedVars Inlining constant with var siblings (const word) divr16u::quotient#0 Inlining constant with var siblings (const byte) divr16u::i#0 Inlining constant with var siblings (const byte) divr16s::neg#0 @@ -1536,8 +1514,8 @@ Constant inlined bitmap_init::bits#2 = (byte/word/signed word/dword/signed dword Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined point_init::$14 = -(byte/signed byte/word/signed word/dword/signed dword) $10 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined point_init::$13 = -(byte/signed byte/word/signed word/dword/signed dword) $10 Constant inlined bitmap_init::$10 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) $40 Constant inlined screen_fill::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1598,43 +1576,43 @@ Adding NOP phi() at start of bitmap_init::@3 CALL GRAPH Calls in [] to main:2 Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24 -Calls in [point_init] to divr16s:59 -Calls in [divr16s] to divr16u:81 +Calls in [point_init] to divr16s:63 +Calls in [divr16s] to divr16u:85 Created 30 initial phi equivalence classes Coalesced [29] main::i#5 ← main::i#1 -Coalesced [76] divr16s::neg#10 ← divr16s::neg#3 -Coalesced [86] divr16s::return#6 ← divr16s::return#1 -Coalesced [93] divr16s::neg#9 ← divr16s::neg#2 -Coalesced [96] divr16u::rem#10 ← divr16u::rem#3 -Coalesced [97] divr16u::dividend#8 ← divr16u::dividend#1 -Coalesced [104] divr16u::rem#13 ← divr16u::rem#1 -Coalesced [111] divr16u::rem#15 ← divr16u::rem#2 -Coalesced [112] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [117] divr16u::rem#11 ← divr16u::rem#9 -Coalesced [118] divr16u::dividend#9 ← divr16u::dividend#0 -Coalesced [119] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [120] divr16u::i#7 ← divr16u::i#1 -Coalesced [121] divr16u::rem#14 ← divr16u::rem#5 -Coalesced [122] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [123] divr16u::rem#12 ← divr16u::rem#0 -Coalesced [126] screen_fill::screen#7 ← screen_fill::screen#3 -Coalesced [135] screen_fill::screen#6 ← screen_fill::screen#1 -Coalesced [136] screen_fill::y#5 ← screen_fill::y#1 -Coalesced (already) [137] screen_fill::screen#8 ← screen_fill::screen#1 -Coalesced [138] screen_fill::x#3 ← screen_fill::x#1 -Coalesced [142] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [151] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [152] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [153] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [154] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [174] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [179] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [180] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [181] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [182] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [183] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [184] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [80] divr16s::neg#10 ← divr16s::neg#3 +Coalesced [90] divr16s::return#6 ← divr16s::return#1 +Coalesced [97] divr16s::neg#9 ← divr16s::neg#2 +Coalesced [100] divr16u::rem#10 ← divr16u::rem#3 +Coalesced [101] divr16u::dividend#8 ← divr16u::dividend#1 +Coalesced [108] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [115] divr16u::rem#15 ← divr16u::rem#2 +Coalesced [116] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [121] divr16u::rem#11 ← divr16u::rem#9 +Coalesced [122] divr16u::dividend#9 ← divr16u::dividend#0 +Coalesced [123] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [124] divr16u::i#7 ← divr16u::i#1 +Coalesced [125] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [126] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [127] divr16u::rem#12 ← divr16u::rem#0 +Coalesced [130] screen_fill::screen#7 ← screen_fill::screen#3 +Coalesced [139] screen_fill::screen#6 ← screen_fill::screen#1 +Coalesced [140] screen_fill::y#5 ← screen_fill::y#1 +Coalesced (already) [141] screen_fill::screen#8 ← screen_fill::screen#1 +Coalesced [142] screen_fill::x#3 ← screen_fill::x#1 +Coalesced [146] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [155] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [156] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [157] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [158] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [178] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [183] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [184] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [185] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [186] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [187] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [188] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced down to 22 phi equivalence classes Culled Empty Block (label) main::@22 Culled Empty Block (label) divr16u::@8 @@ -1732,14 +1710,14 @@ main::@1: scope:[main] from main::@6 main::@8 [20] call point_init to:main::@7 main::@7: scope:[main] from main::@1 - [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) - [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) + [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) + [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte) main::i#2) [24] call bitmap_plot to:main::@8 main::@8: scope:[main] from main::@7 - [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 + [25] (byte) main::i#1 ← ++ (byte) main::i#2 + [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 main::@8 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 @@ -1758,243 +1736,247 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot [34] return to:@return point_init: scope:[point_init] from main::@1 - [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) - [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) - [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 + [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) + [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) + [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) + [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 to:point_init::abs16s1 point_init::abs16s1: scope:[point_init] from point_init - [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 + [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 to:point_init::@8 point_init::@8: scope:[point_init] from point_init::abs16s1 - [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 + [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 to:point_init::abs16s1_@return point_init::abs16s1_@return: scope:[point_init] from point_init::@8 point_init::abs16s1_@1 - [42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@8/(word~) point_init::abs16s1_return#6 ) + [43] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@8/(word~) point_init::abs16s1_return#6 ) to:point_init::abs16s2 point_init::abs16s2: scope:[point_init] from point_init::abs16s1_@return - [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 + [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 to:point_init::@9 point_init::@9: scope:[point_init] from point_init::abs16s2 - [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 + [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 to:point_init::abs16s2_@return point_init::abs16s2_@return: scope:[point_init] from point_init::@9 point_init::abs16s2_@1 - [45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@9/(word~) point_init::abs16s2_return#6 ) + [46] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@9/(word~) point_init::abs16s2_return#6 ) to:point_init::@6 point_init::@6: scope:[point_init] from point_init::abs16s2_@return - [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 + [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@6 point_init::@7 - [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 - [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 - [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 - [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 + [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 + [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 + [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) + [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 + [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [53] return + [57] return to:@return point_init::@1: scope:[point_init] from point_init::@6 - [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 + [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 to:point_init::@3 point_init::@3: scope:[point_init] from point_init::@1 - [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 + [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 to:point_init::@5 point_init::@5: scope:[point_init] from point_init::@3 point_init::@4 - [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [58] call divr16s - [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [62] call divr16s + [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@5 - [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 - [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$17 + [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 + [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [67] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16 to:point_init::@2 point_init::@4: scope:[point_init] from point_init::@1 - [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 + [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 to:point_init::@5 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 - [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 + [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 - [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 + [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 to:point_init::abs16s1_@return divr16s: scope:[divr16s] from point_init::@5 - [69] phi() + [73] phi() to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s - [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@7 - [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@8 - [72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@8/(word~) divr16s::remu#8 ) - [72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@8/((word))(const signed word) divr16s::dividend#0 ) - [72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [76] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@8/(word~) divr16s::remu#8 ) + [76] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@8/((word))(const signed word) divr16s::dividend#0 ) + [76] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@2 - [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9 - [75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#3 ) - [75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@9/(word~) divr16s::divisoru#5 ) - [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [79] call divr16u - [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + [79] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#3 ) + [79] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@9/(word~) divr16s::divisoru#5 ) + [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [83] call divr16u + [84] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@4 - [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 + [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [86] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 to:divr16s::@5 divr16s::@5: scope:[divr16s] from divr16s::@6 - [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@10 divr16s::@5 - [84] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@10/(signed word~) divr16s::return#7 ) - [85] return + [88] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@10/(signed word~) divr16s::return#7 ) + [89] return to:@return divr16s::@10: scope:[divr16s] from divr16s::@6 - [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 - [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 + [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@7 - [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 - [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 + [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 + [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 to:divr16s::@2 divr16u: scope:[divr16u] from divr16s::@4 - [92] phi() + [96] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) - [93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [97] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [97] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [97] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) + [97] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) + [98] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [100] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [101] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [103] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [104] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [105] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [107] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [109] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [109] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [110] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [111] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [108] return + [112] return to:@return screen_fill: scope:[screen_fill] from main::@6 - [109] phi() + [113] phi() to:screen_fill::@1 screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 - [110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) - [110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) + [114] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) + [114] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) to:screen_fill::@2 screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 - [111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) - [111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) - [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 - [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 - [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 - [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 + [115] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) + [115] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) + [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 + [117] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 + [118] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 + [119] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 to:screen_fill::@3 screen_fill::@3: scope:[screen_fill] from screen_fill::@2 - [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 - [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 + [120] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 + [121] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 to:screen_fill::@return screen_fill::@return: scope:[screen_fill] from screen_fill::@3 - [118] return + [122] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@5 - [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) - [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) + [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [125] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [125] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 + [126] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [126] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [128] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [129] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [130] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 + [131] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [132] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [129] return + [133] return to:@return bitmap_init: scope:[bitmap_init] from main::@4 - [130] phi() + [134] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 + [135] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [135] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [136] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [137] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) $80 ) - [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [139] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) $80 ) + [140] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [141] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [142] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [144] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [142] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [142] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [144] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [145] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [146] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [147] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [148] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [150] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 + [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [152] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [153] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [154] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [151] return + [155] return to:@return bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [152] phi() + [156] phi() to:bitmap_init::@2 @@ -2120,7 +2102,7 @@ VARIABLE REGISTER WEIGHTS (word) divr16u::return#0 61.0 (word) divr16u::return#2 4.0 (void()) main() -(byte~) main::$9 11.0 +(byte) main::$12 22.0 (byte) main::i (byte) main::i#1 16.5 (byte) main::i#2 7.857142857142857 @@ -2146,12 +2128,17 @@ VARIABLE REGISTER WEIGHTS (byte) main::vicSelectGfxBank1_toDd001_return (void()) point_init((byte) point_init::point_idx) (word~) point_init::$10 4.0 -(word~) point_init::$11 4.0 -(word~) point_init::$12 4.0 -(byte~) point_init::$16 4.0 -(byte~) point_init::$17 2.0 -(signed word~) point_init::$4 2.0 -(signed word~) point_init::$5 4.0 +(word~) point_init::$11 2.0 +(byte~) point_init::$15 4.0 +(byte~) point_init::$16 2.0 +(byte) point_init::$18 1.0 +(byte) point_init::$19 2.0 +(byte) point_init::$20 4.0 +(byte) point_init::$21 4.0 +(byte) point_init::$22 4.0 +(signed word~) point_init::$3 2.0 +(signed word~) point_init::$4 4.0 +(word~) point_init::$9 2.0 (bool~) point_init::abs16s1_$0 (word~) point_init::abs16s1_$1 (signed word~) point_init::abs16s1_$2 @@ -2173,9 +2160,7 @@ VARIABLE REGISTER WEIGHTS (word~) point_init::abs16s2_return#6 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 0.71875 -(byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 0.375 +(byte) point_init::point_idx#0 0.945945945945946 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 0.5555555555555556 (signed word) point_init::x_stepf @@ -2227,27 +2212,31 @@ Initial phi equivalence classes [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Added variable point_init::point_idx#0 to zero page equivalence class [ point_init::point_idx#0 ] -Added variable main::$9 to zero page equivalence class [ main::$9 ] +Added variable main::$12 to zero page equivalence class [ main::$12 ] Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ] Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ] Added variable bitmap_plot::$3 to zero page equivalence class [ bitmap_plot::$3 ] Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ] Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ] Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ] -Added variable point_init::point_idx1#0 to zero page equivalence class [ point_init::point_idx1#0 ] +Added variable point_init::$18 to zero page equivalence class [ point_init::$18 ] +Added variable point_init::$19 to zero page equivalence class [ point_init::$19 ] Added variable point_init::x_diff#1 to zero page equivalence class [ point_init::x_diff#1 ] +Added variable point_init::$3 to zero page equivalence class [ point_init::$3 ] Added variable point_init::$4 to zero page equivalence class [ point_init::$4 ] -Added variable point_init::$5 to zero page equivalence class [ point_init::$5 ] Added variable point_init::y_diff#0 to zero page equivalence class [ point_init::y_diff#0 ] +Added variable point_init::$20 to zero page equivalence class [ point_init::$20 ] +Added variable point_init::$9 to zero page equivalence class [ point_init::$9 ] +Added variable point_init::$21 to zero page equivalence class [ point_init::$21 ] Added variable point_init::$10 to zero page equivalence class [ point_init::$10 ] Added variable point_init::$11 to zero page equivalence class [ point_init::$11 ] -Added variable point_init::$12 to zero page equivalence class [ point_init::$12 ] +Added variable point_init::$22 to zero page equivalence class [ point_init::$22 ] Added variable divr16s::divisor#0 to zero page equivalence class [ divr16s::divisor#0 ] Added variable divr16s::rem#0 to zero page equivalence class [ divr16s::rem#0 ] Added variable divr16s::return#3 to zero page equivalence class [ divr16s::return#3 ] Added variable point_init::x_stepf#0 to zero page equivalence class [ point_init::x_stepf#0 ] +Added variable point_init::$15 to zero page equivalence class [ point_init::$15 ] Added variable point_init::$16 to zero page equivalence class [ point_init::$16 ] -Added variable point_init::$17 to zero page equivalence class [ point_init::$17 ] Added variable point_init::abs16s2_$2#0 to zero page equivalence class [ point_init::abs16s2_$2#0 ] Added variable point_init::abs16s1_$2#0 to zero page equivalence class [ point_init::abs16s1_$2#0 ] Added variable divr16u::divisor#0 to zero page equivalence class [ divr16u::divisor#0 ] @@ -2287,27 +2276,31 @@ Complete equivalence classes [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] [ point_init::point_idx#0 ] -[ main::$9 ] +[ main::$12 ] [ bitmap_plot::x#0 ] [ bitmap_plot::y#0 ] [ bitmap_plot::$3 ] [ bitmap_plot::$1 ] [ bitmap_plot::plotter#1 ] [ bitmap_plot::$2 ] -[ point_init::point_idx1#0 ] +[ point_init::$18 ] +[ point_init::$19 ] [ point_init::x_diff#1 ] +[ point_init::$3 ] [ point_init::$4 ] -[ point_init::$5 ] [ point_init::y_diff#0 ] +[ point_init::$20 ] +[ point_init::$9 ] +[ point_init::$21 ] [ point_init::$10 ] [ point_init::$11 ] -[ point_init::$12 ] +[ point_init::$22 ] [ divr16s::divisor#0 ] [ divr16s::rem#0 ] [ divr16s::return#3 ] [ point_init::x_stepf#0 ] +[ point_init::$15 ] [ point_init::$16 ] -[ point_init::$17 ] [ point_init::abs16s2_$2#0 ] [ point_init::abs16s1_$2#0 ] [ divr16u::divisor#0 ] @@ -2346,42 +2339,46 @@ Allocated zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] Allocated zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] Allocated zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Allocated zp ZP_BYTE:37 [ main::$9 ] +Allocated zp ZP_BYTE:37 [ main::$12 ] Allocated zp ZP_WORD:38 [ bitmap_plot::x#0 ] Allocated zp ZP_BYTE:40 [ bitmap_plot::y#0 ] Allocated zp ZP_WORD:41 [ bitmap_plot::$3 ] Allocated zp ZP_WORD:43 [ bitmap_plot::$1 ] Allocated zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] Allocated zp ZP_BYTE:47 [ bitmap_plot::$2 ] -Allocated zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Allocated zp ZP_WORD:49 [ point_init::x_diff#1 ] -Allocated zp ZP_WORD:51 [ point_init::$4 ] -Allocated zp ZP_WORD:53 [ point_init::$5 ] -Allocated zp ZP_WORD:55 [ point_init::y_diff#0 ] -Allocated zp ZP_WORD:57 [ point_init::$10 ] -Allocated zp ZP_WORD:59 [ point_init::$11 ] -Allocated zp ZP_WORD:61 [ point_init::$12 ] -Allocated zp ZP_WORD:63 [ divr16s::divisor#0 ] -Allocated zp ZP_WORD:65 [ divr16s::rem#0 ] -Allocated zp ZP_WORD:67 [ divr16s::return#3 ] -Allocated zp ZP_WORD:69 [ point_init::x_stepf#0 ] -Allocated zp ZP_BYTE:71 [ point_init::$16 ] -Allocated zp ZP_BYTE:72 [ point_init::$17 ] -Allocated zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] -Allocated zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] -Allocated zp ZP_WORD:77 [ divr16u::divisor#0 ] -Allocated zp ZP_WORD:79 [ divr16u::return#2 ] -Allocated zp ZP_WORD:81 [ divr16s::resultu#0 ] -Allocated zp ZP_WORD:83 [ divr16s::$13 ] -Allocated zp ZP_WORD:85 [ divr16s::$10 ] -Allocated zp ZP_BYTE:87 [ divr16u::$1 ] -Allocated zp ZP_BYTE:88 [ divr16u::$2 ] -Allocated zp ZP_WORD:89 [ bitmap_clear::$3 ] -Allocated zp ZP_BYTE:91 [ bitmap_init::$3 ] -Allocated zp ZP_BYTE:92 [ bitmap_init::$4 ] -Allocated zp ZP_BYTE:93 [ bitmap_init::$5 ] -Allocated zp ZP_BYTE:94 [ bitmap_init::$6 ] -Allocated zp ZP_BYTE:95 [ bitmap_init::$7 ] +Allocated zp ZP_BYTE:48 [ point_init::$18 ] +Allocated zp ZP_BYTE:49 [ point_init::$19 ] +Allocated zp ZP_WORD:50 [ point_init::x_diff#1 ] +Allocated zp ZP_WORD:52 [ point_init::$3 ] +Allocated zp ZP_WORD:54 [ point_init::$4 ] +Allocated zp ZP_WORD:56 [ point_init::y_diff#0 ] +Allocated zp ZP_BYTE:58 [ point_init::$20 ] +Allocated zp ZP_WORD:59 [ point_init::$9 ] +Allocated zp ZP_BYTE:61 [ point_init::$21 ] +Allocated zp ZP_WORD:62 [ point_init::$10 ] +Allocated zp ZP_WORD:64 [ point_init::$11 ] +Allocated zp ZP_BYTE:66 [ point_init::$22 ] +Allocated zp ZP_WORD:67 [ divr16s::divisor#0 ] +Allocated zp ZP_WORD:69 [ divr16s::rem#0 ] +Allocated zp ZP_WORD:71 [ divr16s::return#3 ] +Allocated zp ZP_WORD:73 [ point_init::x_stepf#0 ] +Allocated zp ZP_BYTE:75 [ point_init::$15 ] +Allocated zp ZP_BYTE:76 [ point_init::$16 ] +Allocated zp ZP_WORD:77 [ point_init::abs16s2_$2#0 ] +Allocated zp ZP_WORD:79 [ point_init::abs16s1_$2#0 ] +Allocated zp ZP_WORD:81 [ divr16u::divisor#0 ] +Allocated zp ZP_WORD:83 [ divr16u::return#2 ] +Allocated zp ZP_WORD:85 [ divr16s::resultu#0 ] +Allocated zp ZP_WORD:87 [ divr16s::$13 ] +Allocated zp ZP_WORD:89 [ divr16s::$10 ] +Allocated zp ZP_BYTE:91 [ divr16u::$1 ] +Allocated zp ZP_BYTE:92 [ divr16u::$2 ] +Allocated zp ZP_WORD:93 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:95 [ bitmap_init::$3 ] +Allocated zp ZP_BYTE:96 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:97 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:98 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:99 [ bitmap_init::$7 ] INITIAL ASM //SEG0 File Comments @@ -2432,7 +2429,7 @@ bend: main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)/$40 .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f - .label _9 = $25 + .label _12 = $25 .label i = 2 //SEG10 asm { sei } sei @@ -2476,7 +2473,7 @@ main: { lda #toD0181_return sta D018 //SEG24 [13] call bitmap_init - //SEG25 [130] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] + //SEG25 [134] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] bitmap_init_from_b4: jsr bitmap_init //SEG26 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -2492,7 +2489,7 @@ main: { //SEG30 main::@6 b6: //SEG31 [17] call screen_fill - //SEG32 [109] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] + //SEG32 [113] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] screen_fill_from_b6: jsr screen_fill //SEG33 [18] phi from main::@6 to main::@1 [phi:main::@6->main::@1] @@ -2515,18 +2512,18 @@ main: { jmp b7 //SEG40 main::@7 b7: - //SEG41 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG41 [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i - lsr - sta _9 - //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + asl + sta _12 + //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy _12 lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy _9 + //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i lda y_start,y sta bitmap_plot.y //SEG44 [24] call bitmap_plot @@ -2534,13 +2531,10 @@ main: { jmp b8 //SEG45 main::@8 b8: - //SEG46 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG46 [25] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #4 cmp i bne b1_from_b8 jmp b2 @@ -2608,101 +2602,110 @@ bitmap_plot: { // Initialize the points to be animated // point_init(byte zeropage($24) point_idx) point_init: { - .label _4 = $33 - .label _5 = $35 - .label _10 = $39 - .label _11 = $3b - .label _12 = $3d - .label _16 = $47 - .label _17 = $48 + .label _3 = $34 + .label _4 = $36 + .label _9 = $3b + .label _10 = $3e + .label _11 = $40 + .label _15 = $4b + .label _16 = $4c + .label _18 = $30 + .label _19 = $31 + .label _20 = $3a + .label _21 = $3d + .label _22 = $42 .label point_idx = $24 - .label point_idx1 = $30 - .label y_diff = $37 - .label abs16s1__2 = $4b + .label y_diff = $38 + .label abs16s1__2 = $4f .label abs16s1_return = 3 - .label abs16s2__2 = $49 + .label abs16s2__2 = $4d .label abs16s2_return = 5 - .label x_stepf = $45 - .label x_diff = $31 - //SEG61 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + .label x_stepf = $49 + .label x_diff = $32 + //SEG61 [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda point_idx - lsr - sta point_idx1 - //SEG62 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 - ldy point_idx + asl + sta _18 + //SEG62 [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda point_idx + asl + sta _19 + //SEG63 [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz3 + ldx _18 + ldy _19 sec - lda x_end,y + lda x_end,x sbc x_start,y sta x_diff - lda x_end+1,y + lda x_end+1,x sbc x_start+1,y sta x_diff+1 - //SEG63 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - ldy point_idx1 + //SEG64 [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + ldy point_idx lda y_end,y + sta _3 + lda #0 + sta _3+1 + //SEG65 [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + ldy point_idx + lda y_start,y sta _4 lda #0 sta _4+1 - //SEG64 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - ldy point_idx1 - lda y_start,y - sta _5 - lda #0 - sta _5+1 - //SEG65 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3 - lda _4 + //SEG66 [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 -- vwsz1=vwsz2_minus_vwsz3 + lda _3 sec - sbc _5 + sbc _4 sta y_diff - lda _4+1 - sbc _5+1 + lda _3+1 + sbc _4+1 sta y_diff+1 jmp abs16s1 - //SEG66 point_init::abs16s1 + //SEG67 point_init::abs16s1 abs16s1: - //SEG67 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG68 [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi abs16s1_b1 jmp b8 - //SEG68 point_init::@8 + //SEG69 point_init::@8 b8: - //SEG69 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG70 [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG70 [42] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG71 [43] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] abs16s1_breturn_from_b8: abs16s1_breturn_from_abs16s1_b1: - //SEG71 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG72 [43] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy jmp abs16s1_breturn - //SEG72 point_init::abs16s1_@return + //SEG73 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG73 point_init::abs16s2 + //SEG74 point_init::abs16s2 abs16s2: - //SEG74 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG75 [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bmi abs16s2_b1 jmp b9 - //SEG75 point_init::@9 + //SEG76 point_init::@9 b9: - //SEG76 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG77 [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG77 [45] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG78 [46] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] abs16s2_breturn_from_b9: abs16s2_breturn_from_abs16s2_b1: - //SEG78 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG79 [46] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy jmp abs16s2_breturn - //SEG79 point_init::abs16s2_@return + //SEG80 point_init::abs16s2_@return abs16s2_breturn: jmp b6 - //SEG80 point_init::@6 + //SEG81 point_init::@6 b6: - //SEG81 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG82 [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bcc b1 @@ -2712,132 +2715,144 @@ point_init: { bcc b1 !: jmp b2 - //SEG82 point_init::@2 + //SEG83 point_init::@2 b2: - //SEG83 [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 - ldy point_idx - lda x_start,y - sta _10 - lda x_start+1,y - sta _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - //SEG84 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy point_idx - lda _10 - sta x_cur,y - lda _10+1 - sta x_cur+1,y - //SEG85 [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 - ldy point_idx1 - lda y_start,y - sta _11 - lda #0 - sta _11+1 - //SEG86 [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 - lda _11 + //SEG84 [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda point_idx asl - sta _12 - lda _11+1 - rol - sta _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - //SEG87 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 -- pwuc1_derefidx_vbuz1=vwuz2 + sta _20 + //SEG85 [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + ldy _20 + lda x_start,y + sta _9 + lda x_start+1,y + sta _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG86 [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda point_idx + asl + sta _21 + //SEG87 [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _21 + lda _9 + sta x_cur,y + lda _9+1 + sta x_cur+1,y + //SEG88 [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx - lda _12 + lda y_start,y + sta _10 + lda #0 + sta _10+1 + //SEG89 [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 + lda _10 + asl + sta _11 + lda _10+1 + rol + sta _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + //SEG90 [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda point_idx + asl + sta _22 + //SEG91 [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _22 + lda _11 sta y_cur,y - lda _12+1 + lda _11+1 sta y_cur+1,y - //SEG88 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG92 [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY - ldy point_idx1 + ldy point_idx sta delay,y jmp breturn - //SEG89 point_init::@return + //SEG93 point_init::@return breturn: - //SEG90 [53] return + //SEG94 [57] return rts - //SEG91 point_init::@1 + //SEG95 point_init::@1 b1: - //SEG92 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + //SEG96 [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda x_diff+1 bmi b4 jmp b3 - //SEG93 point_init::@3 + //SEG97 point_init::@3 b3: - //SEG94 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG98 [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 // x add = 1.0 ldy point_idx lda #$10 sta x_add,y jmp b5 - //SEG95 point_init::@5 + //SEG99 point_init::@5 b5: - //SEG96 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 + //SEG100 [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 lda x_diff sta divr16s.divisor lda x_diff+1 sta divr16s.divisor+1 - //SEG97 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + //SEG101 [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 lda y_diff sta divr16s.rem lda y_diff+1 sta divr16s.rem+1 - //SEG98 [58] call divr16s - //SEG99 [69] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + //SEG102 [62] call divr16s + //SEG103 [73] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] divr16s_from_b5: jsr divr16s - //SEG100 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG104 [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 lda divr16s.return sta divr16s.return_3 lda divr16s.return+1 sta divr16s.return_3+1 jmp b7 - //SEG101 point_init::@7 + //SEG105 point_init::@7 b7: - //SEG102 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG106 [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda divr16s.return_3 sta x_stepf lda divr16s.return_3+1 sta x_stepf+1 - //SEG103 [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 + //SEG107 [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 lda x_stepf+1 + sta _15 + //SEG108 [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + lda _15 + lsr + lsr + lsr + lsr sta _16 - //SEG104 [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG109 [67] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16 -- pbsc1_derefidx_vbuz1=vbsz2 lda _16 - lsr - lsr - lsr - lsr - sta _17 - //SEG105 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$17 -- pbsc1_derefidx_vbuz1=vbsz2 - lda _17 - ldy point_idx1 + ldy point_idx sta y_add,y jmp b2 - //SEG106 point_init::@4 + //SEG110 point_init::@4 b4: - //SEG107 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG111 [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy point_idx sta x_add,y jmp b5 - //SEG108 point_init::abs16s2_@1 + //SEG112 point_init::abs16s2_@1 abs16s2_b1: - //SEG109 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG113 [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -2847,15 +2862,15 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG110 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 + //SEG114 [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 lda abs16s2__2 sta abs16s2_return lda abs16s2__2+1 sta abs16s2_return+1 jmp abs16s2_breturn_from_abs16s2_b1 - //SEG111 point_init::abs16s1_@1 + //SEG115 point_init::abs16s1_@1 abs16s1_b1: - //SEG112 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG116 [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -2865,120 +2880,120 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG113 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 + //SEG117 [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 lda abs16s1__2 sta abs16s1_return lda abs16s1__2+1 sta abs16s1_return+1 jmp abs16s1_breturn_from_abs16s1_b1 } -//SEG114 divr16s +//SEG118 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// divr16s(signed word zeropage($3f) divisor, signed word zeropage($41) rem) +// divr16s(signed word zeropage($43) divisor, signed word zeropage($45) rem) divr16s: { .const dividend = 0 - .label _10 = $55 - .label _13 = $53 + .label _10 = $59 + .label _13 = $57 .label neg = $d - .label resultu = $51 + .label resultu = $55 .label return = $e - .label divisor = $3f - .label rem = $41 - .label return_3 = $43 + .label divisor = $43 + .label rem = $45 + .label return_3 = $47 .label dividendu = 7 .label divisoru = $b .label remu = 9 jmp b7 - //SEG115 divr16s::@7 + //SEG119 divr16s::@7 b7: - //SEG116 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG120 [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 jmp b8 - //SEG117 divr16s::@8 + //SEG121 divr16s::@8 b8: - //SEG118 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 + //SEG122 [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 lda rem sta remu lda rem+1 sta remu+1 - //SEG119 [72] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] + //SEG123 [76] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] b2_from_b8: - //SEG120 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy - //SEG121 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG124 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy + //SEG125 [76] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu lda #0 sta dividendu+1 - //SEG122 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG126 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG123 divr16s::@2 + //SEG127 divr16s::@2 b2: - //SEG124 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG128 [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b9 - //SEG125 divr16s::@9 + //SEG129 divr16s::@9 b9: - //SEG126 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG130 [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru lda divisor+1 sta divisoru+1 - //SEG127 [75] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] + //SEG131 [79] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] b4_from_b3: b4_from_b9: - //SEG128 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy - //SEG129 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy + //SEG132 [79] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy + //SEG133 [79] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy jmp b4 - //SEG130 divr16s::@4 + //SEG134 divr16s::@4 b4: - //SEG131 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG135 [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu sta divr16u.dividend lda dividendu+1 sta divr16u.dividend+1 - //SEG132 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG136 [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru sta divr16u.divisor lda divisoru+1 sta divr16u.divisor+1 - //SEG133 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + //SEG137 [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda remu sta divr16u.rem lda remu+1 sta divr16u.rem+1 - //SEG134 [79] call divr16u - //SEG135 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG138 [83] call divr16u + //SEG139 [96] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG136 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG140 [84] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b6 - //SEG137 divr16s::@6 + //SEG141 divr16s::@6 b6: - //SEG138 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG142 [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta resultu lda divr16u.return_2+1 sta resultu+1 - //SEG139 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuz1_eq_0_then_la1 + //SEG143 [86] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b10 jmp b5 - //SEG140 divr16s::@5 + //SEG144 divr16s::@5 b5: - //SEG141 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG145 [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda resultu eor #$ff @@ -2988,26 +3003,26 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG142 [84] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] + //SEG146 [88] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] breturn_from_b10: breturn_from_b5: - //SEG143 [84] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy + //SEG147 [88] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy jmp breturn - //SEG144 divr16s::@return + //SEG148 divr16s::@return breturn: - //SEG145 [85] return + //SEG149 [89] return rts - //SEG146 divr16s::@10 + //SEG150 divr16s::@10 b10: - //SEG147 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG151 [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda resultu sta return lda resultu+1 sta return+1 jmp breturn_from_b10 - //SEG148 divr16s::@3 + //SEG152 divr16s::@3 b3: - //SEG149 [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG153 [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda divisor eor #$ff @@ -3017,19 +3032,19 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG150 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG154 [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG151 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 -- vwuz1=vwuz2 + //SEG155 [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 -- vwuz1=vwuz2 lda _13 sta divisoru lda _13+1 sta divisoru+1 jmp b4_from_b3 - //SEG152 divr16s::@1 + //SEG156 divr16s::@1 b1: - //SEG153 [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 + //SEG157 [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 sec lda rem eor #$ff @@ -3039,97 +3054,97 @@ divr16s: { eor #$ff adc #0 sta _10+1 - //SEG154 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 -- vwuz1=vwuz2 + //SEG158 [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 -- vwuz1=vwuz2 lda _10 sta remu lda _10+1 sta remu+1 - //SEG155 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG159 [76] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG156 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG157 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG160 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG161 [76] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #-dividend sta dividendu lda #0 sta dividendu+1 - //SEG158 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG162 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG159 divr16u +//SEG163 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zeropage($12) dividend, word zeropage($4d) divisor, word zeropage($10) rem) +// divr16u(word zeropage($12) dividend, word zeropage($51) divisor, word zeropage($10) rem) divr16u: { - .label _1 = $57 - .label _2 = $58 + .label _1 = $5b + .label _2 = $5c .label rem = $10 .label dividend = $12 .label quotient = $14 .label i = $16 .label return = $14 - .label divisor = $4d - .label return_2 = $4f - //SEG160 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label divisor = $51 + .label return_2 = $53 + //SEG164 [97] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG161 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG165 [97] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG162 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG166 [97] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG163 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG164 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG167 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG168 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG165 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG169 [97] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG166 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG167 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG168 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG169 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG170 [97] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG171 [97] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG172 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG173 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG170 divr16u::@1 + //SEG174 divr16u::@1 b1: - //SEG171 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG175 [98] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG172 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG176 [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG173 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG177 [100] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG174 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG178 [101] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG175 divr16u::@4 + //SEG179 divr16u::@4 b4: - //SEG176 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG180 [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG177 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG181 [103] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG178 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG182 [103] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG179 divr16u::@2 + //SEG183 divr16u::@2 b2: - //SEG180 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG184 [104] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG181 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG185 [105] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG182 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG186 [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -3139,14 +3154,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG183 divr16u::@5 + //SEG187 divr16u::@5 b5: - //SEG184 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG188 [107] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG185 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG189 [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -3154,27 +3169,27 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG186 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG190 [109] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG187 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG188 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG191 [109] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG192 [109] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG189 divr16u::@3 + //SEG193 divr16u::@3 b3: - //SEG190 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG194 [110] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG191 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG195 [111] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp breturn - //SEG192 divr16u::@return + //SEG196 divr16u::@return breturn: - //SEG193 [108] return + //SEG197 [112] return rts } -//SEG194 screen_fill +//SEG198 screen_fill // Fill the screen with a specific char // screen_fill(byte* zeropage($18) screen) screen_fill: { @@ -3182,246 +3197,246 @@ screen_fill: { .label screen = $18 .label x = $1a .label y = $17 - //SEG195 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG199 [114] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //SEG196 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG200 [114] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG197 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG201 [114] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG198 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG202 [114] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //SEG199 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG200 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG203 [114] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG204 [114] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG201 screen_fill::@1 + //SEG205 screen_fill::@1 b1: - //SEG202 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG206 [115] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //SEG203 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 + //SEG207 [115] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG204 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG208 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG205 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG209 [115] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //SEG206 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG207 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG210 [115] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG211 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG208 screen_fill::@2 + //SEG212 screen_fill::@2 b2: - //SEG209 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG213 [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG210 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG214 [117] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG211 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 + //SEG215 [118] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG212 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG216 [119] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b2_from_b2 jmp b3 - //SEG213 screen_fill::@3 + //SEG217 screen_fill::@3 b3: - //SEG214 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG218 [120] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG215 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG219 [121] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b3 jmp breturn - //SEG216 screen_fill::@return + //SEG220 screen_fill::@return breturn: - //SEG217 [118] return + //SEG221 [122] return rts } -//SEG218 bitmap_clear +//SEG222 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $1c .label x = $1e .label y = $1b - .label _3 = $59 - //SEG219 [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + .label _3 = $5d + //SEG223 [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG220 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG224 [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG221 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG225 [125] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG222 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG226 [125] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG223 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG227 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG224 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG228 [125] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG225 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG226 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG229 [125] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG230 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG227 bitmap_clear::@1 + //SEG231 bitmap_clear::@1 b1: - //SEG228 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG232 [126] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG229 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + //SEG233 [126] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG230 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG234 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG231 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG235 [126] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG232 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG233 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG236 [126] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG237 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG234 bitmap_clear::@2 + //SEG238 bitmap_clear::@2 b2: - //SEG235 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG239 [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG236 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG240 [128] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG237 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG241 [129] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG238 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG242 [130] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$c8 cmp x bne b2_from_b2 jmp b3 - //SEG239 bitmap_clear::@3 + //SEG243 bitmap_clear::@3 b3: - //SEG240 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG244 [131] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG241 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG245 [132] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp y bne b1_from_b3 jmp breturn - //SEG242 bitmap_clear::@return + //SEG246 bitmap_clear::@return breturn: - //SEG243 [129] return + //SEG247 [133] return rts } -//SEG244 bitmap_init +//SEG248 bitmap_init bitmap_init: { - .label _3 = $5b - .label _4 = $5c - .label _5 = $5d - .label _6 = $5e - .label _7 = $5f + .label _3 = $5f + .label _4 = $60 + .label _5 = $61 + .label _6 = $62 + .label _7 = $63 .label bits = $1f .label x = $20 .label y = $21 .label yoffs = $22 - //SEG245 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG249 [135] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG246 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG250 [135] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG247 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG251 [135] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - //SEG248 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG252 [135] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG249 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG250 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG253 [135] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG254 [135] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG251 bitmap_init::@1 + //SEG255 bitmap_init::@1 b1: - //SEG252 [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG256 [136] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG253 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG257 [137] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG254 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 + //SEG258 [138] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b6_from_b1 - //SEG255 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG259 [139] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG256 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG260 [139] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG257 bitmap_init::@2 + //SEG261 bitmap_init::@2 b2: - //SEG258 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG262 [140] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG259 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG263 [141] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG260 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG264 [142] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG261 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG265 [142] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG262 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG266 [142] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG263 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG267 [142] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG264 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG265 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG268 [142] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG269 [142] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG266 bitmap_init::@3 + //SEG270 bitmap_init::@3 b3: - //SEG267 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG271 [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _3 - //SEG268 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG272 [144] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG269 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG273 [145] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG270 [142] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG274 [146] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - //SEG271 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG275 [147] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG272 [144] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG276 [148] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - //SEG273 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG277 [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - //SEG274 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG278 [150] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4_from_b3 jmp b5 - //SEG275 bitmap_init::@5 + //SEG279 bitmap_init::@5 b5: - //SEG276 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG280 [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -3429,32 +3444,32 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG277 [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG281 [152] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - //SEG278 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG282 [152] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG279 bitmap_init::@4 + //SEG283 bitmap_init::@4 b4: - //SEG280 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG284 [153] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG281 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG285 [154] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG282 bitmap_init::@return + //SEG286 bitmap_init::@return breturn: - //SEG283 [151] return + //SEG287 [155] return rts - //SEG284 [152] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG288 [156] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 - //SEG285 bitmap_init::@6 + //SEG289 bitmap_init::@6 b6: - //SEG286 [135] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG290 [139] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - //SEG287 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG291 [139] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 } // The coordinates of the lines to animate @@ -3478,17 +3493,16 @@ bitmap_init: { bitmap_plot_bit: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:92 [ bitmap_init::$4 ] has ALU potential. +Equivalence Class zp ZP_BYTE:96 [ bitmap_init::$4 ] has ALU potential. Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a +Statement [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$12 ] ( main:2 [ main::i#2 main::$12 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ main::$9 ] +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) [ main::i#2 bitmap_plot::x#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 ] ) always clobbers reg byte a Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) $fff8 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a @@ -3496,72 +3510,76 @@ Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a -Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a -Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a -Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a -Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a -Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$10 ] ) always clobbers reg byte a -Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$11 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$12 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$12 ] ) always clobbers reg byte a -Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a -Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a -Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a -Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$18 point_init::$19 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 point_init::$19 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ point_init::$18 ] +Statement [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) [ point_init::point_idx#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ) always clobbers reg byte a +Statement [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ) always clobbers reg byte a +Statement [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a +Statement [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a +Statement [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a +Statement [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a +Statement [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$9 ] ) always clobbers reg byte a +Statement [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$9 point_init::$21 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$9 point_init::$21 ] ) always clobbers reg byte a +Statement [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$10 ] ) always clobbers reg byte a +Statement [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$11 ] ) always clobbers reg byte a +Statement [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$11 point_init::$22 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$11 point_init::$22 ] ) always clobbers reg byte a +Statement [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a +Statement [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] ) always clobbers reg byte a +Statement [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] ) always clobbers reg byte a +Statement [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::$15 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$15 ] ) always clobbers reg byte a +Statement [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] ) always clobbers reg byte a +Statement [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a +Statement [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a +Statement [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a +Statement [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a +Statement [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a -Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$10 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$10 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a +Statement [84] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a +Statement [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a +Statement [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] ) always clobbers reg byte a +Statement [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] ) always clobbers reg byte a +Statement [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a +Statement [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a +Statement [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$10 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::$10 ] ) always clobbers reg byte a +Statement [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a +Statement [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Statement [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] -Statement [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -3569,70 +3587,74 @@ Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VI Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a -Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$12 ] ( main:2 [ main::i#2 main::$12 ] ) always clobbers reg byte a +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) [ main::i#2 bitmap_plot::x#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 ] ) always clobbers reg byte a Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) $fff8 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a -Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a -Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a -Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a -Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a -Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a -Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$10 ] ) always clobbers reg byte a -Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$11 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$12 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$12 ] ) always clobbers reg byte a -Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a -Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a -Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a -Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a -Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a -Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$10 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$10 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y -Statement [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a -Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 ] ) always clobbers reg byte a +Statement [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$18 point_init::$19 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 point_init::$19 ] ) always clobbers reg byte a +Statement [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) [ point_init::point_idx#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ) always clobbers reg byte a +Statement [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ) always clobbers reg byte a +Statement [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a +Statement [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a +Statement [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a +Statement [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a +Statement [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$9 ] ) always clobbers reg byte a +Statement [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$9 point_init::$21 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$9 point_init::$21 ] ) always clobbers reg byte a +Statement [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$10 ] ) always clobbers reg byte a +Statement [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$11 ] ) always clobbers reg byte a +Statement [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$11 point_init::$22 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$11 point_init::$22 ] ) always clobbers reg byte a +Statement [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a +Statement [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] ) always clobbers reg byte a +Statement [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] ) always clobbers reg byte a +Statement [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::$15 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$15 ] ) always clobbers reg byte a +Statement [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] ) always clobbers reg byte a +Statement [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a +Statement [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a +Statement [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a +Statement [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a +Statement [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a +Statement [84] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a +Statement [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a +Statement [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] ) always clobbers reg byte a +Statement [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] ) always clobbers reg byte a +Statement [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a +Statement [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a +Statement [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$10 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::$10 ] ) always clobbers reg byte a +Statement [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:62 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a +Statement [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:62::divr16u:83 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Statement [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:5 , @@ -3656,121 +3678,128 @@ Potential registers zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_ Potential registers zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , Potential registers zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:34 , Potential registers zp ZP_BYTE:36 [ point_init::point_idx#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ main::$9 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:37 [ main::$12 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:38 [ bitmap_plot::x#0 ] : zp ZP_WORD:38 , Potential registers zp ZP_BYTE:40 [ bitmap_plot::y#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:41 [ bitmap_plot::$3 ] : zp ZP_WORD:41 , Potential registers zp ZP_WORD:43 [ bitmap_plot::$1 ] : zp ZP_WORD:43 , Potential registers zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:45 , Potential registers zp ZP_BYTE:47 [ bitmap_plot::$2 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ point_init::point_idx1#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:49 [ point_init::x_diff#1 ] : zp ZP_WORD:49 , -Potential registers zp ZP_WORD:51 [ point_init::$4 ] : zp ZP_WORD:51 , -Potential registers zp ZP_WORD:53 [ point_init::$5 ] : zp ZP_WORD:53 , -Potential registers zp ZP_WORD:55 [ point_init::y_diff#0 ] : zp ZP_WORD:55 , -Potential registers zp ZP_WORD:57 [ point_init::$10 ] : zp ZP_WORD:57 , -Potential registers zp ZP_WORD:59 [ point_init::$11 ] : zp ZP_WORD:59 , -Potential registers zp ZP_WORD:61 [ point_init::$12 ] : zp ZP_WORD:61 , -Potential registers zp ZP_WORD:63 [ divr16s::divisor#0 ] : zp ZP_WORD:63 , -Potential registers zp ZP_WORD:65 [ divr16s::rem#0 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ divr16s::return#3 ] : zp ZP_WORD:67 , -Potential registers zp ZP_WORD:69 [ point_init::x_stepf#0 ] : zp ZP_WORD:69 , -Potential registers zp ZP_BYTE:71 [ point_init::$16 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ point_init::$17 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:73 , -Potential registers zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:75 , -Potential registers zp ZP_WORD:77 [ divr16u::divisor#0 ] : zp ZP_WORD:77 , -Potential registers zp ZP_WORD:79 [ divr16u::return#2 ] : zp ZP_WORD:79 , -Potential registers zp ZP_WORD:81 [ divr16s::resultu#0 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ divr16s::$13 ] : zp ZP_WORD:83 , -Potential registers zp ZP_WORD:85 [ divr16s::$10 ] : zp ZP_WORD:85 , -Potential registers zp ZP_BYTE:87 [ divr16u::$1 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ divr16u::$2 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:89 [ bitmap_clear::$3 ] : zp ZP_WORD:89 , -Potential registers zp ZP_BYTE:91 [ bitmap_init::$3 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ bitmap_init::$4 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:93 [ bitmap_init::$5 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ bitmap_init::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ bitmap_init::$7 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ point_init::$18 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ point_init::$19 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:50 [ point_init::x_diff#1 ] : zp ZP_WORD:50 , +Potential registers zp ZP_WORD:52 [ point_init::$3 ] : zp ZP_WORD:52 , +Potential registers zp ZP_WORD:54 [ point_init::$4 ] : zp ZP_WORD:54 , +Potential registers zp ZP_WORD:56 [ point_init::y_diff#0 ] : zp ZP_WORD:56 , +Potential registers zp ZP_BYTE:58 [ point_init::$20 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:59 [ point_init::$9 ] : zp ZP_WORD:59 , +Potential registers zp ZP_BYTE:61 [ point_init::$21 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:62 [ point_init::$10 ] : zp ZP_WORD:62 , +Potential registers zp ZP_WORD:64 [ point_init::$11 ] : zp ZP_WORD:64 , +Potential registers zp ZP_BYTE:66 [ point_init::$22 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:67 [ divr16s::divisor#0 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ divr16s::rem#0 ] : zp ZP_WORD:69 , +Potential registers zp ZP_WORD:71 [ divr16s::return#3 ] : zp ZP_WORD:71 , +Potential registers zp ZP_WORD:73 [ point_init::x_stepf#0 ] : zp ZP_WORD:73 , +Potential registers zp ZP_BYTE:75 [ point_init::$15 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ point_init::$16 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:77 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:77 , +Potential registers zp ZP_WORD:79 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:79 , +Potential registers zp ZP_WORD:81 [ divr16u::divisor#0 ] : zp ZP_WORD:81 , +Potential registers zp ZP_WORD:83 [ divr16u::return#2 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:85 [ divr16s::resultu#0 ] : zp ZP_WORD:85 , +Potential registers zp ZP_WORD:87 [ divr16s::$13 ] : zp ZP_WORD:87 , +Potential registers zp ZP_WORD:89 [ divr16s::$10 ] : zp ZP_WORD:89 , +Potential registers zp ZP_BYTE:91 [ divr16u::$1 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ divr16u::$2 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:93 [ bitmap_clear::$3 ] : zp ZP_WORD:93 , +Potential registers zp ZP_BYTE:95 [ bitmap_init::$3 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ bitmap_init::$4 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:97 [ bitmap_init::$5 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ bitmap_init::$6 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ bitmap_init::$7 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 887.75: zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:87 [ divr16u::$1 ] 202: zp ZP_BYTE:88 [ divr16u::$2 ] 167.04: zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:77 [ divr16u::divisor#0 ] 4: zp ZP_WORD:79 [ divr16u::return#2 ] -Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:89 [ bitmap_clear::$3 ] +Uplift Scope [divr16u] 887.75: zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:91 [ divr16u::$1 ] 202: zp ZP_BYTE:92 [ divr16u::$2 ] 167.04: zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:81 [ divr16u::divisor#0 ] 4: zp ZP_WORD:83 [ divr16u::return#2 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:93 [ bitmap_clear::$3 ] Uplift Scope [screen_fill] 221.6: zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:92 [ bitmap_init::$4 ] 22: zp ZP_BYTE:93 [ bitmap_init::$5 ] 22: zp ZP_BYTE:94 [ bitmap_init::$6 ] 22: zp ZP_BYTE:95 [ bitmap_init::$7 ] 11: zp ZP_BYTE:91 [ bitmap_init::$3 ] -Uplift Scope [point_init] 14: zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:53 [ point_init::$5 ] 4: zp ZP_WORD:57 [ point_init::$10 ] 4: zp ZP_WORD:59 [ point_init::$11 ] 4: zp ZP_WORD:61 [ point_init::$12 ] 4: zp ZP_WORD:69 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:71 [ point_init::$16 ] 2: zp ZP_WORD:51 [ point_init::$4 ] 2: zp ZP_BYTE:72 [ point_init::$17 ] 2: zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] 0.72: zp ZP_BYTE:36 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:49 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:55 [ point_init::y_diff#0 ] 0.38: zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Uplift Scope [divr16s] 11: zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.67: zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp ZP_WORD:67 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:65 [ divr16s::rem#0 ] 2: zp ZP_WORD:85 [ divr16s::$10 ] 1: zp ZP_WORD:81 [ divr16s::resultu#0 ] 1: zp ZP_WORD:83 [ divr16s::$13 ] 0.67: zp ZP_WORD:63 [ divr16s::divisor#0 ] 0.29: zp ZP_WORD:7 [ divr16s::dividendu#3 ] -Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:37 [ main::$9 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:96 [ bitmap_init::$4 ] 22: zp ZP_BYTE:97 [ bitmap_init::$5 ] 22: zp ZP_BYTE:98 [ bitmap_init::$6 ] 22: zp ZP_BYTE:99 [ bitmap_init::$7 ] 11: zp ZP_BYTE:95 [ bitmap_init::$3 ] +Uplift Scope [point_init] 14: zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:54 [ point_init::$4 ] 4: zp ZP_BYTE:58 [ point_init::$20 ] 4: zp ZP_BYTE:61 [ point_init::$21 ] 4: zp ZP_WORD:62 [ point_init::$10 ] 4: zp ZP_BYTE:66 [ point_init::$22 ] 4: zp ZP_WORD:73 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:75 [ point_init::$15 ] 2: zp ZP_BYTE:49 [ point_init::$19 ] 2: zp ZP_WORD:52 [ point_init::$3 ] 2: zp ZP_WORD:59 [ point_init::$9 ] 2: zp ZP_WORD:64 [ point_init::$11 ] 2: zp ZP_BYTE:76 [ point_init::$16 ] 2: zp ZP_WORD:77 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:79 [ point_init::abs16s1_$2#0 ] 1: zp ZP_BYTE:48 [ point_init::$18 ] 0.95: zp ZP_BYTE:36 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:50 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:56 [ point_init::y_diff#0 ] +Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:37 [ main::$12 ] +Uplift Scope [divr16s] 11: zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.67: zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp ZP_WORD:71 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:69 [ divr16s::rem#0 ] 2: zp ZP_WORD:89 [ divr16s::$10 ] 1: zp ZP_WORD:85 [ divr16s::resultu#0 ] 1: zp ZP_WORD:87 [ divr16s::$13 ] 0.67: zp ZP_WORD:67 [ divr16s::divisor#0 ] 0.29: zp ZP_WORD:7 [ divr16s::dividendu#3 ] Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:40 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:43 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:47 [ bitmap_plot::$2 ] 3: zp ZP_WORD:38 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:41 [ bitmap_plot::$3 ] Uplift Scope [] -Uplifting [divr16u] best 29611 combination zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:77 [ divr16u::divisor#0 ] zp ZP_WORD:79 [ divr16u::return#2 ] -Uplifting [bitmap_clear] best 28711 combination zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:89 [ bitmap_clear::$3 ] -Uplifting [screen_fill] best 27811 combination zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [bitmap_init] best 27271 combination zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:93 [ bitmap_init::$5 ] zp ZP_BYTE:94 [ bitmap_init::$6 ] zp ZP_BYTE:95 [ bitmap_init::$7 ] zp ZP_BYTE:91 [ bitmap_init::$3 ] +Uplifting [divr16u] best 29596 combination zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:81 [ divr16u::divisor#0 ] zp ZP_WORD:83 [ divr16u::return#2 ] +Uplifting [bitmap_clear] best 28696 combination zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:93 [ bitmap_clear::$3 ] +Uplifting [screen_fill] best 27796 combination zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [bitmap_init] best 27256 combination zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:97 [ bitmap_init::$5 ] zp ZP_BYTE:98 [ bitmap_init::$6 ] zp ZP_BYTE:99 [ bitmap_init::$7 ] zp ZP_BYTE:95 [ bitmap_init::$3 ] Limited combination testing to 100 combinations of 61440 possible. -Uplifting [point_init] best 27259 combination zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:53 [ point_init::$5 ] zp ZP_WORD:57 [ point_init::$10 ] zp ZP_WORD:59 [ point_init::$11 ] zp ZP_WORD:61 [ point_init::$12 ] zp ZP_WORD:69 [ point_init::x_stepf#0 ] reg byte a [ point_init::$16 ] zp ZP_WORD:51 [ point_init::$4 ] reg byte a [ point_init::$17 ] zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:36 [ point_init::point_idx#0 ] zp ZP_WORD:49 [ point_init::x_diff#1 ] zp ZP_WORD:55 [ point_init::y_diff#0 ] zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Limited combination testing to 100 combinations of 144 possible. -Uplifting [divr16s] best 27248 combination zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:67 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:65 [ divr16s::rem#0 ] zp ZP_WORD:85 [ divr16s::$10 ] zp ZP_WORD:81 [ divr16s::resultu#0 ] zp ZP_WORD:83 [ divr16s::$13 ] zp ZP_WORD:63 [ divr16s::divisor#0 ] zp ZP_WORD:7 [ divr16s::dividendu#3 ] -Uplifting [main] best 27208 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ] -Uplifting [bitmap_plot] best 27171 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:43 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:38 [ bitmap_plot::x#0 ] zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] zp ZP_WORD:41 [ bitmap_plot::$3 ] -Uplifting [] best 27171 combination +Uplifting [point_init] best 27238 combination zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:54 [ point_init::$4 ] reg byte a [ point_init::$20 ] reg byte a [ point_init::$21 ] zp ZP_WORD:62 [ point_init::$10 ] reg byte a [ point_init::$22 ] zp ZP_WORD:73 [ point_init::x_stepf#0 ] reg byte a [ point_init::$15 ] zp ZP_BYTE:49 [ point_init::$19 ] zp ZP_WORD:52 [ point_init::$3 ] zp ZP_WORD:59 [ point_init::$9 ] zp ZP_WORD:64 [ point_init::$11 ] zp ZP_BYTE:76 [ point_init::$16 ] zp ZP_WORD:77 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:79 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:48 [ point_init::$18 ] zp ZP_BYTE:36 [ point_init::point_idx#0 ] zp ZP_WORD:50 [ point_init::x_diff#1 ] zp ZP_WORD:56 [ point_init::y_diff#0 ] +Limited combination testing to 100 combinations of 36864 possible. +Uplifting [main] best 27198 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte a [ main::$12 ] +Uplifting [divr16s] best 27187 combination zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:71 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:69 [ divr16s::rem#0 ] zp ZP_WORD:89 [ divr16s::$10 ] zp ZP_WORD:85 [ divr16s::resultu#0 ] zp ZP_WORD:87 [ divr16s::$13 ] zp ZP_WORD:67 [ divr16s::divisor#0 ] zp ZP_WORD:7 [ divr16s::dividendu#3 ] +Uplifting [bitmap_plot] best 27150 combination reg byte x [ bitmap_plot::y#0 ] zp ZP_WORD:43 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:38 [ bitmap_plot::x#0 ] zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] zp ZP_WORD:41 [ bitmap_plot::$3 ] +Uplifting [] best 27150 combination Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 27171 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 27111 combination reg byte a [ bitmap_init::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 27051 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 27011 combination reg byte a [ bitmap_init::$7 ] +Uplifting [main] best 27150 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 27090 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:98 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 27030 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 26990 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [screen_fill] best 27011 combination zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [screen_fill] best 26990 combination zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 27011 combination zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ bitmap_init::$3 ] -Uplifting [bitmap_init] best 27011 combination zp ZP_BYTE:91 [ bitmap_init::$3 ] +Uplifting [bitmap_clear] best 26990 combination zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$3 ] +Uplifting [bitmap_init] best 26990 combination zp ZP_BYTE:95 [ bitmap_init::$3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ point_init::$19 ] +Uplifting [point_init] best 26986 combination reg byte a [ point_init::$19 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ point_init::$16 ] +Uplifting [point_init] best 26980 combination reg byte a [ point_init::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ point_init::$18 ] +Uplifting [point_init] best 26976 combination reg byte x [ point_init::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ point_init::point_idx#0 ] -Uplifting [point_init] best 27011 combination zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Uplifting [point_init] best 27011 combination zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:81 [ divr16s::resultu#0 ] ] - score: 2 +Uplifting [point_init] best 26976 combination zp ZP_BYTE:36 [ point_init::point_idx#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:85 [ divr16s::resultu#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:36 [ point_init::point_idx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:79 [ point_init::abs16s1_$2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:77 [ point_init::abs16s2_$2#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:65 [ divr16s::rem#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:63 [ divr16s::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:77 [ divr16u::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:83 [ divr16s::$13 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:67 [ divr16s::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:79 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:89 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:69 [ divr16s::rem#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:89 [ divr16s::$10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:67 [ divr16s::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:81 [ divr16u::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:87 [ divr16s::$13 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:71 [ divr16s::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:83 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:93 [ bitmap_clear::$3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ point_init::$4 ] ] with [ zp ZP_WORD:55 [ point_init::y_diff#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ point_init::$11 ] ] with [ zp ZP_WORD:61 [ point_init::$12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 ] ] with [ zp ZP_WORD:51 [ point_init::$4 point_init::y_diff#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$13 ] ] with [ zp ZP_WORD:49 [ point_init::x_diff#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:52 [ point_init::$3 ] ] with [ zp ZP_WORD:56 [ point_init::y_diff#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:62 [ point_init::$10 ] ] with [ zp ZP_WORD:64 [ point_init::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 ] ] with [ zp ZP_WORD:52 [ point_init::$3 point_init::y_diff#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$13 ] ] with [ zp ZP_WORD:50 [ point_init::x_diff#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:69 [ point_init::x_stepf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:73 [ point_init::x_stepf#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:91 [ bitmap_init::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:95 [ bitmap_init::$3 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:7 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:38 [ bitmap_plot::x#0 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:53 [ point_init::$5 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:57 [ point_init::$10 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$10 ] ] with [ zp ZP_WORD:59 [ point_init::$11 point_init::$12 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:54 [ point_init::$4 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$4 ] ] with [ zp ZP_WORD:59 [ point_init::$9 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$4 point_init::$9 ] ] with [ zp ZP_WORD:62 [ point_init::$10 point_init::$11 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:41 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$4 point_init::y_diff#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$1 ] ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] +Coalescing zero page register [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$3 point_init::y_diff#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$1 ] ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$3 point_init::y_diff#0 bitmap_plot::$1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$13 point_init::x_diff#1 ] -Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:11 [ point_init::point_idx1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -3864,7 +3893,7 @@ main: { lda #toD0181_return sta D018 //SEG24 [13] call bitmap_init - //SEG25 [130] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] + //SEG25 [134] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] bitmap_init_from_b4: jsr bitmap_init //SEG26 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -3880,7 +3909,7 @@ main: { //SEG30 main::@6 b6: //SEG31 [17] call screen_fill - //SEG32 [109] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] + //SEG32 [113] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] screen_fill_from_b6: jsr screen_fill //SEG33 [18] phi from main::@6 to main::@1 [phi:main::@6->main::@1] @@ -3901,30 +3930,27 @@ main: { jmp b7 //SEG40 main::@7 b7: - //SEG41 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 + //SEG41 [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda i - lsr - tax - //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + asl + //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx - ldy y_start,x + //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte) main::i#2) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy i + ldx y_start,y //SEG44 [24] call bitmap_plot jsr bitmap_plot jmp b8 //SEG45 main::@8 b8: - //SEG46 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG46 [25] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #4 cmp i bne b1_from_b8 jmp b2 @@ -3943,16 +3969,16 @@ main: { } //SEG52 bitmap_plot // Plot a single dot in the bitmap -// bitmap_plot(word zeropage(3) x, byte register(Y) y) +// bitmap_plot(word zeropage(3) x, byte register(X) y) bitmap_plot: { .label _1 = 7 .label x = 3 .label plotter = 5 .label _3 = 5 - //SEG53 [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + //SEG53 [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta _3+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta _3 //SEG54 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x @@ -3988,13 +4014,12 @@ bitmap_plot: { // Initialize the points to be animated // point_init(byte zeropage(2) point_idx) point_init: { - .label _4 = 7 - .label _5 = 3 + .label _3 = 7 + .label _4 = 3 + .label _9 = 3 .label _10 = 3 .label _11 = 3 - .label _12 = 3 .label point_idx = 2 - .label point_idx1 = $b .label y_diff = 7 .label abs16s1__2 = 3 .label abs16s1_return = 3 @@ -4002,85 +4027,88 @@ point_init: { .label abs16s2_return = 5 .label x_stepf = 5 .label x_diff = 9 - //SEG61 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG61 [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 lda point_idx - lsr - sta point_idx1 - //SEG62 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 - ldy point_idx + asl + tax + //SEG62 [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG63 [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) -- vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuaa + tay sec - lda x_end,y + lda x_end,x sbc x_start,y sta x_diff - lda x_end+1,y + lda x_end+1,x sbc x_start+1,y sta x_diff+1 - //SEG63 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - ldy point_idx1 + //SEG64 [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + ldy point_idx lda y_end,y + sta _3 + lda #0 + sta _3+1 + //SEG65 [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + ldy point_idx + lda y_start,y sta _4 lda #0 sta _4+1 - //SEG64 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - ldy point_idx1 - lda y_start,y - sta _5 - lda #0 - sta _5+1 - //SEG65 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG66 [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 -- vwsz1=vwsz1_minus_vwsz2 lda y_diff sec - sbc _5 + sbc _4 sta y_diff lda y_diff+1 - sbc _5+1 + sbc _4+1 sta y_diff+1 jmp abs16s1 - //SEG66 point_init::abs16s1 + //SEG67 point_init::abs16s1 abs16s1: - //SEG67 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG68 [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi abs16s1_b1 jmp b8 - //SEG68 point_init::@8 + //SEG69 point_init::@8 b8: - //SEG69 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG70 [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG70 [42] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG71 [43] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] abs16s1_breturn_from_b8: abs16s1_breturn_from_abs16s1_b1: - //SEG71 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG72 [43] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy jmp abs16s1_breturn - //SEG72 point_init::abs16s1_@return + //SEG73 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG73 point_init::abs16s2 + //SEG74 point_init::abs16s2 abs16s2: - //SEG74 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG75 [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bmi abs16s2_b1 jmp b9 - //SEG75 point_init::@9 + //SEG76 point_init::@9 b9: - //SEG76 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG77 [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG77 [45] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG78 [46] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] abs16s2_breturn_from_b9: abs16s2_breturn_from_abs16s2_b1: - //SEG78 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG79 [46] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy jmp abs16s2_breturn - //SEG79 point_init::abs16s2_@return + //SEG80 point_init::abs16s2_@return abs16s2_breturn: jmp b6 - //SEG80 point_init::@6 + //SEG81 point_init::@6 b6: - //SEG81 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG82 [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bcc b1 @@ -4090,108 +4118,117 @@ point_init: { bcc b1 !: jmp b2 - //SEG82 point_init::@2 + //SEG83 point_init::@2 b2: - //SEG83 [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 - ldy point_idx + //SEG84 [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG85 [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuaa_rol_4 + tay lda x_start,y - sta _10 + sta _9 lda x_start+1,y - sta _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - //SEG84 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy point_idx - lda _10 + sta _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG86 [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG87 [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 -- pwuc1_derefidx_vbuaa=vwuz1 + tay + lda _9 sta x_cur,y - lda _10+1 + lda _9+1 sta x_cur+1,y - //SEG85 [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 - ldy point_idx1 - lda y_start,y - sta _11 - lda #0 - sta _11+1 - //SEG86 [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - //SEG87 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG88 [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx - lda _12 + lda y_start,y + sta _10 + lda #0 + sta _10+1 + //SEG89 [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + //SEG90 [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG91 [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 -- pwuc1_derefidx_vbuaa=vwuz1 + tay + lda _11 sta y_cur,y - lda _12+1 + lda _11+1 sta y_cur+1,y - //SEG88 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG92 [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY - ldy point_idx1 + ldy point_idx sta delay,y jmp breturn - //SEG89 point_init::@return + //SEG93 point_init::@return breturn: - //SEG90 [53] return + //SEG94 [57] return rts - //SEG91 point_init::@1 + //SEG95 point_init::@1 b1: - //SEG92 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + //SEG96 [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda x_diff+1 bmi b4 jmp b3 - //SEG93 point_init::@3 + //SEG97 point_init::@3 b3: - //SEG94 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG98 [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 // x add = 1.0 ldy point_idx lda #$10 sta x_add,y jmp b5 - //SEG95 point_init::@5 + //SEG99 point_init::@5 b5: - //SEG96 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - //SEG97 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - //SEG98 [58] call divr16s - //SEG99 [69] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + //SEG100 [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + //SEG101 [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + //SEG102 [62] call divr16s + //SEG103 [73] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] divr16s_from_b5: jsr divr16s - //SEG100 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG104 [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp b7 - //SEG101 point_init::@7 + //SEG105 point_init::@7 b7: - //SEG102 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - //SEG103 [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG106 [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG107 [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG104 [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG108 [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG105 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$17 -- pbsc1_derefidx_vbuz1=vbsaa - ldy point_idx1 + //SEG109 [67] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16 -- pbsc1_derefidx_vbuz1=vbsaa + ldy point_idx sta y_add,y jmp b2 - //SEG106 point_init::@4 + //SEG110 point_init::@4 b4: - //SEG107 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG111 [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy point_idx sta x_add,y jmp b5 - //SEG108 point_init::abs16s2_@1 + //SEG112 point_init::abs16s2_@1 abs16s2_b1: - //SEG109 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG113 [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -4201,11 +4238,11 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG110 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + //SEG114 [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 jmp abs16s2_breturn_from_abs16s2_b1 - //SEG111 point_init::abs16s1_@1 + //SEG115 point_init::abs16s1_@1 abs16s1_b1: - //SEG112 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG116 [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -4215,10 +4252,10 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG113 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + //SEG117 [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 jmp abs16s1_breturn_from_abs16s1_b1 } -//SEG114 divr16s +//SEG118 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -4237,62 +4274,62 @@ divr16s: { .label divisoru = 9 .label remu = 7 jmp b7 - //SEG115 divr16s::@7 + //SEG119 divr16s::@7 b7: - //SEG116 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG120 [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 jmp b8 - //SEG117 divr16s::@8 + //SEG121 divr16s::@8 b8: - //SEG118 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - //SEG119 [72] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] + //SEG122 [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + //SEG123 [76] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] b2_from_b8: - //SEG120 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy - //SEG121 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG124 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy + //SEG125 [76] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu lda #0 sta dividendu+1 - //SEG122 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG126 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG123 divr16s::@2 + //SEG127 divr16s::@2 b2: - //SEG124 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG128 [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b9 - //SEG125 divr16s::@9 + //SEG129 divr16s::@9 b9: - //SEG126 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG127 [75] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] + //SEG130 [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG131 [79] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] b4_from_b3: b4_from_b9: - //SEG128 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy - //SEG129 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy + //SEG132 [79] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy + //SEG133 [79] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy jmp b4 - //SEG130 divr16s::@4 + //SEG134 divr16s::@4 b4: - //SEG131 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - //SEG132 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - //SEG133 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - //SEG134 [79] call divr16u - //SEG135 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG135 [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG136 [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + //SEG137 [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + //SEG138 [83] call divr16u + //SEG139 [96] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG136 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG140 [84] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b6 - //SEG137 divr16s::@6 + //SEG141 divr16s::@6 b6: - //SEG138 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - //SEG139 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuyy_eq_0_then_la1 + //SEG142 [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG143 [86] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuyy_eq_0_then_la1 cpy #0 beq b10 jmp b5 - //SEG140 divr16s::@5 + //SEG144 divr16s::@5 b5: - //SEG141 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG145 [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -4302,22 +4339,22 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG142 [84] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] + //SEG146 [88] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] breturn_from_b10: breturn_from_b5: - //SEG143 [84] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy + //SEG147 [88] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy jmp breturn - //SEG144 divr16s::@return + //SEG148 divr16s::@return breturn: - //SEG145 [85] return + //SEG149 [89] return rts - //SEG146 divr16s::@10 + //SEG150 divr16s::@10 b10: - //SEG147 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG151 [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 jmp breturn_from_b10 - //SEG148 divr16s::@3 + //SEG152 divr16s::@3 b3: - //SEG149 [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG153 [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _13 eor #$ff @@ -4327,15 +4364,15 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG150 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG154 [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG151 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + //SEG155 [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 jmp b4_from_b3 - //SEG152 divr16s::@1 + //SEG156 divr16s::@1 b1: - //SEG153 [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG157 [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _10 eor #$ff @@ -4345,20 +4382,20 @@ divr16s: { eor #$ff adc #0 sta _10+1 - //SEG154 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 - //SEG155 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG158 [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 + //SEG159 [76] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG156 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG157 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG160 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG161 [76] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #-dividend sta dividendu lda #0 sta dividendu+1 - //SEG158 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG162 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG159 divr16u +//SEG163 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4370,58 +4407,58 @@ divr16u: { .label quotient = 5 .label return = 5 .label divisor = 9 - //SEG160 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG164 [97] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG161 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG165 [97] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG162 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG166 [97] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG163 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG164 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG167 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG168 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG165 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG169 [97] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG166 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG167 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG168 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG169 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG170 [97] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG171 [97] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG172 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG173 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG170 divr16u::@1 + //SEG174 divr16u::@1 b1: - //SEG171 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG175 [98] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG172 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG176 [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG173 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG177 [100] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG174 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG178 [101] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG175 divr16u::@4 + //SEG179 divr16u::@4 b4: - //SEG176 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG180 [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG177 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG181 [103] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG178 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG182 [103] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG179 divr16u::@2 + //SEG183 divr16u::@2 b2: - //SEG180 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG184 [104] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG181 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG185 [105] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG182 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG186 [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -4431,14 +4468,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG183 divr16u::@5 + //SEG187 divr16u::@5 b5: - //SEG184 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG188 [107] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG185 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG189 [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -4446,237 +4483,237 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG186 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG190 [109] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG187 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG188 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG191 [109] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG192 [109] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG189 divr16u::@3 + //SEG193 divr16u::@3 b3: - //SEG190 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG194 [110] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG191 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG195 [111] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp breturn - //SEG192 divr16u::@return + //SEG196 divr16u::@return breturn: - //SEG193 [108] return + //SEG197 [112] return rts } -//SEG194 screen_fill +//SEG198 screen_fill // Fill the screen with a specific char // screen_fill(byte* zeropage(3) screen) screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //SEG195 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG199 [114] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //SEG196 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG200 [114] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG197 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG201 [114] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG198 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG202 [114] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //SEG199 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG200 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG203 [114] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG204 [114] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG201 screen_fill::@1 + //SEG205 screen_fill::@1 b1: - //SEG202 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG206 [115] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //SEG203 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + //SEG207 [115] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG204 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG208 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG205 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG209 [115] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //SEG206 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG207 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG210 [115] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG211 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG208 screen_fill::@2 + //SEG212 screen_fill::@2 b2: - //SEG209 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG213 [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG210 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG214 [117] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG211 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG215 [118] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //SEG212 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG216 [119] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG213 screen_fill::@3 + //SEG217 screen_fill::@3 b3: - //SEG214 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG218 [120] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG215 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG219 [121] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1_from_b3 jmp breturn - //SEG216 screen_fill::@return + //SEG220 screen_fill::@return breturn: - //SEG217 [118] return + //SEG221 [122] return rts } -//SEG218 bitmap_clear +//SEG222 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG219 [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG223 [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG220 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG221 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG224 [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG225 [125] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG222 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG226 [125] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG223 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG227 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG224 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG228 [125] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG225 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG226 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG229 [125] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG230 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG227 bitmap_clear::@1 + //SEG231 bitmap_clear::@1 b1: - //SEG228 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG232 [126] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG229 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG233 [126] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG234 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG231 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG235 [126] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG232 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG233 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG236 [126] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG237 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG234 bitmap_clear::@2 + //SEG238 bitmap_clear::@2 b2: - //SEG235 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG239 [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG236 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG240 [128] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG237 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG241 [129] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG238 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG242 [130] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2_from_b2 jmp b3 - //SEG239 bitmap_clear::@3 + //SEG243 bitmap_clear::@3 b3: - //SEG240 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG244 [131] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG241 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG245 [132] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp y bne b1_from_b3 jmp breturn - //SEG242 bitmap_clear::@return + //SEG246 bitmap_clear::@return breturn: - //SEG243 [129] return + //SEG247 [133] return rts } -//SEG244 bitmap_init +//SEG248 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //SEG245 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG249 [135] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG246 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG250 [135] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG247 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG251 [135] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - //SEG248 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG252 [135] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG249 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG250 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG253 [135] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG254 [135] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG251 bitmap_init::@1 + //SEG255 bitmap_init::@1 b1: - //SEG252 [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG256 [136] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG253 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG257 [137] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG254 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + //SEG258 [138] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b6_from_b1 - //SEG255 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG259 [139] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG256 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG260 [139] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - //SEG257 bitmap_init::@2 + //SEG261 bitmap_init::@2 b2: - //SEG258 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG262 [140] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG263 [141] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG260 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG264 [142] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG261 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG265 [142] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG262 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG266 [142] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG263 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG267 [142] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG264 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG265 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG268 [142] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG269 [142] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG266 bitmap_init::@3 + //SEG270 bitmap_init::@3 b3: - //SEG267 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG271 [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _3 - //SEG268 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG272 [144] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG269 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG273 [145] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG270 [142] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG274 [146] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG271 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG275 [147] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG272 [144] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG276 [148] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG273 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG277 [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG274 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG278 [150] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b5 - //SEG275 bitmap_init::@5 + //SEG279 bitmap_init::@5 b5: - //SEG276 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG280 [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -4684,31 +4721,31 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG277 [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG281 [152] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - //SEG278 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG282 [152] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG279 bitmap_init::@4 + //SEG283 bitmap_init::@4 b4: - //SEG280 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG284 [153] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG281 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG285 [154] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG282 bitmap_init::@return + //SEG286 bitmap_init::@return breturn: - //SEG283 [151] return + //SEG287 [155] return rts - //SEG284 [152] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG288 [156] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 - //SEG285 bitmap_init::@6 + //SEG289 bitmap_init::@6 b6: - //SEG286 [135] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG290 [139] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - //SEG287 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG291 [139] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 } // The coordinates of the lines to animate @@ -4790,8 +4827,8 @@ Removing instruction jmp breturn Removing instruction jmp b6 Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 -Removing instruction ldy point_idx1 Removing instruction ldy point_idx +Replacing instruction lda point_idx with TYA Replacing instruction ldy #0 with TAY Replacing instruction lda #0 with TXA Removing instruction lda #0 @@ -4919,8 +4956,8 @@ Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [154] bmi abs16s1_b1 to bpl -Fixing long branch [163] bmi abs16s2_b1 to bpl +Fixing long branch [152] bmi abs16s1_b1 to bpl +Fixing long branch [161] bmi abs16s2_b1 to bpl FINAL SYMBOL TABLE (label) @1 @@ -5013,7 +5050,7 @@ FINAL SYMBOL TABLE (word) bitmap_plot::x (word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 15.0 +(byte) bitmap_plot::y#0 reg byte x 15.0 (byte[$100]) bitmap_plot_bit (const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi @@ -5097,7 +5134,7 @@ FINAL SYMBOL TABLE (word) divr16u::return#0 return zp ZP_WORD:5 61.0 (word) divr16u::return#2 return zp ZP_WORD:5 4.0 (void()) main() -(byte~) main::$9 reg byte x 11.0 +(byte) main::$12 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -5137,12 +5174,17 @@ FINAL SYMBOL TABLE (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) $40 (void()) point_init((byte) point_init::point_idx) (word~) point_init::$10 $10 zp ZP_WORD:3 4.0 -(word~) point_init::$11 $11 zp ZP_WORD:3 4.0 -(word~) point_init::$12 $12 zp ZP_WORD:3 4.0 -(byte~) point_init::$16 reg byte a 4.0 -(byte~) point_init::$17 reg byte a 2.0 -(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0 -(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0 +(word~) point_init::$11 $11 zp ZP_WORD:3 2.0 +(byte~) point_init::$15 reg byte a 4.0 +(byte~) point_init::$16 reg byte a 2.0 +(byte) point_init::$18 reg byte x 1.0 +(byte) point_init::$19 reg byte a 2.0 +(byte) point_init::$20 reg byte a 4.0 +(byte) point_init::$21 reg byte a 4.0 +(byte) point_init::$22 reg byte a 4.0 +(signed word~) point_init::$3 $3 zp ZP_WORD:7 2.0 +(signed word~) point_init::$4 $4 zp ZP_WORD:3 4.0 +(word~) point_init::$9 $9 zp ZP_WORD:3 2.0 (label) point_init::@1 (label) point_init::@2 (label) point_init::@3 @@ -5180,9 +5222,7 @@ FINAL SYMBOL TABLE (word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875 -(byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375 +(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.945945945945946 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556 (signed word) point_init::x_stepf @@ -5224,9 +5264,9 @@ FINAL SYMBOL TABLE (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $14 } zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] -zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$10 point_init::$11 point_init::$12 ] +zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$4 point_init::$9 point_init::$10 point_init::$11 ] zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] -zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] +zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$3 point_init::y_diff#0 bitmap_plot::$1 ] zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$13 point_init::x_diff#1 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] @@ -5235,12 +5275,16 @@ reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -reg byte x [ main::$9 ] -reg byte y [ bitmap_plot::y#0 ] +reg byte a [ main::$12 ] +reg byte x [ bitmap_plot::y#0 ] reg byte a [ bitmap_plot::$2 ] -zp ZP_BYTE:11 [ point_init::point_idx1#0 ] +reg byte x [ point_init::$18 ] +reg byte a [ point_init::$19 ] +reg byte a [ point_init::$20 ] +reg byte a [ point_init::$21 ] +reg byte a [ point_init::$22 ] +reg byte a [ point_init::$15 ] reg byte a [ point_init::$16 ] -reg byte a [ point_init::$17 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte a [ bitmap_init::$4 ] @@ -5250,7 +5294,7 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 21475 +Score: 21442 //SEG0 File Comments // Animated lines drawn on a single color bitmap @@ -5323,7 +5367,7 @@ main: { lda #toD0181_return sta D018 //SEG24 [13] call bitmap_init - //SEG25 [130] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] + //SEG25 [134] phi from main::@4 to bitmap_init [phi:main::@4->bitmap_init] jsr bitmap_init //SEG26 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] //SEG27 main::@5 @@ -5332,7 +5376,7 @@ main: { //SEG29 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] //SEG30 main::@6 //SEG31 [17] call screen_fill - //SEG32 [109] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] + //SEG32 [113] phi from main::@6 to screen_fill [phi:main::@6->screen_fill] jsr screen_fill //SEG33 [18] phi from main::@6 to main::@1 [phi:main::@6->main::@1] //SEG34 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 @@ -5346,28 +5390,25 @@ main: { //SEG39 [20] call point_init jsr point_init //SEG40 main::@7 - //SEG41 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 + //SEG41 [21] (byte) main::$12 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda i - lsr - tax - //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + asl + //SEG42 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::$12) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx - ldy y_start,x + //SEG43 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte) main::i#2) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy i + ldx y_start,y //SEG44 [24] call bitmap_plot jsr bitmap_plot //SEG45 main::@8 - //SEG46 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG46 [25] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG47 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #4 cmp i bne b1 //SEG48 main::@2 @@ -5383,16 +5424,16 @@ main: { } //SEG52 bitmap_plot // Plot a single dot in the bitmap -// bitmap_plot(word zeropage(3) x, byte register(Y) y) +// bitmap_plot(word zeropage(3) x, byte register(X) y) bitmap_plot: { .label _1 = 7 .label x = 3 .label plotter = 5 .label _3 = 5 - //SEG53 [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + //SEG53 [29] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta _3+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta _3 //SEG54 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x @@ -5425,13 +5466,12 @@ bitmap_plot: { // Initialize the points to be animated // point_init(byte zeropage(2) point_idx) point_init: { - .label _4 = 7 - .label _5 = 3 + .label _3 = 7 + .label _4 = 3 + .label _9 = 3 .label _10 = 3 .label _11 = 3 - .label _12 = 3 .label point_idx = 2 - .label point_idx1 = $b .label y_diff = 7 .label abs16s1__2 = 3 .label abs16s1_return = 3 @@ -5439,72 +5479,75 @@ point_init: { .label abs16s2_return = 5 .label x_stepf = 5 .label x_diff = 9 - //SEG61 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG61 [35] (byte) point_init::$18 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 lda point_idx - lsr - sta point_idx1 - //SEG62 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 - ldy point_idx + asl + tax + //SEG62 [36] (byte) point_init::$19 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG63 [37] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::$18) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::$19) -- vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuaa + tay sec - lda x_end,y + lda x_end,x sbc x_start,y sta x_diff - lda x_end+1,y + lda x_end+1,x sbc x_start+1,y sta x_diff+1 - //SEG63 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - ldy point_idx1 + //SEG64 [38] (signed word~) point_init::$3 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + ldy point_idx lda y_end,y + sta _3 + lda #0 + sta _3+1 + //SEG65 [39] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + lda y_start,y sta _4 lda #0 sta _4+1 - //SEG64 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 - lda y_start,y - sta _5 - lda #0 - sta _5+1 - //SEG65 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG66 [40] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 -- vwsz1=vwsz1_minus_vwsz2 lda y_diff sec - sbc _5 + sbc _4 sta y_diff lda y_diff+1 - sbc _5+1 + sbc _4+1 sta y_diff+1 - //SEG66 point_init::abs16s1 - //SEG67 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG67 point_init::abs16s1 + //SEG68 [41] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bpl !abs16s1_b1+ jmp abs16s1_b1 !abs16s1_b1: - //SEG68 point_init::@8 - //SEG69 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG69 point_init::@8 + //SEG70 [42] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG70 [42] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] - //SEG71 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy - //SEG72 point_init::abs16s1_@return - //SEG73 point_init::abs16s2 + //SEG71 [43] phi from point_init::@8 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG72 [43] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@8/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG73 point_init::abs16s1_@return + //SEG74 point_init::abs16s2 abs16s2: - //SEG74 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG75 [44] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bpl !abs16s2_b1+ jmp abs16s2_b1 !abs16s2_b1: - //SEG75 point_init::@9 - //SEG76 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG76 point_init::@9 + //SEG77 [45] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG77 [45] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] - //SEG78 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy - //SEG79 point_init::abs16s2_@return - //SEG80 point_init::@6 + //SEG78 [46] phi from point_init::@9 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG79 [46] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@9/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG80 point_init::abs16s2_@return + //SEG81 point_init::@6 b6: - //SEG81 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG82 [47] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bcc b1 @@ -5513,99 +5556,109 @@ point_init: { cmp abs16s1_return bcc b1 !: - //SEG82 point_init::@2 + //SEG83 point_init::@2 b2: - //SEG83 [47] (word~) point_init::$10 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 - ldy point_idx + //SEG84 [48] (byte) point_init::$20 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG85 [49] (word~) point_init::$9 ← *((const word[4]) x_start#0 + (byte) point_init::$20) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuaa_rol_4 + tay lda x_start,y - sta _10 + sta _9 lda x_start+1,y - sta _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - asl _10 - rol _10+1 - //SEG84 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$10 -- pwuc1_derefidx_vbuz1=vwuz2 - lda _10 + sta _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG86 [50] (byte) point_init::$21 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda point_idx + asl + //SEG87 [51] *((const word[4]) x_cur#0 + (byte) point_init::$21) ← (word~) point_init::$9 -- pwuc1_derefidx_vbuaa=vwuz1 + tay + lda _9 sta x_cur,y - lda _10+1 + lda _9+1 sta x_cur+1,y - //SEG85 [49] (word~) point_init::$11 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 - ldy point_idx1 - lda y_start,y - sta _11 - lda #0 - sta _11+1 - //SEG86 [50] (word~) point_init::$12 ← (word~) point_init::$11 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - asl _12 - rol _12+1 - //SEG87 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$12 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG88 [52] (word~) point_init::$10 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx - lda _12 + lda y_start,y + sta _10 + lda #0 + sta _10+1 + //SEG89 [53] (word~) point_init::$11 ← (word~) point_init::$10 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + asl _11 + rol _11+1 + //SEG90 [54] (byte) point_init::$22 ← (byte) point_init::point_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + tya + asl + //SEG91 [55] *((const word[4]) y_cur#0 + (byte) point_init::$22) ← (word~) point_init::$11 -- pwuc1_derefidx_vbuaa=vwuz1 + tay + lda _11 sta y_cur,y - lda _12+1 + lda _11+1 sta y_cur+1,y - //SEG88 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG92 [56] *((const byte[4]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY - ldy point_idx1 + ldy point_idx sta delay,y - //SEG89 point_init::@return - //SEG90 [53] return + //SEG93 point_init::@return + //SEG94 [57] return rts - //SEG91 point_init::@1 + //SEG95 point_init::@1 b1: - //SEG92 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + //SEG96 [58] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda x_diff+1 bmi b4 - //SEG93 point_init::@3 - //SEG94 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG97 point_init::@3 + //SEG98 [59] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbuc2 // x add = 1.0 ldy point_idx lda #$10 sta x_add,y - //SEG95 point_init::@5 + //SEG99 point_init::@5 b5: - //SEG96 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - //SEG97 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - //SEG98 [58] call divr16s - //SEG99 [69] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + //SEG100 [60] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + //SEG101 [61] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + //SEG102 [62] call divr16s + //SEG103 [73] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] jsr divr16s - //SEG100 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 - //SEG101 point_init::@7 - //SEG102 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - //SEG103 [61] (byte~) point_init::$16 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG104 [63] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG105 point_init::@7 + //SEG106 [64] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG107 [65] (byte~) point_init::$15 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG104 [62] (byte~) point_init::$17 ← (byte~) point_init::$16 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG108 [66] (byte~) point_init::$16 ← (byte~) point_init::$15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG105 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$17 -- pbsc1_derefidx_vbuz1=vbsaa - ldy point_idx1 + //SEG109 [67] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16 -- pbsc1_derefidx_vbuz1=vbsaa + ldy point_idx sta y_add,y jmp b2 - //SEG106 point_init::@4 + //SEG110 point_init::@4 b4: - //SEG107 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG111 [68] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy point_idx sta x_add,y jmp b5 - //SEG108 point_init::abs16s2_@1 + //SEG112 point_init::abs16s2_@1 abs16s2_b1: - //SEG109 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG113 [69] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -5615,11 +5668,11 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG110 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + //SEG114 [70] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 jmp b6 - //SEG111 point_init::abs16s1_@1 + //SEG115 point_init::abs16s1_@1 abs16s1_b1: - //SEG112 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG116 [71] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -5629,10 +5682,10 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG113 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + //SEG117 [72] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 jmp abs16s2 } -//SEG114 divr16s +//SEG118 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -5650,47 +5703,47 @@ divr16s: { .label dividendu = 3 .label divisoru = 9 .label remu = 7 - //SEG115 divr16s::@7 - //SEG116 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG119 divr16s::@7 + //SEG120 [74] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 - //SEG117 divr16s::@8 - //SEG118 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - //SEG119 [72] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] - //SEG120 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy - //SEG121 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG121 divr16s::@8 + //SEG122 [75] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + //SEG123 [76] phi from divr16s::@8 to divr16s::@2 [phi:divr16s::@8->divr16s::@2] + //SEG124 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@8->divr16s::@2#0] -- register_copy + //SEG125 [76] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@8->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu lda #0 sta dividendu+1 - //SEG122 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG126 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@8->divr16s::@2#2] -- vbuyy=vbuc1 tay - //SEG123 divr16s::@2 + //SEG127 divr16s::@2 b2: - //SEG124 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG128 [77] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 - //SEG125 divr16s::@9 - //SEG126 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG127 [75] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] - //SEG128 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy - //SEG129 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy - //SEG130 divr16s::@4 + //SEG129 divr16s::@9 + //SEG130 [78] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG131 [79] phi from divr16s::@3 divr16s::@9 to divr16s::@4 [phi:divr16s::@3/divr16s::@9->divr16s::@4] + //SEG132 [79] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@9->divr16s::@4#0] -- register_copy + //SEG133 [79] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@9->divr16s::@4#1] -- register_copy + //SEG134 divr16s::@4 b4: - //SEG131 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - //SEG132 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - //SEG133 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - //SEG134 [79] call divr16u - //SEG135 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG135 [80] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG136 [81] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + //SEG137 [82] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + //SEG138 [83] call divr16u + //SEG139 [96] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] jsr divr16u - //SEG136 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG137 divr16s::@6 - //SEG138 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - //SEG139 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuyy_eq_0_then_la1 + //SEG140 [84] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG141 divr16s::@6 + //SEG142 [85] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG143 [86] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@10 -- vbuyy_eq_0_then_la1 cpy #0 beq breturn - //SEG140 divr16s::@5 - //SEG141 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG144 divr16s::@5 + //SEG145 [87] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -5700,17 +5753,17 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG142 [84] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] - //SEG143 [84] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy - //SEG144 divr16s::@return + //SEG146 [88] phi from divr16s::@10 divr16s::@5 to divr16s::@return [phi:divr16s::@10/divr16s::@5->divr16s::@return] + //SEG147 [88] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy + //SEG148 divr16s::@return breturn: - //SEG145 [85] return + //SEG149 [89] return rts - //SEG146 divr16s::@10 - //SEG147 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG148 divr16s::@3 + //SEG150 divr16s::@10 + //SEG151 [90] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG152 divr16s::@3 b3: - //SEG149 [87] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG153 [91] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _13 eor #$ff @@ -5720,15 +5773,15 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG150 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG154 [92] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG151 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + //SEG155 [93] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 jmp b4 - //SEG152 divr16s::@1 + //SEG156 divr16s::@1 b1: - //SEG153 [90] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG157 [94] (signed word~) divr16s::$10 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _10 eor #$ff @@ -5738,19 +5791,19 @@ divr16s: { eor #$ff adc #0 sta _10+1 - //SEG154 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 - //SEG155 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - //SEG156 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG157 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG158 [95] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$10 + //SEG159 [76] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG160 [76] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG161 [76] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #-dividend sta dividendu lda #0 sta dividendu+1 - //SEG158 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG162 [76] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG159 divr16u +//SEG163 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5762,48 +5815,48 @@ divr16u: { .label quotient = 5 .label return = 5 .label divisor = 9 - //SEG160 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG161 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG164 [97] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG165 [97] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG162 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG166 [97] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG163 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG164 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG165 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG166 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG167 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG168 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG169 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG170 divr16u::@1 + //SEG167 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG168 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG169 [97] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG170 [97] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG171 [97] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG172 [97] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG173 [97] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG174 divr16u::@1 b1: - //SEG171 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG175 [98] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG172 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG176 [99] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG173 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG177 [100] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG174 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG178 [101] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG175 divr16u::@4 - //SEG176 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG179 divr16u::@4 + //SEG180 [102] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG177 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG178 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG179 divr16u::@2 + //SEG181 [103] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG182 [103] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG183 divr16u::@2 b2: - //SEG180 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG184 [104] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG181 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG185 [105] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG182 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG186 [106] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -5812,13 +5865,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG183 divr16u::@5 - //SEG184 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG187 divr16u::@5 + //SEG188 [107] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG185 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG189 [108] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5826,196 +5879,196 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG186 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG187 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG188 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG189 divr16u::@3 + //SEG190 [109] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG191 [109] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG192 [109] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG193 divr16u::@3 b3: - //SEG190 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG194 [110] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG191 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG195 [111] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG192 divr16u::@return - //SEG193 [108] return + //SEG196 divr16u::@return + //SEG197 [112] return rts } -//SEG194 screen_fill +//SEG198 screen_fill // Fill the screen with a specific char // screen_fill(byte* zeropage(3) screen) screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //SEG195 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] - //SEG196 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG199 [114] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG200 [114] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG197 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG201 [114] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 - //SEG198 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] - //SEG199 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG200 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy - //SEG201 screen_fill::@1 + //SEG202 [114] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG203 [114] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG204 [114] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG205 screen_fill::@1 b1: - //SEG202 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] - //SEG203 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + //SEG206 [115] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG207 [115] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG204 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy - //SEG205 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] - //SEG206 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG207 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy - //SEG208 screen_fill::@2 + //SEG208 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG209 [115] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG210 [115] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG211 [115] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG212 screen_fill::@2 b2: - //SEG209 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG213 [116] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG210 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG214 [117] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG211 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG215 [118] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //SEG212 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG216 [119] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG213 screen_fill::@3 - //SEG214 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG217 screen_fill::@3 + //SEG218 [120] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG215 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG219 [121] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b1 - //SEG216 screen_fill::@return - //SEG217 [118] return + //SEG220 screen_fill::@return + //SEG221 [122] return rts } -//SEG218 bitmap_clear +//SEG222 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG219 [119] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG223 [123] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG220 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG221 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG222 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG224 [124] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG225 [125] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG226 [125] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG223 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG224 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG225 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG226 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG227 bitmap_clear::@1 + //SEG227 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG228 [125] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG229 [125] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG230 [125] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG231 bitmap_clear::@1 b1: - //SEG228 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG229 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG232 [126] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG233 [126] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG231 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG232 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG233 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG234 bitmap_clear::@2 + //SEG234 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG235 [126] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG236 [126] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG237 [126] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG238 bitmap_clear::@2 b2: - //SEG235 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG239 [127] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG236 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG240 [128] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG237 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG241 [129] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG238 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG242 [130] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2 - //SEG239 bitmap_clear::@3 - //SEG240 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG243 bitmap_clear::@3 + //SEG244 [131] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG241 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG245 [132] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp y bne b1 - //SEG242 bitmap_clear::@return - //SEG243 [129] return + //SEG246 bitmap_clear::@return + //SEG247 [133] return rts } -//SEG244 bitmap_init +//SEG248 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //SEG245 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG246 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG249 [135] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG250 [135] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG247 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG251 [135] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - //SEG248 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG249 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG250 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG251 bitmap_init::@1 + //SEG252 [135] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG253 [135] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG254 [135] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG255 bitmap_init::@1 b1: - //SEG252 [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG256 [136] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG253 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG257 [137] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG254 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + //SEG258 [138] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG255 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG256 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG259 [139] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG260 [139] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - //SEG257 bitmap_init::@2 + //SEG261 bitmap_init::@2 b2: - //SEG258 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG262 [140] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG263 [141] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG260 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG261 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG264 [142] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG265 [142] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG262 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG266 [142] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG263 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG264 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG265 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG266 bitmap_init::@3 + //SEG267 [142] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG268 [142] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG269 [142] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG270 bitmap_init::@3 b3: - //SEG267 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG271 [143] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _3 - //SEG268 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG272 [144] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG269 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG273 [145] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG270 [142] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG274 [146] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG271 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG275 [147] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG272 [144] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG276 [148] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG273 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG277 [149] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG274 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG278 [150] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG275 bitmap_init::@5 - //SEG276 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG279 bitmap_init::@5 + //SEG280 [151] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -6023,22 +6076,22 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG277 [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] - //SEG278 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy - //SEG279 bitmap_init::@4 + //SEG281 [152] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG282 [152] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG283 bitmap_init::@4 b4: - //SEG280 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG284 [153] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG281 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG285 [154] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG282 bitmap_init::@return - //SEG283 [151] return + //SEG286 bitmap_init::@return + //SEG287 [155] return rts - //SEG284 [152] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] - //SEG285 bitmap_init::@6 - //SEG286 [135] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] - //SEG287 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG288 [156] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG289 bitmap_init::@6 + //SEG290 [139] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG291 [139] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy } // The coordinates of the lines to animate x_start: .word $a, $14, $1e, $1e diff --git a/src/test/ref/line-anim.sym b/src/test/ref/line-anim.sym index ffbe26ddd..6b27b1538 100644 --- a/src/test/ref/line-anim.sym +++ b/src/test/ref/line-anim.sym @@ -88,7 +88,7 @@ (word) bitmap_plot::x (word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 15.0 +(byte) bitmap_plot::y#0 reg byte x 15.0 (byte[$100]) bitmap_plot_bit (const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi @@ -172,7 +172,7 @@ (word) divr16u::return#0 return zp ZP_WORD:5 61.0 (word) divr16u::return#2 return zp ZP_WORD:5 4.0 (void()) main() -(byte~) main::$9 reg byte x 11.0 +(byte) main::$12 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -212,12 +212,17 @@ (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) $40 (void()) point_init((byte) point_init::point_idx) (word~) point_init::$10 $10 zp ZP_WORD:3 4.0 -(word~) point_init::$11 $11 zp ZP_WORD:3 4.0 -(word~) point_init::$12 $12 zp ZP_WORD:3 4.0 -(byte~) point_init::$16 reg byte a 4.0 -(byte~) point_init::$17 reg byte a 2.0 -(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0 -(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0 +(word~) point_init::$11 $11 zp ZP_WORD:3 2.0 +(byte~) point_init::$15 reg byte a 4.0 +(byte~) point_init::$16 reg byte a 2.0 +(byte) point_init::$18 reg byte x 1.0 +(byte) point_init::$19 reg byte a 2.0 +(byte) point_init::$20 reg byte a 4.0 +(byte) point_init::$21 reg byte a 4.0 +(byte) point_init::$22 reg byte a 4.0 +(signed word~) point_init::$3 $3 zp ZP_WORD:7 2.0 +(signed word~) point_init::$4 $4 zp ZP_WORD:3 4.0 +(word~) point_init::$9 $9 zp ZP_WORD:3 2.0 (label) point_init::@1 (label) point_init::@2 (label) point_init::@3 @@ -255,9 +260,7 @@ (word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875 -(byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375 +(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.945945945945946 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556 (signed word) point_init::x_stepf @@ -299,9 +302,9 @@ (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $14 } zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] -zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$10 point_init::$11 point_init::$12 ] +zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$4 point_init::$9 point_init::$10 point_init::$11 ] zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] -zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] +zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$10 point_init::$3 point_init::y_diff#0 bitmap_plot::$1 ] zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$13 point_init::x_diff#1 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] @@ -310,12 +313,16 @@ reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -reg byte x [ main::$9 ] -reg byte y [ bitmap_plot::y#0 ] +reg byte a [ main::$12 ] +reg byte x [ bitmap_plot::y#0 ] reg byte a [ bitmap_plot::$2 ] -zp ZP_BYTE:11 [ point_init::point_idx1#0 ] +reg byte x [ point_init::$18 ] +reg byte a [ point_init::$19 ] +reg byte a [ point_init::$20 ] +reg byte a [ point_init::$21 ] +reg byte a [ point_init::$22 ] +reg byte a [ point_init::$15 ] reg byte a [ point_init::$16 ] -reg byte a [ point_init::$17 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte a [ bitmap_init::$4 ] diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm index dcb94bf6e..b3658492e 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm @@ -265,7 +265,7 @@ plex_irq: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label _7 = 6 + .label _6 = 6 .label plex_sprite_idx2 = $d .label plexFreeAdd1__2 = 9 lda plex_sprite_idx @@ -289,14 +289,18 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + txa asl - tax - lda PLEX_XPOS,x + tay + lda PLEX_XPOS,y ldy plex_sprite_idx2 sta SPRITES_XPOS,y - lda PLEX_XPOS+1,x + txa + asl + tay + lda PLEX_XPOS+1,y cmp #0 bne b1 lda #$ff @@ -307,7 +311,7 @@ plexShowSprite: { ldx plex_sprite_idx inx lda #7 - sax _7 + sax _6 inc plex_show_idx asl plex_sprite_msb lda plex_sprite_msb diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.cfg b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.cfg index 4703b55b8..c7e024a0a 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.cfg +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.cfg @@ -132,8 +132,8 @@ init::@1: scope:[init] from init init::@1 [60] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) [60] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 - [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 + [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 [64] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [65] (byte) init::sx#1 ← ++ (byte) init::sx#2 [66] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 @@ -180,7 +180,7 @@ plex_irq::@3: scope:[plex_irq] from plex_irq plex_irq::@7 [87] (byte) plex_sprite_msb#29 ← phi( plex_irq/(byte) plex_sprite_msb#0 plex_irq::@7/(byte) plex_sprite_msb#17 ) [87] (byte) plex_free_next#27 ← phi( plex_irq/(byte) plex_free_next#31 plex_irq::@7/(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 ) [87] (byte) plex_show_idx#27 ← phi( plex_irq/(byte) plex_show_idx#0 plex_irq::@7/(byte) plex_show_idx#16 ) - [87] (byte) plex_sprite_idx#25 ← phi( plex_irq/(byte) plex_sprite_idx#0 plex_irq::@7/(byte/word/dword~) plexShowSprite::$7 ) + [87] (byte) plex_sprite_idx#25 ← phi( plex_irq/(byte) plex_sprite_idx#0 plex_irq::@7/(byte/word/dword~) plexShowSprite::$6 ) [88] call plexShowSprite to:plex_irq::plexFreeNextYpos1 plex_irq::plexFreeNextYpos1: scope:[plex_irq] from plex_irq::@3 @@ -222,30 +222,32 @@ plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite to:plexShowSprite::@5 plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) - [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 - [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 - [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [111] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 + [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) + [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 + [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + [113] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 to:plexShowSprite::@3 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@5 - [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 - [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 + [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3 - [114] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [116] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 - [117] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return + [116] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [118] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 + [119] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return to:plexShowSprite::@4 plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@2 - [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:plexShowSprite::@return plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@4 - [120] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#27 plexShowSprite::@4/(byte) plex_sprite_msb#4 ) - [121] return + [122] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#27 plexShowSprite::@4/(byte) plex_sprite_msb#4 ) + [123] return to:@return plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5 - [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 + [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 to:plexShowSprite::@2 diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log index 579da3c09..ca2e4e320 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log @@ -1,4 +1,7 @@ Resolved forward reference plex_irq to interrupt(KERNEL_MIN)(void()) plex_irq() +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) plexShowSprite::xpos_idx) +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) plexShowSprite::xpos_idx) +Fixing pointer array-indexing *((word[PLEX_COUNT]) PLEX_XPOS + (byte) init::sx) Identified constant variable (byte*) SCREEN Identified constant variable (byte*) SPRITE Identified constant variable (byte*) YSIN @@ -187,13 +190,14 @@ plexShowSprite::@7: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 (byte*) PLEX_SCREEN_PTR#9 ← phi( plexShowSprite::plexFreeAdd1/(byte*) PLEX_SCREEN_PTR#16 ) (byte) plex_show_idx#14 ← phi( plexShowSprite::plexFreeAdd1/(byte) plex_show_idx#28 ) *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#14) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#14)) - (byte/signed word/word/dword/signed dword~) plexShowSprite::$2 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#14) * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) plexShowSprite::xpos_idx#0 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$2 - (byte~) plexShowSprite::$3 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#1) ← (byte~) plexShowSprite::$3 - (byte~) plexShowSprite::$4 ← > *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - (bool~) plexShowSprite::$5 ← (byte~) plexShowSprite::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) plexShowSprite::$5) goto plexShowSprite::@1 + (byte) plexShowSprite::xpos_idx#0 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#14) + (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD + (byte~) plexShowSprite::$2 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#1) ← (byte~) plexShowSprite::$2 + (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD + (byte~) plexShowSprite::$3 ← > *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + (bool~) plexShowSprite::$4 ← (byte~) plexShowSprite::$3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) plexShowSprite::$4) goto plexShowSprite::@1 to:plexShowSprite::@4 plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@7 (byte) plex_free_next#41 ← phi( plexShowSprite::@7/(byte) plex_free_next#47 ) @@ -207,22 +211,22 @@ plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@7 (byte) plex_show_idx#30 ← phi( plexShowSprite::@7/(byte) plex_show_idx#14 ) (byte) plex_sprite_idx#28 ← phi( plexShowSprite::@7/(byte) plex_sprite_idx#14 ) (byte) plex_sprite_msb#15 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#26 ) - (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#15 - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#15 + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@4 (byte) plex_free_next#32 ← phi( plexShowSprite::@1/(byte) plex_free_next#41 plexShowSprite::@4/(byte) plex_free_next#42 ) (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#14 plexShowSprite::@4/(byte) plex_sprite_msb#15 ) (byte) plex_show_idx#15 ← phi( plexShowSprite::@1/(byte) plex_show_idx#29 plexShowSprite::@4/(byte) plex_show_idx#30 ) (byte) plex_sprite_idx#15 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#27 plexShowSprite::@4/(byte) plex_sprite_idx#28 ) - (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#15 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$7 + (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#15 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$6 (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#15 (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#16 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) plexShowSprite::$9 ← ! (bool~) plexShowSprite::$8 - if((bool~) plexShowSprite::$9) goto plexShowSprite::@3 + (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) plexShowSprite::$8 ← ! (bool~) plexShowSprite::$7 + if((bool~) plexShowSprite::$8) goto plexShowSprite::@3 to:plexShowSprite::@6 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@2 (byte) plex_sprite_msb#27 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 ) @@ -346,12 +350,12 @@ init::@1: scope:[init] from init::@1 init::@5 (byte*~) init::$5 ← (byte*) SPRITE#0 / (byte/signed byte/word/signed word/dword/signed dword) $40 (byte~) init::$6 ← ((byte)) (byte*~) init::$5 *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← (byte~) init::$6 - (byte/signed word/word/dword/signed dword~) init::$7 ← (byte) init::sx#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte/signed word/word/dword/signed dword~) init::$7) ← (word) init::xp#2 + (byte) init::$9 ← (byte) init::sx#2 * (const byte) SIZEOF_WORD + *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) init::sx#1 ← (byte) init::sx#2 + rangenext(0,init::$4) - (bool~) init::$8 ← (byte) init::sx#1 != rangelast(0,init::$4) - if((bool~) init::$8) goto init::@1 + (bool~) init::$7 ← (byte) init::sx#1 != rangelast(0,init::$4) + if((bool~) init::$7) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 (byte*) PLEX_SCREEN_PTR#27 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#30 ) @@ -363,8 +367,8 @@ init::@3: scope:[init] from init::@2 init::@3 (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#0 init::@3/(byte) init::ss#1 ) *((byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (byte) GREEN#0 (byte) init::ss#1 ← (byte) init::ss#2 + rangenext(0,7) - (bool~) init::$9 ← (byte) init::ss#1 != rangelast(0,7) - if((bool~) init::$9) goto init::@3 + (bool~) init::$8 ← (byte) init::ss#1 != rangelast(0,7) + if((bool~) init::$8) goto init::@3 to:init::@4 init::@4: scope:[init] from init::@3 (byte*) PLEX_SCREEN_PTR#20 ← phi( init::@3/(byte*) PLEX_SCREEN_PTR#24 ) @@ -717,6 +721,7 @@ SYMBOL TABLE SSA (byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SPRITE (byte*) SPRITE#0 (byte*) SPRITES_COLS @@ -777,9 +782,9 @@ SYMBOL TABLE SSA (byte/signed word/word/dword/signed dword~) init::$4 (byte*~) init::$5 (byte~) init::$6 -(byte/signed word/word/dword/signed dword~) init::$7 +(bool~) init::$7 (bool~) init::$8 -(bool~) init::$9 +(byte) init::$9 (label) init::@1 (label) init::@2 (label) init::@3 @@ -855,15 +860,16 @@ SYMBOL TABLE SSA (byte*) plexInit::screen#1 (void()) plexShowSprite() (byte/signed word/word/dword/signed dword~) plexShowSprite::$0 -(byte/word/dword~) plexShowSprite::$10 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$2 +(byte) plexShowSprite::$10 +(byte) plexShowSprite::$11 +(byte~) plexShowSprite::$2 (byte~) plexShowSprite::$3 -(byte~) plexShowSprite::$4 -(bool~) plexShowSprite::$5 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 -(byte/word/dword~) plexShowSprite::$7 +(bool~) plexShowSprite::$4 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 +(byte/word/dword~) plexShowSprite::$6 +(bool~) plexShowSprite::$7 (bool~) plexShowSprite::$8 -(bool~) plexShowSprite::$9 +(byte/word/dword~) plexShowSprite::$9 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -1187,10 +1193,10 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_sprite_msb#9 Inversing boolean not [53] (bool~) plexSort::$4 ← (byte) plexSort::nxt_y#0 >= *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) from [52] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 < *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) -Inversing boolean not [123] (bool~) plexShowSprite::$9 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [122] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [124] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [123] (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 (byte) plex_free_next#47 (byte) plex_free_next#41 (byte) plex_free_next#42 -Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#30 +Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$6 (byte) plex_sprite_idx#30 Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#22 Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 @@ -1214,7 +1220,6 @@ Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#28 (byte) plex_show_idx#14 Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#9 Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#26 (byte) plex_sprite_idx#14 (byte) plex_sprite_idx#27 (byte) plex_sprite_idx#28 Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#35 (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#26 (byte) plex_sprite_msb#15 -Alias (byte) plexShowSprite::xpos_idx#0 = (byte/signed word/word/dword/signed dword~) plexShowSprite::$2 Alias (byte) plex_free_next#24 = (byte) plex_free_next#32 (byte) plex_free_next#25 Alias (byte) plex_show_idx#3 = (byte) plex_show_idx#31 (byte) plex_show_idx#32 Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#3 @@ -1284,7 +1289,7 @@ Alias (byte) plex_free_next#11 = (byte) plex_free_next#22 Alias (bool) framedone#13 = (bool) framedone#7 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 (byte) plex_free_next#47 (byte) plex_free_next#41 (byte) plex_free_next#42 -Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#30 +Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$6 (byte) plex_sprite_idx#30 Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#15 Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#16 @@ -1296,7 +1301,7 @@ Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#22 Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#21 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 (byte) plex_free_next#47 (byte) plex_free_next#41 (byte) plex_free_next#42 -Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#30 +Alias candidate removed (volatile)(byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$6 (byte) plex_sprite_idx#30 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#15 Self Phi Eliminated (byte) plexSort::nxt_y#1 Self Phi Eliminated (byte) plexSort::nxt_idx#1 @@ -1401,18 +1406,18 @@ Simple Condition (bool~) plexInit::$2 [42] if((byte) plexInit::i#1!=rangelast(0, Simple Condition (bool~) plexSort::$4 [54] if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 Simple Condition (bool~) plexSort::$9 [58] if((byte) plexSort::m#1!=rangelast(0,plexSort::$1)) goto plexSort::@1 Simple Condition (bool) plexSort::plexFreePrepare1_$0#0 [81] if((byte) plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1 -Simple Condition (bool~) plexShowSprite::$5 [110] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -Simple Condition (bool~) plexShowSprite::$9 [124] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 -Simple Condition (bool~) init::$8 [183] if((byte) init::sx#1!=rangelast(0,init::$4)) goto init::@1 -Simple Condition (bool~) init::$9 [191] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3 -Simple Condition (bool~) plex_irq::$0 [230] if((byte) plex_show_idx#16<(byte) PLEX_COUNT#0) goto plex_irq::@1 -Simple Condition (bool~) loop::$2 [263] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 +Simple Condition (bool~) plexShowSprite::$4 [111] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 +Simple Condition (bool~) plexShowSprite::$8 [125] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 +Simple Condition (bool~) init::$7 [184] if((byte) init::sx#1!=rangelast(0,init::$4)) goto init::@1 +Simple Condition (bool~) init::$8 [192] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3 +Simple Condition (bool~) plex_irq::$0 [231] if((byte) plex_show_idx#16<(byte) PLEX_COUNT#0) goto plex_irq::@1 +Simple Condition (bool~) loop::$2 [264] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s [67] (bool~) plexSort::$8 ← (bool~) plexSort::$6 && (bool~) plexSort::$7 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting && if()-condition to two if()s [225] (bool~) plex_irq::$6 ← (bool~) plex_irq::$3 && (bool~) plex_irq::$5 +Rewriting && if()-condition to two if()s [226] (bool~) plex_irq::$6 ← (bool~) plex_irq::$3 && (bool~) plex_irq::$5 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting ! if()-condition to reversed if() [250] (bool~) loop::$0 ← ! (bool) framedone#12 +Rewriting ! if()-condition to reversed if() [251] (bool~) loop::$0 ← ! (bool) framedone#12 Successful SSA optimization Pass2ConditionalAndOrRewriting Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001 @@ -1471,7 +1476,7 @@ Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in assignment *(PLEX_SORTED_IDX#0+1 + plexSort::$2) Consolidated array index constant in assignment *(PLEX_SORTED_IDX#0+1 + plexSort::$5) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [104] if(true) goto loop::@2 +if() condition always true - replacing block destination [106] if(true) goto loop::@2 Successful SSA optimization Pass2ConstantIfs Inferred type updated to byte in [9] (byte/signed word/word/dword/signed dword~) plexSort::$2 ← (byte) plexSort::m#2 Inferred type updated to byte in [16] (byte/signed word/word/dword/signed dword~) plexSort::$5 ← (byte) plexSort::s#3 @@ -1493,8 +1498,9 @@ Resolved ranged comparison value if(init::ss#1!=rangelast(0,7)) goto init::@3 to Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++ Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 Rewriting multiplication to use shift (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#25 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) init::$7 ← (byte) init::sx#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 +Rewriting multiplication to use shift (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) init::$9 ← (byte) init::sx#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) plexInit::@3 Culled Empty Block (label) plexSort::@5 @@ -1508,20 +1514,20 @@ Culled Empty Block (label) loop::@5 Culled Empty Block (label) @17 Successful SSA optimization Pass2CullEmptyBlocks Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 -Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$7 +Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$6 Alias (byte) plexSort::m#2 = (byte~) plexSort::$2 Alias (byte) plexSort::s#3 = (byte~) plexSort::$5 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 -Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$7 +Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$6 Simple Condition (bool~) plexSort::$6 [21] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@8 -Simple Condition (bool~) plex_irq::$3 [95] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@9 -Simple Condition (bool~) plexSort::$7 [119] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -Simple Condition (bool~) plex_irq::$5 [120] if((byte) plex_irq::plexFreeNextYpos1_return#0<(byte/signed word/word/dword/signed dword~) plex_irq::$4) goto plex_irq::@3 +Simple Condition (bool~) plex_irq::$3 [97] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@9 +Simple Condition (bool~) plexSort::$7 [121] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 +Simple Condition (bool~) plex_irq::$5 [122] if((byte) plex_irq::plexFreeNextYpos1_return#0<(byte/signed word/word/dword/signed dword~) plex_irq::$4) goto plex_irq::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Inferred type updated to byte in [66] (byte/signed word/word/dword/signed dword~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 +Successful SSA optimization PassNEliminateUnusedVars Alias candidate removed (volatile)(byte) plex_free_next#2 = (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 -Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$7 +Alias candidate removed (volatile)(byte) plex_sprite_idx#3 = (byte/word/dword~) plexShowSprite::$6 Inlining constant with var siblings (const byte) plexInit::i#0 Inlining constant with var siblings (const byte) plexSort::m#0 Inlining constant with var siblings (const byte) plexSort::plexFreePrepare1_s#0 @@ -1598,9 +1604,9 @@ Coalesced [115] plex_show_idx#56 ← plex_show_idx#16 Coalesced [116] plex_free_next#52 ← plex_free_next#2 Coalesced [117] plex_sprite_msb#56 ← plex_sprite_msb#17 Coalesced [125] plex_free_next#2 ← plexShowSprite::plexFreeAdd1_$2#0 -Coalesced [136] plex_sprite_idx#3 ← plexShowSprite::$7 -Coalesced [141] plex_sprite_msb#58 ← plex_sprite_msb#4 -Coalesced [144] plex_sprite_msb#57 ← plex_sprite_msb#27 +Coalesced [138] plex_sprite_idx#3 ← plexShowSprite::$6 +Coalesced [143] plex_sprite_msb#58 ← plex_sprite_msb#4 +Coalesced [146] plex_sprite_msb#57 ← plex_sprite_msb#27 Coalesced down to 15 phi equivalence classes Culled Empty Block (label) loop::@16 Culled Empty Block (label) plexSort::@12 @@ -1774,8 +1780,8 @@ init::@1: scope:[init] from init init::@1 [60] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) $20 ) [60] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 - [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 + [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 [64] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [65] (byte) init::sx#1 ← ++ (byte) init::sx#2 [66] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 @@ -1822,7 +1828,7 @@ plex_irq::@3: scope:[plex_irq] from plex_irq plex_irq::@7 [87] (byte) plex_sprite_msb#29 ← phi( plex_irq/(byte) plex_sprite_msb#0 plex_irq::@7/(byte) plex_sprite_msb#17 ) [87] (byte) plex_free_next#27 ← phi( plex_irq/(byte) plex_free_next#31 plex_irq::@7/(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 ) [87] (byte) plex_show_idx#27 ← phi( plex_irq/(byte) plex_show_idx#0 plex_irq::@7/(byte) plex_show_idx#16 ) - [87] (byte) plex_sprite_idx#25 ← phi( plex_irq/(byte) plex_sprite_idx#0 plex_irq::@7/(byte/word/dword~) plexShowSprite::$7 ) + [87] (byte) plex_sprite_idx#25 ← phi( plex_irq/(byte) plex_sprite_idx#0 plex_irq::@7/(byte/word/dword~) plexShowSprite::$6 ) [88] call plexShowSprite to:plex_irq::plexFreeNextYpos1 plex_irq::plexFreeNextYpos1: scope:[plex_irq] from plex_irq::@3 @@ -1864,32 +1870,34 @@ plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite to:plexShowSprite::@5 plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1 [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) - [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 - [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 - [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) - [111] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 + [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) + [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) + [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 + [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) + [113] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 to:plexShowSprite::@3 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@5 - [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 - [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 + [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 + [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3 - [114] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [116] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 - [117] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return + [116] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [118] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 + [119] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return to:plexShowSprite::@4 plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@2 - [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:plexShowSprite::@return plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@4 - [120] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#27 plexShowSprite::@4/(byte) plex_sprite_msb#4 ) - [121] return + [122] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#27 plexShowSprite::@4/(byte) plex_sprite_msb#4 ) + [123] return to:@return plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5 - [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 + [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 to:plexShowSprite::@2 @@ -1930,7 +1938,7 @@ VARIABLE REGISTER WEIGHTS (bool) framedone#3 20.0 (bool) framedone#5 7.333333333333333 (void()) init() -(byte~) init::$7 22.0 +(byte) init::$9 22.0 (byte) init::ss (byte) init::ss#1 16.5 (byte) init::ss#2 16.5 @@ -1960,23 +1968,25 @@ VARIABLE REGISTER WEIGHTS (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 4.0 +(byte) plexShowSprite::$10 4.0 +(byte) plexShowSprite::$11 4.0 +(byte~) plexShowSprite::$2 4.0 (byte~) plexShowSprite::$3 4.0 -(byte~) plexShowSprite::$4 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 4.0 -(byte/word/dword~) plexShowSprite::$7 1.0833333333333333 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 4.0 +(byte/word/dword~) plexShowSprite::$6 1.0833333333333333 +(byte/word/dword~) plexShowSprite::$9 4.0 (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$0 (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 4.0 (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1 (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 4.0 (byte/word/dword~) plexShowSprite::plexFreeAdd1_$2 -(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 1.0434782608695652 +(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 0.96 (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 2.0 +(byte) plexShowSprite::xpos_idx#0 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (byte) plexSort::m @@ -2008,17 +2018,17 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_show_idx#0 4.0 (byte) plex_show_idx#1 20.0 (byte) plex_show_idx#16 2.1666666666666665 -(byte) plex_show_idx#27 1.1052631578947367 +(byte) plex_show_idx#27 1.0 (byte) plex_sprite_idx (byte) plex_sprite_idx#0 4.0 (byte) plex_sprite_idx#1 20.0 -(byte) plex_sprite_idx#25 1.1176470588235294 +(byte) plex_sprite_idx#25 1.0 (byte) plex_sprite_msb (byte) plex_sprite_msb#0 4.0 (byte) plex_sprite_msb#1 20.0 (byte) plex_sprite_msb#17 2.142857142857143 (byte) plex_sprite_msb#27 3.0 -(byte) plex_sprite_msb#29 0.95 +(byte) plex_sprite_msb#29 0.8636363636363638 (byte) plex_sprite_msb#4 4.0 Initial phi equivalence classes @@ -2033,19 +2043,19 @@ Initial phi equivalence classes [ init::xp#2 init::xp#1 ] [ init::ss#2 init::ss#1 ] [ plexInit::i#2 plexInit::i#1 ] -[ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 ] +[ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 ] [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 ] [ plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 ] Coalescing volatile variable equivalence classes [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 ] and [ plex_show_idx#1 ] -Coalescing volatile variable equivalence classes [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 ] and [ plex_sprite_idx#1 ] +Coalescing volatile variable equivalence classes [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 ] and [ plex_sprite_idx#1 ] Coalescing volatile variable equivalence classes [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 ] and [ plex_sprite_msb#1 ] Coalescing volatile variable equivalence classes [ plex_free_next#0 ] and [ plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] Coalescing volatile variable equivalence classes [ framedone#3 ] and [ framedone#12 framedone#19 framedone#5 ] Added variable plexSort::nxt_idx#0 to zero page equivalence class [ plexSort::nxt_idx#0 ] Added variable plexSort::nxt_y#0 to zero page equivalence class [ plexSort::nxt_y#0 ] Added variable plexSort::s#2 to zero page equivalence class [ plexSort::s#2 ] -Added variable init::$7 to zero page equivalence class [ init::$7 ] +Added variable init::$9 to zero page equivalence class [ init::$9 ] Added variable plex_irq::plexFreeNextYpos1_return#0 to zero page equivalence class [ plex_irq::plexFreeNextYpos1_return#0 ] Added variable plex_irq::$4 to zero page equivalence class [ plex_irq::$4 ] Added variable plexShowSprite::plex_sprite_idx2#0 to zero page equivalence class [ plexShowSprite::plex_sprite_idx2#0 ] @@ -2053,10 +2063,12 @@ Added variable plexShowSprite::plexFreeAdd1_ypos#0 to zero page equivalence clas Added variable plexShowSprite::plexFreeAdd1_$0#0 to zero page equivalence class [ plexShowSprite::plexFreeAdd1_$0#0 ] Added variable plexShowSprite::plexFreeAdd1_$1#0 to zero page equivalence class [ plexShowSprite::plexFreeAdd1_$1#0 ] Added variable plexShowSprite::xpos_idx#0 to zero page equivalence class [ plexShowSprite::xpos_idx#0 ] -Added variable plexShowSprite::$3 to zero page equivalence class [ plexShowSprite::$3 ] -Added variable plexShowSprite::$4 to zero page equivalence class [ plexShowSprite::$4 ] Added variable plexShowSprite::$10 to zero page equivalence class [ plexShowSprite::$10 ] -Added variable plexShowSprite::$6 to zero page equivalence class [ plexShowSprite::$6 ] +Added variable plexShowSprite::$2 to zero page equivalence class [ plexShowSprite::$2 ] +Added variable plexShowSprite::$11 to zero page equivalence class [ plexShowSprite::$11 ] +Added variable plexShowSprite::$3 to zero page equivalence class [ plexShowSprite::$3 ] +Added variable plexShowSprite::$9 to zero page equivalence class [ plexShowSprite::$9 ] +Added variable plexShowSprite::$5 to zero page equivalence class [ plexShowSprite::$5 ] Complete equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] @@ -2068,7 +2080,7 @@ Complete equivalence classes [ init::xp#2 init::xp#1 ] [ init::ss#2 init::ss#1 ] [ plexInit::i#2 plexInit::i#1 ] -[ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] +[ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] @@ -2076,7 +2088,7 @@ Complete equivalence classes [ plexSort::nxt_idx#0 ] [ plexSort::nxt_y#0 ] [ plexSort::s#2 ] -[ init::$7 ] +[ init::$9 ] [ plex_irq::plexFreeNextYpos1_return#0 ] [ plex_irq::$4 ] [ plexShowSprite::plex_sprite_idx2#0 ] @@ -2084,10 +2096,12 @@ Complete equivalence classes [ plexShowSprite::plexFreeAdd1_$0#0 ] [ plexShowSprite::plexFreeAdd1_$1#0 ] [ plexShowSprite::xpos_idx#0 ] -[ plexShowSprite::$3 ] -[ plexShowSprite::$4 ] [ plexShowSprite::$10 ] -[ plexShowSprite::$6 ] +[ plexShowSprite::$2 ] +[ plexShowSprite::$11 ] +[ plexShowSprite::$3 ] +[ plexShowSprite::$9 ] +[ plexShowSprite::$5 ] Allocated zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Allocated zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] Allocated zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] @@ -2098,7 +2112,7 @@ Allocated zp ZP_BYTE:8 [ init::sx#2 init::sx#1 ] Allocated zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] Allocated zp ZP_BYTE:11 [ init::ss#2 init::ss#1 ] Allocated zp ZP_BYTE:12 [ plexInit::i#2 plexInit::i#1 ] -Allocated zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] +Allocated zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] Allocated zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] Allocated zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] Allocated zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] @@ -2106,7 +2120,7 @@ Allocated zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framedone#5 ] Allocated zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] Allocated zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] Allocated zp ZP_BYTE:20 [ plexSort::s#2 ] -Allocated zp ZP_BYTE:21 [ init::$7 ] +Allocated zp ZP_BYTE:21 [ init::$9 ] Allocated zp ZP_BYTE:22 [ plex_irq::plexFreeNextYpos1_return#0 ] Allocated zp ZP_BYTE:23 [ plex_irq::$4 ] Allocated zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] @@ -2114,10 +2128,12 @@ Allocated zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] Allocated zp ZP_BYTE:26 [ plexShowSprite::plexFreeAdd1_$0#0 ] Allocated zp ZP_BYTE:27 [ plexShowSprite::plexFreeAdd1_$1#0 ] Allocated zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] -Allocated zp ZP_BYTE:29 [ plexShowSprite::$3 ] -Allocated zp ZP_BYTE:30 [ plexShowSprite::$4 ] -Allocated zp ZP_BYTE:31 [ plexShowSprite::$10 ] -Allocated zp ZP_BYTE:32 [ plexShowSprite::$6 ] +Allocated zp ZP_BYTE:29 [ plexShowSprite::$10 ] +Allocated zp ZP_BYTE:30 [ plexShowSprite::$2 ] +Allocated zp ZP_BYTE:31 [ plexShowSprite::$11 ] +Allocated zp ZP_BYTE:32 [ plexShowSprite::$3 ] +Allocated zp ZP_BYTE:33 [ plexShowSprite::$9 ] +Allocated zp ZP_BYTE:34 [ plexShowSprite::$5 ] INITIAL ASM //SEG0 File Comments @@ -2475,7 +2491,7 @@ plexSort: { //SEG106 init // Initialize the program init: { - .label _7 = $15 + .label _9 = $15 .label xp = 9 .label sx = 8 .label ss = $b @@ -2508,12 +2524,12 @@ init: { lda #$ff&SPRITE/$40 ldy sx sta PLEX_PTR,y - //SEG118 [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG118 [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda sx asl - sta _7 - //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _7 + sta _9 + //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _9 lda xp sta PLEX_XPOS,y lda xp+1 @@ -2710,11 +2726,13 @@ plex_irq: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label _3 = $1d - .label _4 = $1e - .label _6 = $20 - .label _7 = $d - .label _10 = $1f + .label _2 = $1e + .label _3 = $20 + .label _5 = $22 + .label _6 = $d + .label _9 = $21 + .label _10 = $1d + .label _11 = $1f .label plex_sprite_idx2 = $18 .label plexFreeAdd1_ypos = $19 .label plexFreeAdd1__0 = $1a @@ -2762,75 +2780,82 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) -- vbuz1=pbuc1_derefidx_vbuz2 ldy plex_show_idx lda PLEX_SORTED_IDX,y - asl sta xpos_idx - //SEG195 [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 - ldy xpos_idx + //SEG195 [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda xpos_idx + asl + sta _10 + //SEG196 [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 + ldy _10 lda PLEX_XPOS,y - sta _3 - //SEG196 [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _3 + sta _2 + //SEG197 [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _2 ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG197 [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 - ldy xpos_idx + //SEG198 [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda xpos_idx + asl + sta _11 + //SEG199 [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 + ldy _11 lda PLEX_XPOS+1,y - sta _4 - //SEG198 [111] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 - lda _4 + sta _3 + //SEG200 [113] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 + lda _3 cmp #0 bne b1 jmp b3 - //SEG199 plexShowSprite::@3 + //SEG201 plexShowSprite::@3 b3: - //SEG200 [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG202 [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor plex_sprite_msb - sta _10 - //SEG201 [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _9 + //SEG203 [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB - and _10 + and _9 sta SPRITES_XMSB jmp b2 - //SEG202 plexShowSprite::@2 + //SEG204 plexShowSprite::@2 b2: - //SEG203 [114] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG205 [116] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy plex_sprite_idx iny - sty _6 - //SEG204 [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + sty _5 + //SEG206 [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 - and _6 - sta _7 - //SEG205 [116] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 + and _5 + sta _6 + //SEG207 [118] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG206 [117] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG208 [119] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG207 [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 + //SEG209 [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne breturn_from_b2 jmp b4 - //SEG208 plexShowSprite::@4 + //SEG210 plexShowSprite::@4 b4: - //SEG209 [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 + //SEG211 [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG210 [120] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] + //SEG212 [122] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] breturn_from_b2: breturn_from_b4: - //SEG211 [120] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy + //SEG213 [122] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG212 plexShowSprite::@return + //SEG214 plexShowSprite::@return breturn: - //SEG213 [121] return + //SEG215 [123] return rts - //SEG214 plexShowSprite::@1 + //SEG216 plexShowSprite::@1 b1: - //SEG215 [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG217 [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB @@ -2893,8 +2918,8 @@ Statement [57] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPO Statement [58] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ init::sx#2 init::sx#1 ] -Statement [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$7 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$7 ] ) always clobbers reg byte a -Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$9 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$9 ] ) always clobbers reg byte a +Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a Statement [64] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#1 ] ) always clobbers reg byte a Statement [67] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [69] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:9::init:12 [ framedone#19 init::ss#2 ] ) always clobbers reg byte a @@ -2904,8 +2929,8 @@ Statement [74] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( Statement [75] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [76] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [86] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ( [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ) always clobbers reg byte a -Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a +Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y +Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ plex_irq::plexFreeNextYpos1_return#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ plex_irq::$4 ] Statement [92] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a @@ -2920,18 +2945,20 @@ Statement [103] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#27) Statement [105] (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] Statement [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] -Statement [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] -Statement [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ) always clobbers reg byte a -Statement [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a -Statement [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ) always clobbers reg byte a +Statement [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a +Statement [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a +Statement [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a Statement [1] (byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [2] (byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( ) always clobbers reg byte a @@ -2956,8 +2983,8 @@ Statement [55] (byte) plex_free_next#0 ← (byte/signed byte/word/signed word/dw Statement [57] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:9::loop:14::plexSort:28 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a Statement [58] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$7 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$7 ] ) always clobbers reg byte a -Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$9 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$9 ] ) always clobbers reg byte a +Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a Statement [64] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#1 ] ) always clobbers reg byte a Statement [67] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [69] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:9::init:12 [ framedone#19 init::ss#2 ] ) always clobbers reg byte a @@ -2966,8 +2993,8 @@ Statement [74] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( Statement [75] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [76] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [86] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ( [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ) always clobbers reg byte a -Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a +Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y +Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a Statement [92] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a Statement [93] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a Statement [94] (bool) framedone#3 ← true [ ] ( [ ] ) always clobbers reg byte a @@ -2979,16 +3006,18 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ p Statement [103] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#27) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 [ plex_sprite_idx#25 plex_show_idx#27 plex_free_next#27 plex_sprite_msb#29 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_free_next#27 plex_sprite_msb#29 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte y Statement [105] (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y -Statement [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ) always clobbers reg byte a -Statement [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a -Statement [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ) always clobbers reg byte a +Statement [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ) always clobbers reg byte a +Statement [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a +Statement [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a +Statement [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a Statement [1] (byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [2] (byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( ) always clobbers reg byte a @@ -3013,8 +3042,8 @@ Statement [55] (byte) plex_free_next#0 ← (byte/signed byte/word/signed word/dw Statement [57] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:9::loop:14::plexSort:28 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a Statement [58] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$7 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$7 ] ) always clobbers reg byte a -Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$9 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 init::$9 ] ) always clobbers reg byte a +Statement [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#2 ] ) always clobbers reg byte a Statement [64] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:9::init:12 [ framedone#19 init::sx#2 init::xp#1 ] ) always clobbers reg byte a Statement [67] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [69] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:9::init:12 [ framedone#19 init::ss#2 ] ) always clobbers reg byte a @@ -3023,8 +3052,8 @@ Statement [74] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( Statement [75] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [76] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:9::init:12 [ framedone#19 ] ) always clobbers reg byte a Statement [86] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ( [ plex_show_idx#0 plex_sprite_idx#0 plex_sprite_msb#0 plex_free_next#31 ] ) always clobbers reg byte a -Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a +Statement [89] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0) [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y +Statement [91] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@7 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#17 plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a Statement [92] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx#16 plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a Statement [93] if((byte) plex_show_idx#16<(const byte) PLEX_COUNT#0) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a Statement [94] (bool) framedone#3 ← true [ ] ( [ ] ) always clobbers reg byte a @@ -3035,16 +3064,18 @@ Statement [101] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_spr Statement [103] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#27) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 [ plex_sprite_idx#25 plex_show_idx#27 plex_free_next#27 plex_sprite_msb#29 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_free_next#27 plex_sprite_msb#29 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte y Statement [105] (byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y -Statement [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$4 ] ) always clobbers reg byte a -Statement [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$10 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$7 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a -Statement [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a -Statement [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$7 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$10 ] ) always clobbers reg byte a +Statement [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y +Statement [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$11 ] ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$3 ] ) always clobbers reg byte a +Statement [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 plexShowSprite::$9 ] ) always clobbers reg byte a +Statement [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::$6 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a +Statement [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#27 ] ) always clobbers reg byte a +Statement [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ( plexShowSprite:88 [ plexShowSprite::$6 plex_show_idx#16 plexShowSprite::plexFreeAdd1_$2#0 plex_sprite_msb#4 ] ) always clobbers reg byte a +Statement [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ( plexShowSprite:88 [ plex_sprite_idx#25 plex_show_idx#27 plex_sprite_msb#29 plexShowSprite::plexFreeAdd1_$2#0 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -3055,7 +3086,7 @@ Potential registers zp ZP_BYTE:8 [ init::sx#2 init::sx#1 ] : zp ZP_BYTE:8 , reg Potential registers zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] : zp ZP_WORD:9 , Potential registers zp ZP_BYTE:11 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] : zp ZP_BYTE:13 , +Potential registers zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] : zp ZP_BYTE:13 , Potential registers zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] : zp ZP_BYTE:14 , Potential registers zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] : zp ZP_BYTE:15 , Potential registers zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] : zp ZP_BYTE:16 , @@ -3063,7 +3094,7 @@ Potential registers zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framed Potential registers zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] : zp ZP_BYTE:18 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:20 [ plexSort::s#2 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:21 [ init::$7 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ init::$9 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:22 [ plex_irq::plexFreeNextYpos1_return#0 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:23 [ plex_irq::$4 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:24 , @@ -3071,73 +3102,79 @@ Potential registers zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] : zp Z Potential registers zp ZP_BYTE:26 [ plexShowSprite::plexFreeAdd1_$0#0 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:27 [ plexShowSprite::plexFreeAdd1_$1#0 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] : zp ZP_BYTE:28 , reg byte x , -Potential registers zp ZP_BYTE:29 [ plexShowSprite::$3 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ plexShowSprite::$4 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ plexShowSprite::$10 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ plexShowSprite::$6 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ plexShowSprite::$10 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ plexShowSprite::$2 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ plexShowSprite::$11 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ plexShowSprite::$3 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ plexShowSprite::$9 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ plexShowSprite::$5 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:6 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp ZP_BYTE:7 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp ZP_BYTE:20 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] Uplift Scope [loop] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 6.81: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplift Scope [] 85: zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framedone#5 ] 34.09: zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] 27.88: zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] 27.27: zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] 26.2: zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] -Uplift Scope [init] 33: zp ZP_BYTE:11 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:8 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:21 [ init::$7 ] 15.58: zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] +Uplift Scope [] 85: zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framedone#5 ] 34.01: zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] 27.79: zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] 27.17: zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] 26.08: zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] +Uplift Scope [init] 33: zp ZP_BYTE:11 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:8 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:21 [ init::$9 ] 15.58: zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] Uplift Scope [plexInit] 38.5: zp ZP_BYTE:12 [ plexInit::i#2 plexInit::i#1 ] -Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:26 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:27 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:29 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:30 [ plexShowSprite::$4 ] 4: zp ZP_BYTE:31 [ plexShowSprite::$10 ] 4: zp ZP_BYTE:32 [ plexShowSprite::$6 ] 3: zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] 0.6: zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:26 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:27 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:29 [ plexShowSprite::$10 ] 4: zp ZP_BYTE:30 [ plexShowSprite::$2 ] 4: zp ZP_BYTE:31 [ plexShowSprite::$11 ] 4: zp ZP_BYTE:32 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:33 [ plexShowSprite::$9 ] 4: zp ZP_BYTE:34 [ plexShowSprite::$5 ] 3: zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 1.5: zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] 0.55: zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] Uplift Scope [plex_irq] 11: zp ZP_BYTE:23 [ plex_irq::$4 ] 4: zp ZP_BYTE:22 [ plex_irq::plexFreeNextYpos1_return#0 ] Uplift Scope [main] -Uplifting [plexSort] best 60876 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:20 [ plexSort::s#2 ] zp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 60890 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:20 [ plexSort::s#2 ] zp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] Limited combination testing to 10 combinations of 972 possible. -Uplifting [loop] best 58946 combination reg byte y [ loop::sy#2 loop::sy#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [loop] best 58960 combination reg byte y [ loop::sy#2 loop::sy#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Limited combination testing to 10 combinations of 27 possible. -Uplifting [] best 58946 combination zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framedone#5 ] zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] -Uplifting [init] best 58696 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:21 [ init::$7 ] zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] +Uplifting [] best 58960 combination zp ZP_BOOL:17 [ framedone#3 framedone#12 framedone#19 framedone#5 ] zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] +Uplifting [init] best 58710 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:21 [ init::$9 ] zp ZP_WORD:9 [ init::xp#2 init::xp#1 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [plexInit] best 58576 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [plexShowSprite] best 58566 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:29 [ plexShowSprite::$3 ] zp ZP_BYTE:30 [ plexShowSprite::$4 ] zp ZP_BYTE:31 [ plexShowSprite::$10 ] zp ZP_BYTE:32 [ plexShowSprite::$6 ] zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Limited combination testing to 10 combinations of 24576 possible. -Uplifting [plex_irq] best 58503 combination zp ZP_BYTE:23 [ plex_irq::$4 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ] -Uplifting [main] best 58503 combination +Uplifting [plexInit] best 58590 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [plexShowSprite] best 58580 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:29 [ plexShowSprite::$10 ] zp ZP_BYTE:30 [ plexShowSprite::$2 ] zp ZP_BYTE:31 [ plexShowSprite::$11 ] zp ZP_BYTE:32 [ plexShowSprite::$3 ] zp ZP_BYTE:33 [ plexShowSprite::$9 ] zp ZP_BYTE:34 [ plexShowSprite::$5 ] zp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] +Limited combination testing to 10 combinations of 393216 possible. +Uplifting [plex_irq] best 58517 combination zp ZP_BYTE:23 [ plex_irq::$4 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ] +Uplifting [main] best 58517 combination Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexSort::s#2 ] -Uplifting [plexSort] best 57903 combination reg byte x [ plexSort::s#2 ] +Uplifting [plexSort] best 57917 combination reg byte x [ plexSort::s#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] -Uplifting [plexSort] best 57903 combination zp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] +Uplifting [plexSort] best 57917 combination zp ZP_BYTE:5 [ plexSort::m#2 plexSort::m#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ plexSort::nxt_y#0 ] -Uplifting [plexSort] best 57903 combination zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] +Uplifting [plexSort] best 57917 combination zp ZP_BYTE:19 [ plexSort::nxt_y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] -Uplifting [] best 57903 combination zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] +Uplifting [] best 57917 combination zp ZP_BYTE:15 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 57903 combination zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 57917 combination zp ZP_BYTE:18 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] -Uplifting [] best 57903 combination zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] +Uplifting [] best 57917 combination zp ZP_BYTE:16 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] -Uplifting [] best 57903 combination zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] -Uplifting [] best 57903 combination zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ init::$7 ] -Uplifting [init] best 57863 combination reg byte a [ init::$7 ] +Uplifting [] best 57917 combination zp ZP_BYTE:14 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] +Uplifting [] best 57917 combination zp ZP_BYTE:13 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ init::$9 ] +Uplifting [init] best 57877 combination reg byte a [ init::$9 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ plex_irq::$4 ] -Uplifting [plex_irq] best 57863 combination zp ZP_BYTE:23 [ plex_irq::$4 ] +Uplifting [plex_irq] best 57877 combination zp ZP_BYTE:23 [ plex_irq::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplifting [loop] best 57863 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexShowSprite::$3 ] +Uplifting [loop] best 57877 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexShowSprite::$10 ] +Uplifting [plexShowSprite] best 57873 combination reg byte a [ plexShowSprite::$10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexShowSprite::$2 ] +Uplifting [plexShowSprite] best 57867 combination reg byte a [ plexShowSprite::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexShowSprite::$11 ] +Uplifting [plexShowSprite] best 57863 combination reg byte a [ plexShowSprite::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ plexShowSprite::$3 ] Uplifting [plexShowSprite] best 57857 combination reg byte a [ plexShowSprite::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexShowSprite::$4 ] -Uplifting [plexShowSprite] best 57851 combination reg byte a [ plexShowSprite::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexShowSprite::$10 ] -Uplifting [plexShowSprite] best 57845 combination reg byte a [ plexShowSprite::$10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ plexShowSprite::$6 ] -Uplifting [plexShowSprite] best 57839 combination reg byte x [ plexShowSprite::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ plexShowSprite::$9 ] +Uplifting [plexShowSprite] best 57851 combination reg byte a [ plexShowSprite::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ plexShowSprite::$5 ] +Uplifting [plexShowSprite] best 57845 combination reg byte x [ plexShowSprite::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Uplifting [plexShowSprite] best 57830 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Uplifting [plexShowSprite] best 57836 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plexShowSprite::xpos_idx#0 ] -Uplifting [plexShowSprite] best 57823 combination reg byte x [ plexShowSprite::xpos_idx#0 ] +Uplifting [plexShowSprite] best 57831 combination reg byte x [ plexShowSprite::xpos_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 57823 combination zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 57831 combination zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] Coalescing zero page register [ zp ZP_BYTE:23 [ plex_irq::$4 ] ] with [ zp ZP_BYTE:24 [ plexShowSprite::plex_sprite_idx2#0 ] ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ plexSort::m#2 plexSort::m#1 ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:4 [ init::xp#2 init::xp#1 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] +Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:7 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:8 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:9 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] @@ -3509,10 +3546,10 @@ init: { //SEG117 [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG118 [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG118 [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y @@ -3698,7 +3735,7 @@ plex_irq: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label _7 = 6 + .label _6 = 6 .label plex_sprite_idx2 = $d .label plexFreeAdd1__2 = 9 //SEG184 [99] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 @@ -3736,65 +3773,71 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + //SEG195 [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa asl - tax - //SEG195 [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx - lda PLEX_XPOS,x - //SEG196 [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG196 [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuaa=_lo_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS,y + //SEG197 [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG197 [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx - lda PLEX_XPOS+1,x - //SEG198 [111] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG198 [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG199 [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuaa=_hi_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS+1,y + //SEG200 [113] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 jmp b3 - //SEG199 plexShowSprite::@3 + //SEG201 plexShowSprite::@3 b3: - //SEG200 [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG202 [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor plex_sprite_msb - //SEG201 [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG203 [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b2 - //SEG202 plexShowSprite::@2 + //SEG204 plexShowSprite::@2 b2: - //SEG203 [114] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG205 [116] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx plex_sprite_idx inx - //SEG204 [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG206 [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 - sax _7 - //SEG205 [116] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 + sax _6 + //SEG207 [118] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG206 [117] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG208 [119] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG207 [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 + //SEG209 [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne breturn_from_b2 jmp b4 - //SEG208 plexShowSprite::@4 + //SEG210 plexShowSprite::@4 b4: - //SEG209 [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 + //SEG211 [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG210 [120] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] + //SEG212 [122] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] breturn_from_b2: breturn_from_b4: - //SEG211 [120] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy + //SEG213 [122] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG212 plexShowSprite::@return + //SEG214 plexShowSprite::@return breturn: - //SEG213 [121] return + //SEG215 [123] return rts - //SEG214 plexShowSprite::@1 + //SEG216 plexShowSprite::@1 b1: - //SEG215 [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG217 [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB @@ -4032,7 +4075,7 @@ FINAL SYMBOL TABLE (bool) framedone#3 framedone zp ZP_BOOL:10 20.0 (bool) framedone#5 framedone zp ZP_BOOL:10 7.333333333333333 (void()) init() -(byte~) init::$7 reg byte a 22.0 +(byte) init::$9 reg byte a 22.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -4078,11 +4121,13 @@ FINAL SYMBOL TABLE (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$11 reg byte a 4.0 +(byte~) plexShowSprite::$2 reg byte a 4.0 (byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$4 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 reg byte x 4.0 -(byte/word/dword~) plexShowSprite::$7 $7 zp ZP_BYTE:6 1.0833333333333333 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 reg byte x 4.0 +(byte/word/dword~) plexShowSprite::$6 $6 zp ZP_BYTE:6 1.0833333333333333 +(byte/word/dword~) plexShowSprite::$9 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -4095,13 +4140,13 @@ FINAL SYMBOL TABLE (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1 (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte x 4.0 (byte/word/dword~) plexShowSprite::plexFreeAdd1_$2 -(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 plexFreeAdd1_$2 zp ZP_BYTE:9 1.0434782608695652 +(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 plexFreeAdd1_$2 zp ZP_BYTE:9 0.96 (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:13 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:13 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -4153,17 +4198,17 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_show_idx#0 plex_show_idx zp ZP_BYTE:7 4.0 (byte) plex_show_idx#1 plex_show_idx zp ZP_BYTE:7 20.0 (byte) plex_show_idx#16 plex_show_idx zp ZP_BYTE:7 2.1666666666666665 -(byte) plex_show_idx#27 plex_show_idx zp ZP_BYTE:7 1.1052631578947367 +(byte) plex_show_idx#27 plex_show_idx zp ZP_BYTE:7 1.0 (byte) plex_sprite_idx (byte) plex_sprite_idx#0 plex_sprite_idx zp ZP_BYTE:6 4.0 (byte) plex_sprite_idx#1 plex_sprite_idx zp ZP_BYTE:6 20.0 -(byte) plex_sprite_idx#25 plex_sprite_idx zp ZP_BYTE:6 1.1176470588235294 +(byte) plex_sprite_idx#25 plex_sprite_idx zp ZP_BYTE:6 1.0 (byte) plex_sprite_msb (byte) plex_sprite_msb#0 plex_sprite_msb zp ZP_BYTE:8 4.0 (byte) plex_sprite_msb#1 plex_sprite_msb zp ZP_BYTE:8 20.0 (byte) plex_sprite_msb#17 plex_sprite_msb zp ZP_BYTE:8 2.142857142857143 (byte) plex_sprite_msb#27 plex_sprite_msb zp ZP_BYTE:8 3.0 -(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:8 0.95 +(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:8 0.8636363636363638 (byte) plex_sprite_msb#4 plex_sprite_msb zp ZP_BYTE:8 4.0 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] @@ -4176,7 +4221,7 @@ reg byte x [ init::sx#2 init::sx#1 ] zp ZP_WORD:4 [ init::xp#2 init::xp#1 ] reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ plexInit::i#2 plexInit::i#1 ] -zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] +zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] zp ZP_BYTE:7 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] zp ZP_BYTE:8 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] zp ZP_BYTE:9 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] @@ -4184,21 +4229,23 @@ zp ZP_BOOL:10 [ framedone#3 framedone#12 framedone#19 framedone#5 ] zp ZP_BYTE:11 [ plexSort::nxt_idx#0 ] zp ZP_BYTE:12 [ plexSort::nxt_y#0 ] reg byte x [ plexSort::s#2 ] -reg byte a [ init::$7 ] +reg byte a [ init::$9 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ] zp ZP_BYTE:13 [ plex_irq::$4 plexShowSprite::plex_sprite_idx2#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] reg byte x [ plexShowSprite::xpos_idx#0 ] -reg byte a [ plexShowSprite::$3 ] -reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$10 ] -reg byte x [ plexShowSprite::$6 ] +reg byte a [ plexShowSprite::$2 ] +reg byte a [ plexShowSprite::$11 ] +reg byte a [ plexShowSprite::$3 ] +reg byte a [ plexShowSprite::$9 ] +reg byte x [ plexShowSprite::$5 ] FINAL ASSEMBLER -Score: 47278 +Score: 47286 //SEG0 File Comments // A simple usage of the flexible sprite multiplexer routine @@ -4495,10 +4542,10 @@ init: { //SEG117 [61] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG118 [62] (byte~) init::$7 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG118 [62] (byte) init::$9 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$7) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG119 [63] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) init::$9) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y @@ -4651,7 +4698,7 @@ plex_irq: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label _7 = 6 + .label _6 = 6 .label plex_sprite_idx2 = $d .label plexFreeAdd1__2 = 9 //SEG184 [99] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 @@ -4685,57 +4732,63 @@ plexShowSprite: { lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 - ldx plex_show_idx - lda PLEX_SORTED_IDX,x + //SEG194 [107] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27) -- vbuxx=pbuc1_derefidx_vbuz1 + ldy plex_show_idx + ldx PLEX_SORTED_IDX,y + //SEG195 [108] (byte) plexShowSprite::$10 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa asl - tax - //SEG195 [108] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx - lda PLEX_XPOS,x - //SEG196 [109] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG196 [109] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$10) -- vbuaa=_lo_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS,y + //SEG197 [110] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG197 [110] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx - lda PLEX_XPOS+1,x - //SEG198 [111] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG198 [111] (byte) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG199 [112] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::$11) -- vbuaa=_hi_pwuc1_derefidx_vbuaa + tay + lda PLEX_XPOS+1,y + //SEG200 [113] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG199 plexShowSprite::@3 - //SEG200 [112] (byte/word/dword~) plexShowSprite::$10 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG201 plexShowSprite::@3 + //SEG202 [114] (byte/word/dword~) plexShowSprite::$9 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#29 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor plex_sprite_msb - //SEG201 [113] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$10 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG203 [115] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG202 plexShowSprite::@2 + //SEG204 plexShowSprite::@2 b2: - //SEG203 [114] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG205 [116] (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 ← (byte) plex_sprite_idx#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx plex_sprite_idx inx - //SEG204 [115] (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG206 [117] (byte/word/dword~) plexShowSprite::$6 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 - sax _7 - //SEG205 [116] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 + sax _6 + //SEG207 [118] (byte) plex_show_idx#16 ← ++ (byte) plex_show_idx#27 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG206 [117] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG208 [119] (byte) plex_sprite_msb#27 ← (byte) plex_sprite_msb#29 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG207 [118] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 + //SEG209 [120] if((byte) plex_sprite_msb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne breturn - //SEG208 plexShowSprite::@4 - //SEG209 [119] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 + //SEG210 plexShowSprite::@4 + //SEG211 [121] (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG210 [120] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] - //SEG211 [120] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy - //SEG212 plexShowSprite::@return + //SEG212 [122] phi from plexShowSprite::@2 plexShowSprite::@4 to plexShowSprite::@return [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return] + //SEG213 [122] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#27 [phi:plexShowSprite::@2/plexShowSprite::@4->plexShowSprite::@return#0] -- register_copy + //SEG214 plexShowSprite::@return breturn: - //SEG213 [121] return + //SEG215 [123] return rts - //SEG214 plexShowSprite::@1 + //SEG216 plexShowSprite::@1 b1: - //SEG215 [122] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG217 [124] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#29 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym index 600833e58..a37c6fa8d 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym @@ -70,7 +70,7 @@ (bool) framedone#3 framedone zp ZP_BOOL:10 20.0 (bool) framedone#5 framedone zp ZP_BOOL:10 7.333333333333333 (void()) init() -(byte~) init::$7 reg byte a 22.0 +(byte) init::$9 reg byte a 22.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -116,11 +116,13 @@ (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte/word/dword~) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$10 reg byte a 4.0 +(byte) plexShowSprite::$11 reg byte a 4.0 +(byte~) plexShowSprite::$2 reg byte a 4.0 (byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$4 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 reg byte x 4.0 -(byte/word/dword~) plexShowSprite::$7 $7 zp ZP_BYTE:6 1.0833333333333333 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$5 reg byte x 4.0 +(byte/word/dword~) plexShowSprite::$6 $6 zp ZP_BYTE:6 1.0833333333333333 +(byte/word/dword~) plexShowSprite::$9 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -133,13 +135,13 @@ (byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1 (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte x 4.0 (byte/word/dword~) plexShowSprite::plexFreeAdd1_$2 -(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 plexFreeAdd1_$2 zp ZP_BYTE:9 1.0434782608695652 +(byte/word/dword) plexShowSprite::plexFreeAdd1_$2#0 plexFreeAdd1_$2 zp ZP_BYTE:9 0.96 (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:13 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:13 0.5454545454545454 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 1.5 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -191,17 +193,17 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_show_idx#0 plex_show_idx zp ZP_BYTE:7 4.0 (byte) plex_show_idx#1 plex_show_idx zp ZP_BYTE:7 20.0 (byte) plex_show_idx#16 plex_show_idx zp ZP_BYTE:7 2.1666666666666665 -(byte) plex_show_idx#27 plex_show_idx zp ZP_BYTE:7 1.1052631578947367 +(byte) plex_show_idx#27 plex_show_idx zp ZP_BYTE:7 1.0 (byte) plex_sprite_idx (byte) plex_sprite_idx#0 plex_sprite_idx zp ZP_BYTE:6 4.0 (byte) plex_sprite_idx#1 plex_sprite_idx zp ZP_BYTE:6 20.0 -(byte) plex_sprite_idx#25 plex_sprite_idx zp ZP_BYTE:6 1.1176470588235294 +(byte) plex_sprite_idx#25 plex_sprite_idx zp ZP_BYTE:6 1.0 (byte) plex_sprite_msb (byte) plex_sprite_msb#0 plex_sprite_msb zp ZP_BYTE:8 4.0 (byte) plex_sprite_msb#1 plex_sprite_msb zp ZP_BYTE:8 20.0 (byte) plex_sprite_msb#17 plex_sprite_msb zp ZP_BYTE:8 2.142857142857143 (byte) plex_sprite_msb#27 plex_sprite_msb zp ZP_BYTE:8 3.0 -(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:8 0.95 +(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:8 0.8636363636363638 (byte) plex_sprite_msb#4 plex_sprite_msb zp ZP_BYTE:8 4.0 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] @@ -214,7 +216,7 @@ reg byte x [ init::sx#2 init::sx#1 ] zp ZP_WORD:4 [ init::xp#2 init::xp#1 ] reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ plexInit::i#2 plexInit::i#1 ] -zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$7 plex_sprite_idx#1 ] +zp ZP_BYTE:6 [ plex_sprite_idx#25 plex_sprite_idx#0 plexShowSprite::$6 plex_sprite_idx#1 ] zp ZP_BYTE:7 [ plex_show_idx#27 plex_show_idx#0 plex_show_idx#16 plex_show_idx#1 ] zp ZP_BYTE:8 [ plex_sprite_msb#29 plex_sprite_msb#0 plex_sprite_msb#17 plex_sprite_msb#27 plex_sprite_msb#4 plex_sprite_msb#1 ] zp ZP_BYTE:9 [ plex_free_next#0 plex_free_next#27 plex_free_next#31 plexShowSprite::plexFreeAdd1_$2#0 ] @@ -222,14 +224,16 @@ zp ZP_BOOL:10 [ framedone#3 framedone#12 framedone#19 framedone#5 ] zp ZP_BYTE:11 [ plexSort::nxt_idx#0 ] zp ZP_BYTE:12 [ plexSort::nxt_y#0 ] reg byte x [ plexSort::s#2 ] -reg byte a [ init::$7 ] +reg byte a [ init::$9 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ] zp ZP_BYTE:13 [ plex_irq::$4 plexShowSprite::plex_sprite_idx2#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] reg byte x [ plexShowSprite::xpos_idx#0 ] -reg byte a [ plexShowSprite::$3 ] -reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$10 ] -reg byte x [ plexShowSprite::$6 ] +reg byte a [ plexShowSprite::$2 ] +reg byte a [ plexShowSprite::$11 ] +reg byte a [ plexShowSprite::$3 ] +reg byte a [ plexShowSprite::$9 ] +reg byte x [ plexShowSprite::$5 ] diff --git a/src/test/ref/signed-indexed-subtract.asm b/src/test/ref/signed-indexed-subtract.asm index 83da425fc..e82d13764 100644 --- a/src/test/ref/signed-indexed-subtract.asm +++ b/src/test/ref/signed-indexed-subtract.asm @@ -8,13 +8,13 @@ main: { ldy #0 b1: tya - asl - tax - lda #$80 + ldx #$80 jsr sub - lda #$40 + tya + ldx #$40 jsr sub - lda #$40 + tya + ldx #$40 jsr sub iny cpy #9 @@ -154,16 +154,17 @@ print_cls: { bne b1 rts } -// sub(byte register(X) idx, byte register(A) s) +// sub(byte register(A) idx, byte register(X) s) sub: { - clc - sbc words,x - eor #$ff + asl + sec + stx $ff + tax + lda words,x + sbc $ff sta words,x - bcc !+ - lda words+1,x - sbc #1 - sta words+1,x + bcs !+ + dec words+1,x !: rts } diff --git a/src/test/ref/signed-indexed-subtract.cfg b/src/test/ref/signed-indexed-subtract.cfg index 6361e5e58..47acabf11 100644 --- a/src/test/ref/signed-indexed-subtract.cfg +++ b/src/test/ref/signed-indexed-subtract.cfg @@ -12,128 +12,128 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@6 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte) main::i#1 ) - [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [7] (byte) sub::idx#0 ← (byte) main::idx#0 - [8] call sub + [6] (byte) sub::idx#0 ← (byte) main::i#2 + [7] call sub to:main::@4 main::@4: scope:[main] from main::@1 - [9] (byte) sub::idx#1 ← (byte) main::idx#0 - [10] call sub + [8] (byte) sub::idx#1 ← (byte) main::i#2 + [9] call sub to:main::@5 main::@5: scope:[main] from main::@4 - [11] (byte) sub::idx#2 ← (byte) main::idx#0 - [12] call sub + [10] (byte) sub::idx#2 ← (byte) main::i#2 + [11] call sub to:main::@6 main::@6: scope:[main] from main::@5 - [13] (byte) main::i#1 ← ++ (byte) main::i#2 - [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 + [12] (byte) main::i#1 ← ++ (byte) main::i#2 + [13] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@6 - [15] phi() - [16] call print_cls + [14] phi() + [15] call print_cls to:main::@3 main::@3: scope:[main] from main::@2 main::@9 - [17] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) - [17] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#56 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) - [17] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) - [20] call print_sword + [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) + [16] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#56 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) + [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) + [19] call print_sword to:main::@7 main::@7: scope:[main] from main::@3 - [21] phi() - [22] call print_ln + [20] phi() + [21] call print_ln to:main::@8 main::@8: scope:[main] from main::@7 - [23] (byte) main::j#1 ← ++ (byte) main::j#2 - [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 + [22] (byte) main::j#1 ← ++ (byte) main::j#2 + [23] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 to:main::@return main::@return: scope:[main] from main::@8 - [25] return + [24] return to:@return main::@9: scope:[main] from main::@8 - [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 + [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 to:main::@3 print_ln: scope:[print_ln] from main::@7 - [27] phi() + [26] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [28] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [27] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [31] return + [30] return to:@return print_sword: scope:[print_sword] from main::@3 - [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 + [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword - [33] phi() - [34] call print_char + [32] phi() + [33] call print_char to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword::@2 - [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 to:print_sword::@1 print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [36] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [37] call print_word + [35] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) + [35] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) + [36] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@1 - [38] return + [37] return to:@return print_word: scope:[print_word] from print_sword::@1 - [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 - [40] call print_byte + [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 + [39] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 - [42] call print_byte + [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 + [41] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [43] return + [42] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [44] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) - [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [47] call print_char + [43] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) + [43] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [45] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [46] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f - [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [50] call print_char + [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f + [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [49] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [51] return + [50] return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [52] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 - [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 + [51] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) + [51] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) + [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 + [53] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [55] return + [54] return to:@return print_cls: scope:[print_cls] from main::@2 - [56] phi() + [55] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [57] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) - [58] *((byte*) print_cls::sc#2) ← (byte) ' ' - [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [56] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) + [57] *((byte*) print_cls::sc#2) ← (byte) ' ' + [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [61] return + [60] return to:@return sub: scope:[sub] from main::@1 main::@4 main::@5 - [62] (byte) sub::s#3 ← phi( main::@1/(byte/word/signed word/dword/signed dword) $80 main::@4/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@5/(byte/signed byte/word/signed word/dword/signed dword) $40 ) - [62] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) - [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 + [61] (byte) sub::s#3 ← phi( main::@1/(byte/word/signed word/dword/signed dword) $80 main::@4/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@5/(byte/signed byte/word/signed word/dword/signed dword) $40 ) + [61] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) + [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub [64] return diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log index 0214477bc..a042a8e15 100644 --- a/src/test/ref/signed-indexed-subtract.log +++ b/src/test/ref/signed-indexed-subtract.log @@ -1,3 +1,6 @@ +Fixing pointer array-indexing *((signed word[]) words + (byte) main::j) +Fixing pointer array-indexing *((signed word[]) words + (byte) sub::idx) +Fixing pointer array-indexing *((signed word[]) words + (byte) sub::idx) CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -175,9 +178,7 @@ main::@1: scope:[main] from main main::@7 (byte*) print_line_cursor#27 ← phi( main/(byte*) print_line_cursor#28 main::@7/(byte*) print_line_cursor#21 ) (byte*) print_screen#8 ← phi( main/(byte*) print_screen#9 main::@7/(byte*) print_screen#5 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) - (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::idx#0 ← (byte/signed word/word/dword/signed dword~) main::$1 - (byte) sub::idx#0 ← (byte) main::idx#0 + (byte) sub::idx#0 ← (byte) main::i#2 (byte) sub::s#0 ← (byte/word/signed word/dword/signed dword) $80 call sub to:main::@5 @@ -185,9 +186,8 @@ main::@5: scope:[main] from main::@1 (byte*) print_char_cursor#53 ← phi( main::@1/(byte*) print_char_cursor#54 ) (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#27 ) (byte*) print_screen#7 ← phi( main::@1/(byte*) print_screen#8 ) - (byte) main::i#5 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::idx#1 ← phi( main::@1/(byte) main::idx#0 ) - (byte) sub::idx#1 ← (byte) main::idx#1 + (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) + (byte) sub::idx#1 ← (byte) main::i#3 (byte) sub::s#1 ← (byte/signed byte/word/signed word/dword/signed dword) $40 call sub to:main::@6 @@ -195,9 +195,8 @@ main::@6: scope:[main] from main::@5 (byte*) print_char_cursor#52 ← phi( main::@5/(byte*) print_char_cursor#53 ) (byte*) print_line_cursor#25 ← phi( main::@5/(byte*) print_line_cursor#26 ) (byte*) print_screen#6 ← phi( main::@5/(byte*) print_screen#7 ) - (byte) main::i#4 ← phi( main::@5/(byte) main::i#5 ) - (byte) main::idx#2 ← phi( main::@5/(byte) main::idx#1 ) - (byte) sub::idx#2 ← (byte) main::idx#2 + (byte) main::i#4 ← phi( main::@5/(byte) main::i#3 ) + (byte) sub::idx#2 ← (byte) main::i#4 (byte) sub::s#2 ← (byte/signed byte/word/signed word/dword/signed dword) $40 call sub to:main::@7 @@ -205,10 +204,10 @@ main::@7: scope:[main] from main::@6 (byte*) print_char_cursor#49 ← phi( main::@6/(byte*) print_char_cursor#52 ) (byte*) print_line_cursor#21 ← phi( main::@6/(byte*) print_line_cursor#25 ) (byte*) print_screen#5 ← phi( main::@6/(byte*) print_screen#6 ) - (byte) main::i#3 ← phi( main::@6/(byte) main::i#4 ) - (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,8) - (bool~) main::$5 ← (byte) main::i#1 != rangelast(0,8) - if((bool~) main::$5) goto main::@1 + (byte) main::i#5 ← phi( main::@6/(byte) main::i#4 ) + (byte) main::i#1 ← (byte) main::i#5 + rangenext(0,8) + (bool~) main::$4 ← (byte) main::i#1 != rangelast(0,8) + if((bool~) main::$4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@7 (byte*) print_char_cursor#45 ← phi( main::@7/(byte*) print_char_cursor#49 ) @@ -227,8 +226,8 @@ main::@3: scope:[main] from main::@10 main::@8 (byte*) print_line_cursor#22 ← phi( main::@10/(byte*) print_line_cursor#6 main::@8/(byte*) print_line_cursor#5 ) (byte*) print_char_cursor#46 ← phi( main::@10/(byte*) print_char_cursor#18 main::@8/(byte*) print_char_cursor#16 ) (byte) main::j#2 ← phi( main::@10/(byte) main::j#1 main::@8/(byte) main::j#0 ) - (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::j#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word) print_sword::w#1 ← *((signed word[]) words#0 + (byte/signed word/word/dword/signed dword~) main::$6) + (byte) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD + (signed word) print_sword::w#1 ← *((signed word[]) words#0 + (byte) main::$8) call print_sword to:main::@9 main::@9: scope:[main] from main::@3 @@ -245,8 +244,8 @@ main::@10: scope:[main] from main::@9 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#14 (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#37 (byte) main::j#1 ← (byte) main::j#3 + rangenext(0,8) - (bool~) main::$9 ← (byte) main::j#1 != rangelast(0,8) - if((bool~) main::$9) goto main::@3 + (bool~) main::$7 ← (byte) main::j#1 != rangelast(0,8) + if((bool~) main::$7) goto main::@3 to:main::@return main::@return: scope:[main] from main::@10 (byte*) print_char_cursor#38 ← phi( main::@10/(byte*) print_char_cursor#18 ) @@ -258,7 +257,8 @@ main::@return: scope:[main] from main::@10 sub: scope:[sub] from main::@1 main::@5 main::@6 (byte) sub::s#3 ← phi( main::@1/(byte) sub::s#0 main::@5/(byte) sub::s#1 main::@6/(byte) sub::s#2 ) (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@5/(byte) sub::idx#1 main::@6/(byte) sub::idx#2 ) - *((signed word[]) words#0 + (byte) sub::idx#3) ← *((signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 + (byte) sub::$0 ← (byte) sub::idx#3 * (const byte) SIZEOF_SIGNED_WORD + *((signed word[]) words#0 + (byte) sub::$0) ← *((signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub return @@ -289,11 +289,11 @@ SYMBOL TABLE SSA (label) @22 (label) @begin (label) @end +(const byte) SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (void()) main() -(byte/signed word/word/dword/signed dword~) main::$1 -(bool~) main::$5 -(byte/signed word/word/dword/signed dword~) main::$6 -(bool~) main::$9 +(bool~) main::$4 +(bool~) main::$7 +(byte) main::$8 (label) main::@1 (label) main::@10 (label) main::@2 @@ -311,10 +311,6 @@ SYMBOL TABLE SSA (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 -(byte) main::idx -(byte) main::idx#0 -(byte) main::idx#1 -(byte) main::idx#2 (byte) main::j (byte) main::j#0 (byte) main::j#1 @@ -486,6 +482,7 @@ SYMBOL TABLE SSA (word) print_word::w#1 (word) print_word::w#2 (void()) sub((byte) sub::idx , (byte) sub::s) +(byte) sub::$0 (label) sub::@return (byte) sub::idx (byte) sub::idx#0 @@ -520,8 +517,7 @@ Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#9 Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31 (byte*) print_char_cursor#11 Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#13 Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#34 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15 -Alias (byte) main::idx#0 = (byte/signed word/word/dword/signed dword~) main::$1 (byte) main::idx#1 (byte) main::idx#2 -Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#4 (byte) main::i#3 +Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 Alias (byte*) print_screen#4 = (byte*) print_screen#7 (byte*) print_screen#8 (byte*) print_screen#6 (byte*) print_screen#5 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#27 (byte*) print_line_cursor#25 (byte*) print_line_cursor#21 Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#54 (byte*) print_char_cursor#52 (byte*) print_char_cursor#49 @@ -573,8 +569,8 @@ Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 Simple Condition (bool~) print_sword::$1 [18] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 Simple Condition (bool~) print_cls::$1 [78] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$5 [111] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 -Simple Condition (bool~) main::$9 [130] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 +Simple Condition (bool~) main::$4 [109] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 +Simple Condition (bool~) main::$7 [128] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))$400 Constant (const byte) print_char::ch#0 = '-' @@ -599,8 +595,8 @@ Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,8)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 9 Resolved ranged next value main::j#1 ← ++ main::j#2 to ++ Resolved ranged comparison value if(main::j#1!=rangelast(0,8)) goto main::@3 to (byte/signed byte/word/signed word/dword/signed dword) 9 -Rewriting multiplication to use shift (byte) main::idx#0 ← (byte) main::i#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 -Rewriting multiplication to use shift (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::j#2 * (byte/signed byte/word/signed word/dword/signed dword) 2 +Rewriting multiplication to use shift (byte) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift (byte) sub::$0 ← (byte) sub::idx#3 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_sword::@3 @@ -612,7 +608,7 @@ Culled Empty Block (label) @19 Culled Empty Block (label) main::@8 Culled Empty Block (label) @22 Successful SSA optimization Pass2CullEmptyBlocks -Inferred type updated to byte in [44] (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 +Successful SSA optimization PassNEliminateUnusedVars Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::i#0 @@ -650,35 +646,35 @@ Adding NOP phi() at start of main::@9 Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to sub:9 sub:12 sub:15 print_cls:19 print_sword:23 print_ln:25 -Calls in [print_sword] to print_char:41 print_word:46 -Calls in [print_word] to print_byte:53 print_byte:57 -Calls in [print_byte] to print_char:64 print_char:69 +Calls in [main] to sub:8 sub:11 sub:14 print_cls:18 print_sword:22 print_ln:24 +Calls in [print_sword] to print_char:40 print_word:45 +Calls in [print_word] to print_byte:52 print_byte:56 +Calls in [print_byte] to print_char:63 print_char:68 Created 14 initial phi equivalence classes -Coalesced [8] sub::idx#4 ← sub::idx#0 -Coalesced [11] sub::idx#5 ← sub::idx#1 -Coalesced [14] sub::idx#6 ← sub::idx#2 -Coalesced [29] main::j#5 ← main::j#1 -Not coalescing [30] print_char_cursor#56 ← print_line_cursor#1 -Coalesced [31] print_line_cursor#29 ← print_line_cursor#1 -Coalesced [32] main::i#6 ← main::i#1 -Coalesced [33] print_line_cursor#30 ← print_line_cursor#19 -Coalesced (already) [38] print_line_cursor#31 ← print_line_cursor#1 -Coalesced [40] print_char_cursor#63 ← print_char_cursor#46 -Coalesced [43] print_sword::w#7 ← print_sword::w#0 -Coalesced [44] print_char_cursor#58 ← print_char_cursor#12 -Coalesced [48] print_sword::w#6 ← print_sword::w#1 -Coalesced [49] print_char_cursor#57 ← print_char_cursor#46 -Coalesced [51] print_byte::b#4 ← print_byte::b#0 -Coalesced [52] print_char_cursor#59 ← print_char_cursor#41 -Coalesced [55] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [56] print_char_cursor#60 ← print_char_cursor#12 -Coalesced [62] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [63] print_char_cursor#61 ← print_char_cursor#44 -Coalesced [67] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [68] print_char_cursor#62 ← print_char_cursor#12 -Coalesced [81] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [7] sub::idx#4 ← sub::idx#0 +Coalesced [10] sub::idx#5 ← sub::idx#1 +Coalesced [13] sub::idx#6 ← sub::idx#2 +Coalesced [28] main::j#5 ← main::j#1 +Not coalescing [29] print_char_cursor#56 ← print_line_cursor#1 +Coalesced [30] print_line_cursor#29 ← print_line_cursor#1 +Coalesced [31] main::i#6 ← main::i#1 +Coalesced [32] print_line_cursor#30 ← print_line_cursor#19 +Coalesced (already) [37] print_line_cursor#31 ← print_line_cursor#1 +Coalesced [39] print_char_cursor#63 ← print_char_cursor#46 +Coalesced [42] print_sword::w#7 ← print_sword::w#0 +Coalesced [43] print_char_cursor#58 ← print_char_cursor#12 +Coalesced [47] print_sword::w#6 ← print_sword::w#1 +Coalesced [48] print_char_cursor#57 ← print_char_cursor#46 +Coalesced [50] print_byte::b#4 ← print_byte::b#0 +Coalesced [51] print_char_cursor#59 ← print_char_cursor#41 +Coalesced [54] print_byte::b#5 ← print_byte::b#1 +Coalesced (already) [55] print_char_cursor#60 ← print_char_cursor#12 +Coalesced [61] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [62] print_char_cursor#61 ← print_char_cursor#44 +Coalesced [66] print_char::ch#5 ← print_char::ch#2 +Coalesced (already) [67] print_char_cursor#62 ← print_char_cursor#12 +Coalesced [80] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) main::@11 Culled Empty Block (label) print_ln::@3 @@ -717,128 +713,128 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@6 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte) main::i#1 ) - [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [7] (byte) sub::idx#0 ← (byte) main::idx#0 - [8] call sub + [6] (byte) sub::idx#0 ← (byte) main::i#2 + [7] call sub to:main::@4 main::@4: scope:[main] from main::@1 - [9] (byte) sub::idx#1 ← (byte) main::idx#0 - [10] call sub + [8] (byte) sub::idx#1 ← (byte) main::i#2 + [9] call sub to:main::@5 main::@5: scope:[main] from main::@4 - [11] (byte) sub::idx#2 ← (byte) main::idx#0 - [12] call sub + [10] (byte) sub::idx#2 ← (byte) main::i#2 + [11] call sub to:main::@6 main::@6: scope:[main] from main::@5 - [13] (byte) main::i#1 ← ++ (byte) main::i#2 - [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 + [12] (byte) main::i#1 ← ++ (byte) main::i#2 + [13] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@6 - [15] phi() - [16] call print_cls + [14] phi() + [15] call print_cls to:main::@3 main::@3: scope:[main] from main::@2 main::@9 - [17] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) - [17] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#56 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) - [17] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) - [20] call print_sword + [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) + [16] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#56 main::@2/((byte*))(word/signed word/dword/signed dword) $400 ) + [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) + [19] call print_sword to:main::@7 main::@7: scope:[main] from main::@3 - [21] phi() - [22] call print_ln + [20] phi() + [21] call print_ln to:main::@8 main::@8: scope:[main] from main::@7 - [23] (byte) main::j#1 ← ++ (byte) main::j#2 - [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 + [22] (byte) main::j#1 ← ++ (byte) main::j#2 + [23] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 to:main::@return main::@return: scope:[main] from main::@8 - [25] return + [24] return to:@return main::@9: scope:[main] from main::@8 - [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 + [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 to:main::@3 print_ln: scope:[print_ln] from main::@7 - [27] phi() + [26] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [28] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [27] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [31] return + [30] return to:@return print_sword: scope:[print_sword] from main::@3 - [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 + [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword - [33] phi() - [34] call print_char + [32] phi() + [33] call print_char to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword::@2 - [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 to:print_sword::@1 print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [36] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [37] call print_word + [35] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) + [35] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) + [36] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@1 - [38] return + [37] return to:@return print_word: scope:[print_word] from print_sword::@1 - [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 - [40] call print_byte + [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 + [39] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 - [42] call print_byte + [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 + [41] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [43] return + [42] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [44] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) - [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [47] call print_char + [43] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) + [43] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [45] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [46] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f - [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [50] call print_char + [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f + [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [49] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [51] return + [50] return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [52] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 - [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 + [51] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) + [51] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) + [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 + [53] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [55] return + [54] return to:@return print_cls: scope:[print_cls] from main::@2 - [56] phi() + [55] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [57] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) - [58] *((byte*) print_cls::sc#2) ← (byte) ' ' - [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [56] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) + [57] *((byte*) print_cls::sc#2) ← (byte) ' ' + [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [61] return + [60] return to:@return sub: scope:[sub] from main::@1 main::@4 main::@5 - [62] (byte) sub::s#3 ← phi( main::@1/(byte/word/signed word/dword/signed dword) $80 main::@4/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@5/(byte/signed byte/word/signed word/dword/signed dword) $40 ) - [62] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) - [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 + [61] (byte) sub::s#3 ← phi( main::@1/(byte/word/signed word/dword/signed dword) $80 main::@4/(byte/signed byte/word/signed word/dword/signed dword) $40 main::@5/(byte/signed byte/word/signed word/dword/signed dword) $40 ) + [61] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) + [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub [64] return @@ -847,12 +843,10 @@ sub::@return: scope:[sub] from sub VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$6 22.0 +(byte) main::$8 22.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 4.125 -(byte) main::idx -(byte) main::idx#0 8.8 +(byte) main::i#2 7.857142857142857 (byte) main::j (byte) main::j#1 11.0 (byte) main::j#2 5.5 @@ -894,13 +888,14 @@ VARIABLE REGISTER WEIGHTS (void()) print_word((word) print_word::w) (word) print_word::w (void()) sub((byte) sub::idx , (byte) sub::s) +(byte) sub::$0 6.0 (byte) sub::idx (byte) sub::idx#0 22.0 (byte) sub::idx#1 22.0 (byte) sub::idx#2 22.0 -(byte) sub::idx#3 37.0 +(byte) sub::idx#3 35.0 (byte) sub::s -(byte) sub::s#3 2.0 +(byte) sub::s#3 1.0 (signed word[]) words Initial phi equivalence classes @@ -914,10 +909,10 @@ Initial phi equivalence classes [ print_cls::sc#2 print_cls::sc#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] [ sub::s#3 ] -Added variable main::idx#0 to zero page equivalence class [ main::idx#0 ] -Added variable main::$6 to zero page equivalence class [ main::$6 ] +Added variable main::$8 to zero page equivalence class [ main::$8 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable sub::$0 to zero page equivalence class [ sub::$0 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ main::j#2 main::j#1 ] @@ -929,10 +924,10 @@ Complete equivalence classes [ print_cls::sc#2 print_cls::sc#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] [ sub::s#3 ] -[ main::idx#0 ] -[ main::$6 ] +[ main::$8 ] [ print_byte::$0 ] [ print_byte::$2 ] +[ sub::$0 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Allocated zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] @@ -943,10 +938,10 @@ Allocated zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_c Allocated zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] Allocated zp ZP_BYTE:15 [ sub::s#3 ] -Allocated zp ZP_BYTE:16 [ main::idx#0 ] -Allocated zp ZP_BYTE:17 [ main::$6 ] -Allocated zp ZP_BYTE:18 [ print_byte::$0 ] -Allocated zp ZP_BYTE:19 [ print_byte::$2 ] +Allocated zp ZP_BYTE:16 [ main::$8 ] +Allocated zp ZP_BYTE:17 [ print_byte::$0 ] +Allocated zp ZP_BYTE:18 [ print_byte::$2 ] +Allocated zp ZP_BYTE:19 [ sub::$0 ] INITIAL ASM //SEG0 File Comments @@ -976,8 +971,7 @@ bend_from_b1: bend: //SEG10 main main: { - .label _6 = $11 - .label idx = $10 + .label _8 = $10 .label i = 2 .label j = 3 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] @@ -992,145 +986,141 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG16 [6] (byte) sub::idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i - asl - sta idx - //SEG17 [7] (byte) sub::idx#0 ← (byte) main::idx#0 -- vbuz1=vbuz2 - lda idx sta sub.idx - //SEG18 [8] call sub - //SEG19 [62] phi from main::@1 to sub [phi:main::@1->sub] + //SEG17 [7] call sub + //SEG18 [61] phi from main::@1 to sub [phi:main::@1->sub] sub_from_b1: - //SEG20 [62] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuz1=vbuc1 + //SEG19 [61] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuz1=vbuc1 lda #$80 sta sub.s - //SEG21 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG20 [61] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub jmp b4 - //SEG22 main::@4 + //SEG21 main::@4 b4: - //SEG23 [9] (byte) sub::idx#1 ← (byte) main::idx#0 -- vbuz1=vbuz2 - lda idx + //SEG22 [8] (byte) sub::idx#1 ← (byte) main::i#2 -- vbuz1=vbuz2 + lda i sta sub.idx - //SEG24 [10] call sub - //SEG25 [62] phi from main::@4 to sub [phi:main::@4->sub] + //SEG23 [9] call sub + //SEG24 [61] phi from main::@4 to sub [phi:main::@4->sub] sub_from_b4: - //SEG26 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuz1=vbuc1 + //SEG25 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuz1=vbuc1 lda #$40 sta sub.s - //SEG27 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG26 [61] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub jmp b5 - //SEG28 main::@5 + //SEG27 main::@5 b5: - //SEG29 [11] (byte) sub::idx#2 ← (byte) main::idx#0 -- vbuz1=vbuz2 - lda idx + //SEG28 [10] (byte) sub::idx#2 ← (byte) main::i#2 -- vbuz1=vbuz2 + lda i sta sub.idx - //SEG30 [12] call sub - //SEG31 [62] phi from main::@5 to sub [phi:main::@5->sub] + //SEG29 [11] call sub + //SEG30 [61] phi from main::@5 to sub [phi:main::@5->sub] sub_from_b5: - //SEG32 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuz1=vbuc1 + //SEG31 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuz1=vbuc1 lda #$40 sta sub.s - //SEG33 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG32 [61] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub jmp b6 - //SEG34 main::@6 + //SEG33 main::@6 b6: - //SEG35 [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG34 [12] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG36 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp i bne b1_from_b6 - //SEG37 [15] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG36 [14] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: jmp b2 - //SEG38 main::@2 + //SEG37 main::@2 b2: - //SEG39 [16] call print_cls - //SEG40 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG38 [15] call print_cls + //SEG39 [55] phi from main::@2 to print_cls [phi:main::@2->print_cls] print_cls_from_b2: jsr print_cls - //SEG41 [17] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG42 [17] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 + //SEG41 [16] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG43 [17] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG44 [17] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuz1=vbuc1 + //SEG43 [16] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuz1=vbuc1 lda #0 sta j jmp b3 - //SEG45 main::@3 + //SEG44 main::@3 b3: - //SEG46 [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG45 [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl - sta _6 - //SEG47 [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy _6 + sta _8 + //SEG46 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _8 lda words,y sta print_sword.w lda words+1,y sta print_sword.w+1 - //SEG48 [20] call print_sword + //SEG47 [19] call print_sword jsr print_sword - //SEG49 [21] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG48 [20] phi from main::@3 to main::@7 [phi:main::@3->main::@7] b7_from_b3: jmp b7 - //SEG50 main::@7 + //SEG49 main::@7 b7: - //SEG51 [22] call print_ln - //SEG52 [27] phi from main::@7 to print_ln [phi:main::@7->print_ln] + //SEG50 [21] call print_ln + //SEG51 [26] phi from main::@7 to print_ln [phi:main::@7->print_ln] print_ln_from_b7: jsr print_ln jmp b8 - //SEG53 main::@8 + //SEG52 main::@8 b8: - //SEG54 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG53 [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG55 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG54 [23] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp j bne b9 jmp breturn - //SEG56 main::@return + //SEG55 main::@return breturn: - //SEG57 [25] return + //SEG56 [24] return rts - //SEG58 main::@9 + //SEG57 main::@9 b9: - //SEG59 [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG58 [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG60 [17] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: - //SEG61 [17] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG62 [17] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy - //SEG63 [17] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy + //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy + //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } -//SEG64 print_ln +//SEG63 print_ln // Print a newline print_ln: { - //SEG65 [28] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG64 [27] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG66 [28] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG65 [27] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG67 print_ln::@1 + //SEG66 print_ln::@1 b1: - //SEG68 [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG67 [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -1138,7 +1128,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG69 [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1148,36 +1138,36 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG70 print_ln::@return + //SEG69 print_ln::@return breturn: - //SEG71 [31] return + //SEG70 [30] return rts } -//SEG72 print_sword +//SEG71 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG73 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG74 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG75 print_sword::@2 + //SEG74 print_sword::@2 b2: - //SEG76 [34] call print_char - //SEG77 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG75 [33] call print_char + //SEG76 [51] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG78 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG79 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG77 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG78 [51] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b3 - //SEG80 print_sword::@3 + //SEG79 print_sword::@3 b3: - //SEG81 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -1187,147 +1177,147 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG82 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] b1_from_print_sword: b1_from_b3: - //SEG83 [36] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG84 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy jmp b1 - //SEG85 print_sword::@1 + //SEG84 print_sword::@1 b1: - //SEG86 [37] call print_word + //SEG85 [36] call print_word jsr print_word jmp breturn - //SEG87 print_sword::@return + //SEG86 print_sword::@return breturn: - //SEG88 [38] return + //SEG87 [37] return rts } -//SEG89 print_word +//SEG88 print_word // Print a word as HEX print_word: { - //SEG90 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG89 [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG90 [39] call print_byte + //SEG91 [43] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG92 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy + //SEG93 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG95 print_word::@1 + //SEG94 print_word::@1 b1: - //SEG96 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG95 [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG96 [41] call print_byte + //SEG97 [43] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG98 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG99 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG101 print_word::@return + //SEG100 print_word::@return breturn: - //SEG102 [43] return + //SEG101 [42] return rts } -//SEG103 print_byte +//SEG102 print_byte // Print a byte as HEX // print_byte(byte zeropage(8) b) print_byte: { - .label _0 = $12 - .label _2 = $13 + .label _0 = $11 + .label _2 = $12 .label b = 8 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG103 [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG104 [45] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG105 [46] call print_char + //SEG106 [51] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG107 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG110 print_byte::@1 + //SEG109 print_byte::@1 b1: - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG110 [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG111 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG112 [49] call print_char + //SEG113 [51] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG114 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG117 print_byte::@return + //SEG116 print_byte::@return breturn: - //SEG118 [51] return + //SEG117 [50] return rts } -//SEG119 print_char +//SEG118 print_char // Print a single char // print_char(byte zeropage(9) ch) print_char: { .label ch = 9 - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 + //SEG119 [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 + //SEG120 [53] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG122 print_char::@return + //SEG121 print_char::@return breturn: - //SEG123 [55] return + //SEG122 [54] return rts } -//SEG124 print_cls +//SEG123 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $c - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG124 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG126 [57] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG125 [56] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG126 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG127 [56] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG129 print_cls::@1 + //SEG128 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG129 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG130 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG131 [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1335,18 +1325,23 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG133 print_cls::@return + //SEG132 print_cls::@return breturn: - //SEG134 [61] return + //SEG133 [60] return rts } -//SEG135 sub +//SEG134 sub // sub(byte zeropage($e) idx, byte zeropage($f) s) sub: { + .label _0 = $13 .label idx = $e .label s = $f - //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 -- pwsc1_derefidx_vbuz1=pwsc1_derefidx_vbuz1_minus_vbuz2 - ldx idx + //SEG135 [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda idx + asl + sta _0 + //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuz1=pwsc1_derefidx_vbuz1_minus_vbuz2 + ldx _0 sec lda words,x sbc s @@ -1364,44 +1359,44 @@ sub: { words: .word -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::idx#0 ] ( main:2 [ main::i#2 main::idx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$6 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$6 ] ) always clobbers reg byte a +Statement [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] -Statement [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:22 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:22 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:20 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:20 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ( main:2::print_sword:20::print_word:37 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:20::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:20::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:20::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a +Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a +Statement [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a +Statement [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ) always clobbers reg byte a +Statement [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:39 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:41 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:20::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:20::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:20::print_char:34 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:40::print_char:47 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:42::print_char:47 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:40::print_char:50 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:42::print_char:50 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y +Statement [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:39 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:41 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:39::print_char:46 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:41::print_char:46 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:39::print_char:49 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:41::print_char:49 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:16 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:16 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 [ ] ( main:2::sub:8 [ main::i#2 main::idx#0 ] main:2::sub:10 [ main::i#2 main::idx#0 ] main:2::sub:12 [ main::i#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ main::idx#0 ] -Statement [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::idx#0 ] ( main:2 [ main::i#2 main::idx#0 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$6 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$6 ] ) always clobbers reg byte a -Statement [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:22 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:22 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:20 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:20 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ( main:2::print_sword:20::print_word:37 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:20::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:20::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:20::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:20::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:20::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:20::print_char:34 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:40::print_char:47 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:42::print_char:47 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:40::print_char:50 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#32 ] main:2::print_sword:20::print_word:37::print_byte:42::print_char:50 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y -Statement [58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:16 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:16 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 [ ] ( main:2::sub:8 [ main::i#2 main::idx#0 ] main:2::sub:10 [ main::i#2 main::idx#0 ] main:2::sub:12 [ main::i#2 ] ) always clobbers reg byte a +Statement [57] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ sub::s#3 ] +Statement [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a +Statement [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a +Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a +Statement [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#56 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a +Statement [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#41 print_byte::b#0 ] ) always clobbers reg byte a +Statement [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:39 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:41 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a +Statement [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:39 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:41 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:39::print_char:46 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:41::print_char:46 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:39::print_char:49 [ main::j#2 print_line_cursor#19 print_sword::w#3 print_char_cursor#32 ] main:2::print_sword:19::print_word:36::print_byte:41::print_char:49 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y +Statement [57] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a +Statement [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:4 , @@ -1411,34 +1406,34 @@ Potential registers zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char: Potential registers zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] : zp ZP_WORD:10 , Potential registers zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:15 [ sub::s#3 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ main::idx#0 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:17 [ main::$6 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:18 [ print_byte::$0 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:19 [ print_byte::$2 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ sub::s#3 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ main::$8 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ print_byte::$0 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:18 [ print_byte::$2 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:19 [ sub::$0 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [] 252.6: zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 40.19: zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] -Uplift Scope [sub] 103: zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 2: zp ZP_BYTE:15 [ sub::s#3 ] -Uplift Scope [main] 22: zp ZP_BYTE:17 [ main::$6 ] 20.62: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 16.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 8.8: zp ZP_BYTE:16 [ main::idx#0 ] +Uplift Scope [sub] 101: zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 6: zp ZP_BYTE:19 [ sub::$0 ] 1: zp ZP_BYTE:15 [ sub::s#3 ] +Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:16 [ main::$8 ] 16.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:18 [ print_byte::$0 ] 4: zp ZP_BYTE:19 [ print_byte::$2 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:17 [ print_byte::$0 ] 4: zp ZP_BYTE:18 [ print_byte::$2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] Uplift Scope [print_sword] 9.58: zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] Uplift Scope [print_ln] Uplift Scope [print_word] -Uplifting [] best 6617 combination zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] -Uplifting [sub] best 6518 combination reg byte x [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::s#3 ] -Uplifting [main] best 6178 combination reg byte a [ main::$6 ] reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::idx#0 ] -Uplifting [print_cls] best 6178 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 6170 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 6158 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 6158 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_ln] best 6158 combination -Uplifting [print_word] best 6158 combination +Uplifting [] best 6545 combination zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] +Uplifting [sub] best 6442 combination reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::$0 ] reg byte x [ sub::s#3 ] +Uplifting [main] best 6182 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] reg byte x [ main::j#2 main::j#1 ] +Uplifting [print_cls] best 6182 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 6174 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 6162 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Uplifting [print_sword] best 6162 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplifting [print_ln] best 6162 combination +Uplifting [print_word] best 6162 combination Attempting to uplift remaining variables inzp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6158 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 6162 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Coalescing zero page register [ zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] ] with [ zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] ] Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] @@ -1484,132 +1479,131 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG16 [6] (byte) sub::idx#0 ← (byte) main::i#2 -- vbuaa=vbuyy tya - asl - tax - //SEG17 [7] (byte) sub::idx#0 ← (byte) main::idx#0 - //SEG18 [8] call sub - //SEG19 [62] phi from main::@1 to sub [phi:main::@1->sub] + //SEG17 [7] call sub + //SEG18 [61] phi from main::@1 to sub [phi:main::@1->sub] sub_from_b1: - //SEG20 [62] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuaa=vbuc1 - lda #$80 - //SEG21 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG19 [61] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 + ldx #$80 + //SEG20 [61] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub jmp b4 - //SEG22 main::@4 + //SEG21 main::@4 b4: - //SEG23 [9] (byte) sub::idx#1 ← (byte) main::idx#0 - //SEG24 [10] call sub - //SEG25 [62] phi from main::@4 to sub [phi:main::@4->sub] + //SEG22 [8] (byte) sub::idx#1 ← (byte) main::i#2 -- vbuaa=vbuyy + tya + //SEG23 [9] call sub + //SEG24 [61] phi from main::@4 to sub [phi:main::@4->sub] sub_from_b4: - //SEG26 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuaa=vbuc1 - lda #$40 - //SEG27 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG25 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 + ldx #$40 + //SEG26 [61] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub jmp b5 - //SEG28 main::@5 + //SEG27 main::@5 b5: - //SEG29 [11] (byte) sub::idx#2 ← (byte) main::idx#0 - //SEG30 [12] call sub - //SEG31 [62] phi from main::@5 to sub [phi:main::@5->sub] + //SEG28 [10] (byte) sub::idx#2 ← (byte) main::i#2 -- vbuaa=vbuyy + tya + //SEG29 [11] call sub + //SEG30 [61] phi from main::@5 to sub [phi:main::@5->sub] sub_from_b5: - //SEG32 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuaa=vbuc1 - lda #$40 - //SEG33 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG31 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 + ldx #$40 + //SEG32 [61] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub jmp b6 - //SEG34 main::@6 + //SEG33 main::@6 b6: - //SEG35 [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + //SEG34 [12] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy iny - //SEG36 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #9 bne b1_from_b6 - //SEG37 [15] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG36 [14] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: jmp b2 - //SEG38 main::@2 + //SEG37 main::@2 b2: - //SEG39 [16] call print_cls - //SEG40 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG38 [15] call print_cls + //SEG39 [55] phi from main::@2 to print_cls [phi:main::@2->print_cls] print_cls_from_b2: jsr print_cls - //SEG41 [17] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG42 [17] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 + //SEG41 [16] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG43 [17] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG44 [17] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 + //SEG43 [16] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG45 main::@3 + //SEG44 main::@3 b3: - //SEG46 [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG45 [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG47 [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) -- vwsz1=pwsc1_derefidx_vbuaa + //SEG46 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) -- vwsz1=pwsc1_derefidx_vbuaa tay lda words,y sta print_sword.w lda words+1,y sta print_sword.w+1 - //SEG48 [20] call print_sword + //SEG47 [19] call print_sword jsr print_sword - //SEG49 [21] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG48 [20] phi from main::@3 to main::@7 [phi:main::@3->main::@7] b7_from_b3: jmp b7 - //SEG50 main::@7 + //SEG49 main::@7 b7: - //SEG51 [22] call print_ln - //SEG52 [27] phi from main::@7 to print_ln [phi:main::@7->print_ln] + //SEG50 [21] call print_ln + //SEG51 [26] phi from main::@7 to print_ln [phi:main::@7->print_ln] print_ln_from_b7: jsr print_ln jmp b8 - //SEG53 main::@8 + //SEG52 main::@8 b8: - //SEG54 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG53 [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG55 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG54 [23] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b9 jmp breturn - //SEG56 main::@return + //SEG55 main::@return breturn: - //SEG57 [25] return + //SEG56 [24] return rts - //SEG58 main::@9 + //SEG57 main::@9 b9: - //SEG59 [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG58 [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG60 [17] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: - //SEG61 [17] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG62 [17] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy - //SEG63 [17] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy + //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy + //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } -//SEG64 print_ln +//SEG63 print_ln // Print a newline print_ln: { - //SEG65 [28] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG64 [27] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG66 [28] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG65 [27] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG67 print_ln::@1 + //SEG66 print_ln::@1 b1: - //SEG68 [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG67 [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -1617,7 +1611,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG69 [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1627,35 +1621,35 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG70 print_ln::@return + //SEG69 print_ln::@return breturn: - //SEG71 [31] return + //SEG70 [30] return rts } -//SEG72 print_sword +//SEG71 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(4) w) print_sword: { .label w = 4 - //SEG73 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG74 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG75 print_sword::@2 + //SEG74 print_sword::@2 b2: - //SEG76 [34] call print_char - //SEG77 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG75 [33] call print_char + //SEG76 [51] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG78 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG79 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG77 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG78 [51] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b3 - //SEG80 print_sword::@3 + //SEG79 print_sword::@3 b3: - //SEG81 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -1665,139 +1659,139 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG82 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] b1_from_print_sword: b1_from_b3: - //SEG83 [36] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG84 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy jmp b1 - //SEG85 print_sword::@1 + //SEG84 print_sword::@1 b1: - //SEG86 [37] call print_word + //SEG85 [36] call print_word jsr print_word jmp breturn - //SEG87 print_sword::@return + //SEG86 print_sword::@return breturn: - //SEG88 [38] return + //SEG87 [37] return rts } -//SEG89 print_word +//SEG88 print_word // Print a word as HEX print_word: { - //SEG90 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG89 [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG90 [39] call print_byte + //SEG91 [43] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG92 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy + //SEG93 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG95 print_word::@1 + //SEG94 print_word::@1 b1: - //SEG96 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG95 [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG96 [41] call print_byte + //SEG97 [43] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG98 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG99 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG101 print_word::@return + //SEG100 print_word::@return breturn: - //SEG102 [43] return + //SEG101 [42] return rts } -//SEG103 print_byte +//SEG102 print_byte // Print a byte as HEX // print_byte(byte zeropage(6) b) print_byte: { .label b = 6 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG103 [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG104 [45] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG105 [46] call print_char + //SEG106 [51] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG107 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG110 print_byte::@1 + //SEG109 print_byte::@1 b1: - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG110 [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG111 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG112 [49] call print_char + //SEG113 [51] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG114 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG117 print_byte::@return + //SEG116 print_byte::@return breturn: - //SEG118 [51] return + //SEG117 [50] return rts } -//SEG119 print_char +//SEG118 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG119 [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 + //SEG120 [53] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG122 print_char::@return + //SEG121 print_char::@return breturn: - //SEG123 [55] return + //SEG122 [54] return rts } -//SEG124 print_cls +//SEG123 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG124 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG126 [57] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG125 [56] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG126 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG127 [56] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG129 print_cls::@1 + //SEG128 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG129 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG130 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG131 [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1805,23 +1799,25 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG133 print_cls::@return + //SEG132 print_cls::@return breturn: - //SEG134 [61] return + //SEG133 [60] return rts } -//SEG135 sub -// sub(byte register(X) idx, byte register(A) s) +//SEG134 sub +// sub(byte register(A) idx, byte register(X) s) sub: { - //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 -- pwsc1_derefidx_vbuxx=pwsc1_derefidx_vbuxx_minus_vbuaa - clc - sbc words,x - eor #$ff + //SEG135 [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx + sec + stx $ff + tax + lda words,x + sbc $ff sta words,x - bcc !+ - lda words+1,x - sbc #1 - sta words+1,x + bcs !+ + dec words+1,x !: jmp breturn //SEG137 sub::@return @@ -1870,8 +1866,6 @@ Removing instruction b1: Removing instruction main_from_b1: Removing instruction bend_from_b1: Removing instruction b1_from_b6: -Removing instruction sub_from_b4: -Removing instruction sub_from_b5: Removing instruction b2_from_b6: Removing instruction print_cls_from_b2: Removing instruction b7_from_b3: @@ -1888,7 +1882,9 @@ Removing instruction bend: Removing instruction b1_from_main: Removing instruction sub_from_b1: Removing instruction b4: +Removing instruction sub_from_b4: Removing instruction b5: +Removing instruction sub_from_b5: Removing instruction b6: Removing instruction b2: Removing instruction b3_from_b2: @@ -1927,7 +1923,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$6 reg byte a 22.0 +(byte) main::$8 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -1940,9 +1936,7 @@ FINAL SYMBOL TABLE (label) main::@return (byte) main::i (byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.125 -(byte) main::idx -(byte) main::idx#0 reg byte x 8.8 +(byte) main::i#2 reg byte y 7.857142857142857 (byte) main::j (byte) main::j#1 reg byte x 11.0 (byte) main::j#2 reg byte x 5.5 @@ -1998,14 +1992,15 @@ FINAL SYMBOL TABLE (label) print_word::@return (word) print_word::w (void()) sub((byte) sub::idx , (byte) sub::s) +(byte) sub::$0 reg byte a 6.0 (label) sub::@return (byte) sub::idx -(byte) sub::idx#0 reg byte x 22.0 -(byte) sub::idx#1 reg byte x 22.0 -(byte) sub::idx#2 reg byte x 22.0 -(byte) sub::idx#3 reg byte x 37.0 +(byte) sub::idx#0 reg byte a 22.0 +(byte) sub::idx#1 reg byte a 22.0 +(byte) sub::idx#2 reg byte a 22.0 +(byte) sub::idx#3 reg byte a 35.0 (byte) sub::s -(byte) sub::s#3 reg byte a 2.0 +(byte) sub::s#3 reg byte x 1.0 (signed word[]) words (const signed word[]) words#0 words = { -(word/signed word/dword/signed dword) $6000, -(word/signed word/dword/signed dword) $600, -(byte/signed byte/word/signed word/dword/signed dword) $60, -(byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) $60, (word/signed word/dword/signed dword) $600, (word/signed word/dword/signed dword) $6000 } @@ -2016,16 +2011,16 @@ zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] -reg byte x [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] -reg byte a [ sub::s#3 ] -reg byte x [ main::idx#0 ] -reg byte a [ main::$6 ] +reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] +reg byte x [ sub::s#3 ] +reg byte a [ main::$8 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ sub::$0 ] FINAL ASSEMBLER -Score: 5261 +Score: 5265 //SEG0 File Comments // Tests that signed indexed subtract works as intended @@ -2052,105 +2047,104 @@ main: { //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [6] (byte) main::idx#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG16 [6] (byte) sub::idx#0 ← (byte) main::i#2 -- vbuaa=vbuyy tya - asl - tax - //SEG17 [7] (byte) sub::idx#0 ← (byte) main::idx#0 - //SEG18 [8] call sub - //SEG19 [62] phi from main::@1 to sub [phi:main::@1->sub] - //SEG20 [62] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuaa=vbuc1 - lda #$80 - //SEG21 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG17 [7] call sub + //SEG18 [61] phi from main::@1 to sub [phi:main::@1->sub] + //SEG19 [61] phi (byte) sub::s#3 = (byte/word/signed word/dword/signed dword) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 + ldx #$80 + //SEG20 [61] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub - //SEG22 main::@4 - //SEG23 [9] (byte) sub::idx#1 ← (byte) main::idx#0 - //SEG24 [10] call sub - //SEG25 [62] phi from main::@4 to sub [phi:main::@4->sub] - //SEG26 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuaa=vbuc1 - lda #$40 - //SEG27 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG21 main::@4 + //SEG22 [8] (byte) sub::idx#1 ← (byte) main::i#2 -- vbuaa=vbuyy + tya + //SEG23 [9] call sub + //SEG24 [61] phi from main::@4 to sub [phi:main::@4->sub] + //SEG25 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 + ldx #$40 + //SEG26 [61] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub - //SEG28 main::@5 - //SEG29 [11] (byte) sub::idx#2 ← (byte) main::idx#0 - //SEG30 [12] call sub - //SEG31 [62] phi from main::@5 to sub [phi:main::@5->sub] - //SEG32 [62] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuaa=vbuc1 - lda #$40 - //SEG33 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG27 main::@5 + //SEG28 [10] (byte) sub::idx#2 ← (byte) main::i#2 -- vbuaa=vbuyy + tya + //SEG29 [11] call sub + //SEG30 [61] phi from main::@5 to sub [phi:main::@5->sub] + //SEG31 [61] phi (byte) sub::s#3 = (byte/signed byte/word/signed word/dword/signed dword) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 + ldx #$40 + //SEG32 [61] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub - //SEG34 main::@6 - //SEG35 [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + //SEG33 main::@6 + //SEG34 [12] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy iny - //SEG36 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #9 bne b1 - //SEG37 [15] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG38 main::@2 - //SEG39 [16] call print_cls - //SEG40 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG36 [14] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG37 main::@2 + //SEG38 [15] call print_cls + //SEG39 [55] phi from main::@2 to print_cls [phi:main::@2->print_cls] jsr print_cls - //SEG41 [17] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG42 [17] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 + //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG41 [16] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG43 [17] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#46 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG44 [17] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 + //SEG43 [16] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG45 main::@3 + //SEG44 main::@3 b3: - //SEG46 [18] (byte~) main::$6 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG45 [17] (byte) main::$8 ← (byte) main::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG47 [19] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$6) -- vwsz1=pwsc1_derefidx_vbuaa + //SEG46 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte) main::$8) -- vwsz1=pwsc1_derefidx_vbuaa tay lda words,y sta print_sword.w lda words+1,y sta print_sword.w+1 - //SEG48 [20] call print_sword + //SEG47 [19] call print_sword jsr print_sword - //SEG49 [21] phi from main::@3 to main::@7 [phi:main::@3->main::@7] - //SEG50 main::@7 - //SEG51 [22] call print_ln - //SEG52 [27] phi from main::@7 to print_ln [phi:main::@7->print_ln] + //SEG48 [20] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG49 main::@7 + //SEG50 [21] call print_ln + //SEG51 [26] phi from main::@7 to print_ln [phi:main::@7->print_ln] jsr print_ln - //SEG53 main::@8 - //SEG54 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG52 main::@8 + //SEG53 [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG55 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG54 [23] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b9 - //SEG56 main::@return - //SEG57 [25] return + //SEG55 main::@return + //SEG56 [24] return rts - //SEG58 main::@9 + //SEG57 main::@9 b9: - //SEG59 [26] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG58 [25] (byte*~) print_char_cursor#56 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG60 [17] phi from main::@9 to main::@3 [phi:main::@9->main::@3] - //SEG61 [17] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG62 [17] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy - //SEG63 [17] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy + //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#56 [phi:main::@9->main::@3#1] -- register_copy + //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } -//SEG64 print_ln +//SEG63 print_ln // Print a newline print_ln: { - //SEG65 [28] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG66 [28] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG67 print_ln::@1 + //SEG64 [27] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG65 [27] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG66 print_ln::@1 b1: - //SEG68 [29] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG67 [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -2158,7 +2152,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG69 [30] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2167,28 +2161,28 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG70 print_ln::@return - //SEG71 [31] return + //SEG69 print_ln::@return + //SEG70 [30] return rts } -//SEG72 print_sword +//SEG71 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(4) w) print_sword: { .label w = 4 - //SEG73 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG74 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG75 print_sword::@2 - //SEG76 [34] call print_char - //SEG77 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG78 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG79 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG74 print_sword::@2 + //SEG75 [33] call print_char + //SEG76 [51] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG77 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG78 [51] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG80 print_sword::@3 - //SEG81 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG79 print_sword::@3 + //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -2198,138 +2192,140 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG82 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG83 [36] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG84 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG85 print_sword::@1 + //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG84 print_sword::@1 b1: - //SEG86 [37] call print_word + //SEG85 [36] call print_word jsr print_word - //SEG87 print_sword::@return - //SEG88 [38] return + //SEG86 print_sword::@return + //SEG87 [37] return rts } -//SEG89 print_word +//SEG88 print_word // Print a word as HEX print_word: { - //SEG90 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG89 [38] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG90 [39] call print_byte + //SEG91 [43] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG92 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy + //SEG93 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG95 print_word::@1 - //SEG96 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG94 print_word::@1 + //SEG95 [40] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG96 [41] call print_byte + //SEG97 [43] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG98 [43] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG99 [43] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG101 print_word::@return - //SEG102 [43] return + //SEG100 print_word::@return + //SEG101 [42] return rts } -//SEG103 print_byte +//SEG102 print_byte // Print a byte as HEX // print_byte(byte zeropage(6) b) print_byte: { .label b = 6 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG103 [44] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG104 [45] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG105 [46] call print_char + //SEG106 [51] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG107 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG110 print_byte::@1 - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG109 print_byte::@1 + //SEG110 [47] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG111 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG112 [49] call print_char + //SEG113 [51] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG114 [51] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [51] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG117 print_byte::@return - //SEG118 [51] return + //SEG116 print_byte::@return + //SEG117 [50] return rts } -//SEG119 print_char +//SEG118 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG119 [52] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 + //SEG120 [53] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG122 print_char::@return - //SEG123 [55] return + //SEG121 print_char::@return + //SEG122 [54] return rts } -//SEG124 print_cls +//SEG123 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG126 [57] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG124 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG125 [56] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG129 print_cls::@1 + //SEG126 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG127 [56] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG128 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG129 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG130 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG131 [59] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG133 print_cls::@return - //SEG134 [61] return + //SEG132 print_cls::@return + //SEG133 [60] return rts } -//SEG135 sub -// sub(byte register(X) idx, byte register(A) s) +//SEG134 sub +// sub(byte register(A) idx, byte register(X) s) sub: { - //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::idx#3) ← *((const signed word[]) words#0 + (byte) sub::idx#3) - (byte) sub::s#3 -- pwsc1_derefidx_vbuxx=pwsc1_derefidx_vbuxx_minus_vbuaa - clc - sbc words,x - eor #$ff + //SEG135 [62] (byte) sub::$0 ← (byte) sub::idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG136 [63] *((const signed word[]) words#0 + (byte) sub::$0) ← *((const signed word[]) words#0 + (byte) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx + sec + stx $ff + tax + lda words,x + sbc $ff sta words,x - bcc !+ - lda words+1,x - sbc #1 - sta words+1,x + bcs !+ + dec words+1,x !: //SEG137 sub::@return //SEG138 [64] return diff --git a/src/test/ref/signed-indexed-subtract.sym b/src/test/ref/signed-indexed-subtract.sym index c42c2ee2b..9e1f0d882 100644 --- a/src/test/ref/signed-indexed-subtract.sym +++ b/src/test/ref/signed-indexed-subtract.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$6 reg byte a 22.0 +(byte) main::$8 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -15,9 +15,7 @@ (label) main::@return (byte) main::i (byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.125 -(byte) main::idx -(byte) main::idx#0 reg byte x 8.8 +(byte) main::i#2 reg byte y 7.857142857142857 (byte) main::j (byte) main::j#1 reg byte x 11.0 (byte) main::j#2 reg byte x 5.5 @@ -73,14 +71,15 @@ (label) print_word::@return (word) print_word::w (void()) sub((byte) sub::idx , (byte) sub::s) +(byte) sub::$0 reg byte a 6.0 (label) sub::@return (byte) sub::idx -(byte) sub::idx#0 reg byte x 22.0 -(byte) sub::idx#1 reg byte x 22.0 -(byte) sub::idx#2 reg byte x 22.0 -(byte) sub::idx#3 reg byte x 37.0 +(byte) sub::idx#0 reg byte a 22.0 +(byte) sub::idx#1 reg byte a 22.0 +(byte) sub::idx#2 reg byte a 22.0 +(byte) sub::idx#3 reg byte a 35.0 (byte) sub::s -(byte) sub::s#3 reg byte a 2.0 +(byte) sub::s#3 reg byte x 1.0 (signed word[]) words (const signed word[]) words#0 words = { -(word/signed word/dword/signed dword) $6000, -(word/signed word/dword/signed dword) $600, -(byte/signed byte/word/signed word/dword/signed dword) $60, -(byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) $60, (word/signed word/dword/signed dword) $600, (word/signed word/dword/signed dword) $6000 } @@ -91,9 +90,9 @@ zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#56 print_char_cursor#12 ] -reg byte x [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] -reg byte a [ sub::s#3 ] -reg byte x [ main::idx#0 ] -reg byte a [ main::$6 ] +reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] +reg byte x [ sub::s#3 ] +reg byte a [ main::$8 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ sub::$0 ] diff --git a/src/test/ref/word-pointer-compound.asm b/src/test/ref/word-pointer-compound.asm new file mode 100644 index 000000000..0c5d2f2b0 --- /dev/null +++ b/src/test/ref/word-pointer-compound.asm @@ -0,0 +1,37 @@ +// Test word pointer compound assignment +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const SIZEOF_WORD = 2 +main: { + .label SCREEN = $400 + ldx #0 + b1: + txa + asl + tay + clc + lda words,y + adc #<$101 + sta words,y + lda words+1,y + adc #>$101 + sta words+1,y + inx + cpx #3 + bne b1 + lda words+1 + sta SCREEN + lda words + sta SCREEN+1 + lda words+1*SIZEOF_WORD+1 + sta SCREEN+2 + lda words+1*SIZEOF_WORD + sta SCREEN+3 + lda words+2*SIZEOF_WORD+1 + sta SCREEN+4 + lda words+2*SIZEOF_WORD + sta SCREEN+5 + rts + words: .word $3031, $3233, $3435 +} diff --git a/src/test/ref/word-pointer-compound.cfg b/src/test/ref/word-pointer-compound.cfg new file mode 100644 index 000000000..8600b9223 --- /dev/null +++ b/src/test/ref/word-pointer-compound.cfg @@ -0,0 +1,36 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) + [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 + [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@1 + [10] (byte~) main::$0 ← > *((const word[]) main::words#0) + [11] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 + [12] (byte~) main::$1 ← < *((const word[]) main::words#0) + [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 + [14] (byte~) main::$2 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) + [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 + [16] (byte~) main::$3 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) + [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 + [18] (byte~) main::$4 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) + [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 + [20] (byte~) main::$5 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) + [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 + to:main::@return +main::@return: scope:[main] from main::@2 + [22] return + to:@return diff --git a/src/test/ref/word-pointer-compound.log b/src/test/ref/word-pointer-compound.log new file mode 100644 index 000000000..1023db393 --- /dev/null +++ b/src/test/ref/word-pointer-compound.log @@ -0,0 +1,604 @@ +Fixing pointer array-indexing *((word[]) main::words + (byte) main::i) +Fixing pointer array-indexing *((word[]) main::words + (byte) main::i) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 0) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 0) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 1) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 1) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 2) +Fixing pointer array-indexing *((word[]) main::words + (byte/signed byte/word/signed word/dword/signed dword) 2) + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (word[]) main::words#0 ← { (word/signed word/dword/signed dword) $3031, (word/signed word/dword/signed dword) $3233, (word/signed word/dword/signed dword) $3435 } + (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + (byte) main::$7 ← (byte) main::i#2 * (const byte) SIZEOF_WORD + *((word[]) main::words#0 + (byte) main::$7) ← *((word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 + (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2) + (bool~) main::$6 ← (byte) main::i#1 != rangelast(0,2) + if((bool~) main::$6) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400 + (byte/signed byte/word/signed word/dword/signed dword) main::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 0 * (const byte) SIZEOF_WORD + (byte~) main::$0 ← > *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$8) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 + (byte/signed byte/word/signed word/dword/signed dword) main::$9 ← (byte/signed byte/word/signed word/dword/signed dword) 0 * (const byte) SIZEOF_WORD + (byte~) main::$1 ← < *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$9) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 + (byte/signed byte/word/signed word/dword/signed dword) main::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 * (const byte) SIZEOF_WORD + (byte~) main::$2 ← > *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$10) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) main::$11 ← (byte/signed byte/word/signed word/dword/signed dword) 1 * (const byte) SIZEOF_WORD + (byte~) main::$3 ← < *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$11) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 + (byte/signed byte/word/signed word/dword/signed dword) main::$12 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (const byte) SIZEOF_WORD + (byte~) main::$4 ← > *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$12) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 + (byte/signed byte/word/signed word/dword/signed dword) main::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (const byte) SIZEOF_WORD + (byte~) main::$5 ← < *((word[]) main::words#0 + (byte/signed byte/word/signed word/dword/signed dword) main::$13) + *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +@1: scope:[] from @begin + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(void()) main() +(byte~) main::$0 +(byte~) main::$1 +(byte/signed byte/word/signed word/dword/signed dword) main::$10 +(byte/signed byte/word/signed word/dword/signed dword) main::$11 +(byte/signed byte/word/signed word/dword/signed dword) main::$12 +(byte/signed byte/word/signed word/dword/signed dword) main::$13 +(byte~) main::$2 +(byte~) main::$3 +(byte~) main::$4 +(byte~) main::$5 +(bool~) main::$6 +(byte) main::$7 +(byte/signed byte/word/signed word/dword/signed dword) main::$8 +(byte/signed byte/word/signed word/dword/signed dword) main::$9 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte*) main::SCREEN +(byte*) main::SCREEN#0 +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 +(word[]) main::words +(word[]) main::words#0 + +Culled Empty Block (label) @2 +Successful SSA optimization Pass2CullEmptyBlocks +Simple Condition (bool~) main::$6 [7] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const word[]) main::words#0 = { $3031, $3233, $3435 } +Constant (const byte) main::i#0 = 0 +Constant (const byte*) main::SCREEN#0 = ((byte*))$400 +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$8 = 0*SIZEOF_WORD +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$9 = 0*SIZEOF_WORD +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$10 = 1*SIZEOF_WORD +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$11 = 1*SIZEOF_WORD +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$12 = 2*SIZEOF_WORD +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$13 = 2*SIZEOF_WORD +Successful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(main::words#0+main::$8) +Consolidated array index constant in *(main::SCREEN#0+0) +Consolidated array index constant in *(main::words#0+main::$9) +Consolidated array index constant in *(main::SCREEN#0+1) +Consolidated array index constant in *(main::words#0+main::$10) +Consolidated array index constant in *(main::SCREEN#0+2) +Consolidated array index constant in *(main::words#0+main::$11) +Consolidated array index constant in *(main::SCREEN#0+3) +Consolidated array index constant in *(main::words#0+main::$12) +Consolidated array index constant in *(main::SCREEN#0+4) +Consolidated array index constant in *(main::words#0+main::$13) +Consolidated array index constant in *(main::SCREEN#0+5) +Successful SSA optimization Pass2ConstantAdditionElimination +Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value if(main::i#1!=rangelast(0,2)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 3 +Rewriting multiplication to use shift (byte) main::$7 ← (byte) main::i#2 * (const byte) SIZEOF_WORD +Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte) main::i#0 +Constant inlined main::$12 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD +Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::$13 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD +Constant inlined main::$9 = (byte/signed byte/word/signed word/dword/signed dword) 0*(const byte) SIZEOF_WORD +Constant inlined main::$10 = (byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD +Constant inlined main::$8 = (byte/signed byte/word/signed word/dword/signed dword) 0*(const byte) SIZEOF_WORD +Constant inlined main::$11 = (byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD +Successful SSA optimization Pass2ConstantInlining +Simplifying constant multiply by zero 0*SIZEOF_WORD +Simplifying constant plus zero main::SCREEN#0+0 +Simplifying constant multiply by zero 0*SIZEOF_WORD +Simplifying constant plus zero main::words#0+0 +Simplifying constant plus zero main::words#0+0 +Added new block during phi lifting main::@3(between main::@1 and main::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 + +Created 1 initial phi equivalence classes +Coalesced [23] main::i#3 ← main::i#1 +Coalesced down to 1 phi equivalence classes +Culled Empty Block (label) main::@3 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) + [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 + [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@1 + [10] (byte~) main::$0 ← > *((const word[]) main::words#0) + [11] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 + [12] (byte~) main::$1 ← < *((const word[]) main::words#0) + [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 + [14] (byte~) main::$2 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) + [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 + [16] (byte~) main::$3 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) + [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 + [18] (byte~) main::$4 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) + [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 + [20] (byte~) main::$5 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) + [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 + to:main::@return +main::@return: scope:[main] from main::@2 + [22] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte~) main::$0 4.0 +(byte~) main::$1 4.0 +(byte~) main::$2 4.0 +(byte~) main::$3 4.0 +(byte~) main::$4 4.0 +(byte~) main::$5 4.0 +(byte) main::$7 33.0 +(byte*) main::SCREEN +(byte) main::i +(byte) main::i#1 16.5 +(byte) main::i#2 11.0 +(word[]) main::words + +Initial phi equivalence classes +[ main::i#2 main::i#1 ] +Added variable main::$7 to zero page equivalence class [ main::$7 ] +Added variable main::$0 to zero page equivalence class [ main::$0 ] +Added variable main::$1 to zero page equivalence class [ main::$1 ] +Added variable main::$2 to zero page equivalence class [ main::$2 ] +Added variable main::$3 to zero page equivalence class [ main::$3 ] +Added variable main::$4 to zero page equivalence class [ main::$4 ] +Added variable main::$5 to zero page equivalence class [ main::$5 ] +Complete equivalence classes +[ main::i#2 main::i#1 ] +[ main::$7 ] +[ main::$0 ] +[ main::$1 ] +[ main::$2 ] +[ main::$3 ] +[ main::$4 ] +[ main::$5 ] +Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Allocated zp ZP_BYTE:3 [ main::$7 ] +Allocated zp ZP_BYTE:4 [ main::$0 ] +Allocated zp ZP_BYTE:5 [ main::$1 ] +Allocated zp ZP_BYTE:6 [ main::$2 ] +Allocated zp ZP_BYTE:7 [ main::$3 ] +Allocated zp ZP_BYTE:8 [ main::$4 ] +Allocated zp ZP_BYTE:9 [ main::$5 ] + +INITIAL ASM +//SEG0 File Comments +// Test word pointer compound assignment +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .const SIZEOF_WORD = 2 +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG9 @end +bend: +//SEG10 main +main: { + .label SCREEN = $400 + .label _0 = 4 + .label _1 = 5 + .label _2 = 6 + .label _3 = 7 + .label _4 = 8 + .label _5 = 9 + .label _7 = 3 + .label i = 2 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG15 main::@1 + b1: + //SEG16 [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda i + asl + sta _7 + //SEG17 [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vwuc2 + ldy _7 + clc + lda words,y + adc #<$101 + sta words,y + lda words+1,y + adc #>$101 + sta words+1,y + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #3 + cmp i + bne b1_from_b1 + jmp b2 + //SEG20 main::@2 + b2: + //SEG21 [10] (byte~) main::$0 ← > *((const word[]) main::words#0) -- vbuz1=_hi__deref_pwuc1 + lda words+1 + sta _0 + //SEG22 [11] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 + lda _0 + sta SCREEN + //SEG23 [12] (byte~) main::$1 ← < *((const word[]) main::words#0) -- vbuz1=_lo__deref_pwuc1 + lda words + sta _1 + //SEG24 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + lda _1 + sta SCREEN+1 + //SEG25 [14] (byte~) main::$2 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuz1=_hi__deref_pwuc1 + lda words+1*SIZEOF_WORD+1 + sta _2 + //SEG26 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuz1 + lda _2 + sta SCREEN+2 + //SEG27 [16] (byte~) main::$3 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuz1=_lo__deref_pwuc1 + lda words+1*SIZEOF_WORD + sta _3 + //SEG28 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 -- _deref_pbuc1=vbuz1 + lda _3 + sta SCREEN+3 + //SEG29 [18] (byte~) main::$4 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuz1=_hi__deref_pwuc1 + lda words+2*SIZEOF_WORD+1 + sta _4 + //SEG30 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 -- _deref_pbuc1=vbuz1 + lda _4 + sta SCREEN+4 + //SEG31 [20] (byte~) main::$5 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuz1=_lo__deref_pwuc1 + lda words+2*SIZEOF_WORD + sta _5 + //SEG32 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 -- _deref_pbuc1=vbuz1 + lda _5 + sta SCREEN+5 + jmp breturn + //SEG33 main::@return + breturn: + //SEG34 [22] return + rts + words: .word $3031, $3233, $3435 +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a +Statement [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::$7 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ main::$1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ main::$2 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ main::$3 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ main::$4 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ main::$5 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 33: zp ZP_BYTE:3 [ main::$7 ] 27.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 4: zp ZP_BYTE:4 [ main::$0 ] 4: zp ZP_BYTE:5 [ main::$1 ] 4: zp ZP_BYTE:6 [ main::$2 ] 4: zp ZP_BYTE:7 [ main::$3 ] 4: zp ZP_BYTE:8 [ main::$4 ] 4: zp ZP_BYTE:9 [ main::$5 ] +Uplift Scope [] + +Uplifting [main] best 578 combination reg byte a [ main::$7 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] zp ZP_BYTE:6 [ main::$2 ] zp ZP_BYTE:7 [ main::$3 ] zp ZP_BYTE:8 [ main::$4 ] zp ZP_BYTE:9 [ main::$5 ] +Limited combination testing to 100 combinations of 49152 possible. +Uplifting [] best 578 combination +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::$2 ] +Uplifting [main] best 572 combination reg byte a [ main::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::$3 ] +Uplifting [main] best 566 combination reg byte a [ main::$3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ main::$4 ] +Uplifting [main] best 560 combination reg byte a [ main::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ main::$5 ] +Uplifting [main] best 554 combination reg byte a [ main::$5 ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 File Comments +// Test word pointer compound assignment +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .const SIZEOF_WORD = 2 +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG9 @end +bend: +//SEG10 main +main: { + .label SCREEN = $400 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG15 main::@1 + b1: + //SEG16 [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG17 [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_vwuc2 + tay + clc + lda words,y + adc #<$101 + sta words,y + lda words+1,y + adc #>$101 + sta words+1,y + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #3 + bne b1_from_b1 + jmp b2 + //SEG20 main::@2 + b2: + //SEG21 [10] (byte~) main::$0 ← > *((const word[]) main::words#0) -- vbuaa=_hi__deref_pwuc1 + lda words+1 + //SEG22 [11] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + sta SCREEN + //SEG23 [12] (byte~) main::$1 ← < *((const word[]) main::words#0) -- vbuaa=_lo__deref_pwuc1 + lda words + //SEG24 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + sta SCREEN+1 + //SEG25 [14] (byte~) main::$2 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuaa=_hi__deref_pwuc1 + lda words+1*SIZEOF_WORD+1 + //SEG26 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + sta SCREEN+2 + //SEG27 [16] (byte~) main::$3 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuaa=_lo__deref_pwuc1 + lda words+1*SIZEOF_WORD + //SEG28 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa + sta SCREEN+3 + //SEG29 [18] (byte~) main::$4 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuaa=_hi__deref_pwuc1 + lda words+2*SIZEOF_WORD+1 + //SEG30 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + sta SCREEN+4 + //SEG31 [20] (byte~) main::$5 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuaa=_lo__deref_pwuc1 + lda words+2*SIZEOF_WORD + //SEG32 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa + sta SCREEN+5 + jmp breturn + //SEG33 main::@return + breturn: + //SEG34 [22] return + rts + words: .word $3031, $3233, $3435 +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1_from_b1 with b1 +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b1_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b2: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte) SIZEOF_WORD SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(void()) main() +(byte~) main::$0 reg byte a 4.0 +(byte~) main::$1 reg byte a 4.0 +(byte~) main::$2 reg byte a 4.0 +(byte~) main::$3 reg byte a 4.0 +(byte~) main::$4 reg byte a 4.0 +(byte~) main::$5 reg byte a 4.0 +(byte) main::$7 reg byte a 33.0 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400 +(byte) main::i +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#2 reg byte x 11.0 +(word[]) main::words +(const word[]) main::words#0 words = { (word/signed word/dword/signed dword) $3031, (word/signed word/dword/signed dword) $3233, (word/signed word/dword/signed dword) $3435 } + +reg byte x [ main::i#2 main::i#1 ] +reg byte a [ main::$7 ] +reg byte a [ main::$0 ] +reg byte a [ main::$1 ] +reg byte a [ main::$2 ] +reg byte a [ main::$3 ] +reg byte a [ main::$4 ] +reg byte a [ main::$5 ] + + +FINAL ASSEMBLER +Score: 449 + +//SEG0 File Comments +// Test word pointer compound assignment +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .const SIZEOF_WORD = 2 +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main +main: { + .label SCREEN = $400 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 + b1: + //SEG16 [6] (byte) main::$7 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG17 [7] *((const word[]) main::words#0 + (byte) main::$7) ← *((const word[]) main::words#0 + (byte) main::$7) + (word/signed word/dword/signed dword) $101 -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_vwuc2 + tay + clc + lda words,y + adc #<$101 + sta words,y + lda words+1,y + adc #>$101 + sta words+1,y + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #3 + bne b1 + //SEG20 main::@2 + //SEG21 [10] (byte~) main::$0 ← > *((const word[]) main::words#0) -- vbuaa=_hi__deref_pwuc1 + lda words+1 + //SEG22 [11] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + sta SCREEN + //SEG23 [12] (byte~) main::$1 ← < *((const word[]) main::words#0) -- vbuaa=_lo__deref_pwuc1 + lda words + //SEG24 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + sta SCREEN+1 + //SEG25 [14] (byte~) main::$2 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuaa=_hi__deref_pwuc1 + lda words+1*SIZEOF_WORD+1 + //SEG26 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + sta SCREEN+2 + //SEG27 [16] (byte~) main::$3 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(const byte) SIZEOF_WORD) -- vbuaa=_lo__deref_pwuc1 + lda words+1*SIZEOF_WORD + //SEG28 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa + sta SCREEN+3 + //SEG29 [18] (byte~) main::$4 ← > *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuaa=_hi__deref_pwuc1 + lda words+2*SIZEOF_WORD+1 + //SEG30 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + sta SCREEN+4 + //SEG31 [20] (byte~) main::$5 ← < *((const word[]) main::words#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) SIZEOF_WORD) -- vbuaa=_lo__deref_pwuc1 + lda words+2*SIZEOF_WORD + //SEG32 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa + sta SCREEN+5 + //SEG33 main::@return + //SEG34 [22] return + rts + words: .word $3031, $3233, $3435 +} + diff --git a/src/test/ref/word-pointer-compound.sym b/src/test/ref/word-pointer-compound.sym new file mode 100644 index 000000000..8fb3add77 --- /dev/null +++ b/src/test/ref/word-pointer-compound.sym @@ -0,0 +1,31 @@ +(label) @1 +(label) @begin +(label) @end +(const byte) SIZEOF_WORD SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(void()) main() +(byte~) main::$0 reg byte a 4.0 +(byte~) main::$1 reg byte a 4.0 +(byte~) main::$2 reg byte a 4.0 +(byte~) main::$3 reg byte a 4.0 +(byte~) main::$4 reg byte a 4.0 +(byte~) main::$5 reg byte a 4.0 +(byte) main::$7 reg byte a 33.0 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400 +(byte) main::i +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#2 reg byte x 11.0 +(word[]) main::words +(const word[]) main::words#0 words = { (word/signed word/dword/signed dword) $3031, (word/signed word/dword/signed dword) $3233, (word/signed word/dword/signed dword) $3435 } + +reg byte x [ main::i#2 main::i#1 ] +reg byte a [ main::$7 ] +reg byte a [ main::$0 ] +reg byte a [ main::$1 ] +reg byte a [ main::$2 ] +reg byte a [ main::$3 ] +reg byte a [ main::$4 ] +reg byte a [ main::$5 ]