diff --git a/src/test/kc/examples/tetris/test-sprites.kc b/src/test/kc/examples/tetris/test-sprites.kc index 2e0b61102..eb999a9de 100644 --- a/src/test/kc/examples/tetris/test-sprites.kc +++ b/src/test/kc/examples/tetris/test-sprites.kc @@ -1,8 +1,10 @@ import "tetris-sprites" void main() { - init_sprites(); - init_irq(); + vicSelectGfxBank(PLAYFIELD_SCREEN); + *D018 = toD018(PLAYFIELD_SCREEN, PLAYFIELD_CHARSET); + sprites_init(); + sprites_irq_init(); while(true) { (*PLAYFIELD_SCREEN)++; } diff --git a/src/test/kc/examples/tetris/tetris-render.kc b/src/test/kc/examples/tetris/tetris-render.kc index 42399e278..8bb8120a3 100644 --- a/src/test/kc/examples/tetris/tetris-render.kc +++ b/src/test/kc/examples/tetris/tetris-render.kc @@ -12,8 +12,9 @@ kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "nes-screen.iscr") {{ .import binary "nes-screen.iscr" }} + // Pointers to the screen address for rendering each playfield line -byte*[PLAYFIELD_LINES+3] screen_lines; +byte*[PLAYFIELD_LINES] screen_lines; // Initialize rendering void render_init() { @@ -29,15 +30,16 @@ void render_init() { render_screen_original(PLAYFIELD_SCREEN); // Initialize the screen line pointers; - byte* li = PLAYFIELD_SCREEN + 40 + 16; - for(byte i:0..PLAYFIELD_LINES+2) { + + byte* li = PLAYFIELD_SCREEN + 2*40 + 16; + for(byte i:0..PLAYFIELD_LINES-1) { screen_lines[i<<1] = li; li += 40; } - // Prepare the playfield frame - byte* line = COLS + 15; - for(byte l:0..PLAYFIELD_LINES+1) { - for(byte c:0..PLAYFIELD_COLS+1) { + // Fill the playfield frame with the white background color + byte* line = COLS + 4*40 + 16; + for(byte l:2..PLAYFIELD_LINES-1) { + for(byte c:0..PLAYFIELD_COLS-1) { *(line+c) = WHITE; } line +=40; @@ -65,11 +67,12 @@ void render_screen_original(byte* screen) { // Render the static playfield on the screen void render_playfield() { - byte i = 0; - for(byte l:0..PLAYFIELD_LINES-1) { - byte* line = screen_lines[l<<1]; + // Do not render the top 2 lines. + byte i = PLAYFIELD_COLS*2; + for(byte l:2..PLAYFIELD_LINES-1) { + byte* screen_line = screen_lines[l<<1]; for(byte c:0..PLAYFIELD_COLS-1) { - *(line++) = playfield[i++]; + *(screen_line++) = playfield[i++]; } } } @@ -79,7 +82,7 @@ void render_current() { byte i = 0; byte ypos2 = current_ypos<<1; for(byte l:0..3) { - if(ypos2<2*PLAYFIELD_LINES) { + if(ypos2>2 && ypos2<2*PLAYFIELD_LINES) { byte* screen_line = screen_lines[ypos2]; byte xpos = current_xpos; for(byte c:0..3) { @@ -91,6 +94,8 @@ void render_current() { } xpos++; } + } else { + i += 4; } ypos2 += 2; } diff --git a/src/test/kc/examples/tetris/tetris-sprites.kc b/src/test/kc/examples/tetris/tetris-sprites.kc index 18b188a70..89626dda0 100644 --- a/src/test/kc/examples/tetris/tetris-sprites.kc +++ b/src/test/kc/examples/tetris/tetris-sprites.kc @@ -17,12 +17,10 @@ kickasm(pc PLAYFIELD_SPRITES, resource "nes-playfield.png") {{ }} // Setup the sprites -void init_sprites() { - vicSelectGfxBank(PLAYFIELD_SCREEN); - *D018 = toD018(PLAYFIELD_SCREEN, PLAYFIELD_CHARSET); +void sprites_init() { *SPRITES_ENABLE = %00001111; *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y = *SPRITES_MC = 0; - byte xpos = 24+14*8; + byte xpos = 24+15*8; for(byte s:0..3) { byte s2 = s<<1; SPRITES_XPOS[s2] = xpos; @@ -43,7 +41,7 @@ volatile byte irq_sprite_ptr = toSpritePtr(PLAYFIELD_SPRITES); volatile byte irq_cnt = 0; // Setup the IRQ -void init_irq() { +void sprites_irq_init() { asm { sei } // Acknowledge any IRQ and setup the next one *IRQ_STATUS = IRQ_RASTER; diff --git a/src/test/kc/examples/tetris/tetris.kc b/src/test/kc/examples/tetris/tetris.kc index 34c1f5484..fefbcd8ce 100644 --- a/src/test/kc/examples/tetris/tetris.kc +++ b/src/test/kc/examples/tetris/tetris.kc @@ -5,12 +5,15 @@ import "keyboard" import "sid" import "tetris-data" import "tetris-render" +import "tetris-sprites" import "tetris-play" void main() { sid_rnd_init(); asm { sei } render_init(); + sprites_init(); + sprites_irq_init(); play_init(); play_spawn_current(); render_playfield(); diff --git a/src/test/ref/examples/tetris/test-sprites.asm b/src/test/ref/examples/tetris/test-sprites.asm index 9e0f35c1b..88505e07f 100644 --- a/src/test/ref/examples/tetris/test-sprites.asm +++ b/src/test/ref/examples/tetris/test-sprites.asm @@ -50,13 +50,21 @@ bbegin: sta irq_cnt jsr main main: { - jsr init_sprites - jsr init_irq + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + lda #3 + sta CIA2_PORT_A_DDR + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + lda #toD0181_return + sta D018 + jsr sprites_init + jsr sprites_irq_init b2: inc PLAYFIELD_SCREEN jmp b2 } -init_irq: { +sprites_irq_init: { sei lda #IRQ_RASTER sta IRQ_STATUS @@ -81,23 +89,15 @@ init_irq: { cli rts } -init_sprites: { - .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 - .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f +sprites_init: { .label xpos = 2 - lda #3 - sta CIA2_PORT_A_DDR - lda #vicSelectGfxBank1_toDd001_return - sta CIA2_PORT_A - lda #toD0181_return - sta D018 lda #$f sta SPRITES_ENABLE lda #0 sta SPRITES_MC sta SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - lda #$18+$e*8 + lda #$18+$f*8 sta xpos ldx #0 b1: diff --git a/src/test/ref/examples/tetris/test-sprites.cfg b/src/test/ref/examples/tetris/test-sprites.cfg index 777cb562b..b7e874991 100644 --- a/src/test/ref/examples/tetris/test-sprites.cfg +++ b/src/test/ref/examples/tetris/test-sprites.cfg @@ -34,119 +34,118 @@ toSpritePtr1: scope:[] from @5 [9] phi() main: scope:[main] from @8 [10] phi() - [11] call init_sprites - to:main::@7 -main::@7: scope:[main] from main + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + [11] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 [12] phi() - [13] call init_irq + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [14] phi() + to:main::@8 +main::@8: scope:[main] from main::toD0181 + [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [16] call sprites_init + to:main::@9 +main::@9: scope:[main] from main::@8 + [17] phi() + [18] call sprites_irq_init to:main::@2 -main::@2: scope:[main] from main::@2 main::@7 - [14] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) +main::@2: scope:[main] from main::@2 main::@9 + [19] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) to:main::@2 -init_irq: scope:[init_irq] from main::@7 +sprites_irq_init: scope:[sprites_irq_init] from main::@9 asm { sei } - [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() asm { cli } - to:init_irq::@return -init_irq::@return: scope:[init_irq] from init_irq - [26] return + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init + [31] return to:@return -init_sprites: scope:[init_sprites] from main - [27] phi() - to:init_sprites::vicSelectGfxBank1 -init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites - [28] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 - to:init_sprites::vicSelectGfxBank1_toDd001 -init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 - [29] phi() - to:init_sprites::vicSelectGfxBank1_@1 -init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 - [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 - to:init_sprites::toD0181 -init_sprites::toD0181: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 - [31] phi() - to:init_sprites::@4 -init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181 - [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 - [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) - to:init_sprites::@1 -init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::@4 - [37] (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::@4/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [37] (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 - [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 - [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [42] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 - [43] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 - to:init_sprites::@return -init_sprites::@return: scope:[init_sprites] from init_sprites::@1 - [44] return +sprites_init: scope:[sprites_init] from main::@8 + [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [35] *((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 + [36] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [36] (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 ) + [37] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [42] 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 + [43] return to:@return irq: scope:[irq] from - [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 - [46] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [47] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 - [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 - [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 - [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 + [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 + [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 + [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 + [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 to:irq::@1 irq::@1: scope:[irq] from irq irq::@1 - [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 + [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 to:irq::@5 irq::@5: scope:[irq] from irq::@1 - [52] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [53] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 - [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [57] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [58] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 + [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [52] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 + [53] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 + [54] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 + [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 + [56] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 + [57] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 to:irq::@6 irq::@6: scope:[irq] from irq::@5 - [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [63] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [62] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:irq::@3 irq::@3: scope:[irq] from irq::@6 irq::@9 - [64] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [65] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [67] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 + [63] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) + [64] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 + [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [66] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 to:irq::@8 irq::@8: scope:[irq] from irq::@3 - [68] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [67] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 to:irq::@4 irq::@4: scope:[irq] from irq::@3 irq::@8 - [69] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [70] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [68] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) + [69] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 + [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 to:irq::@return irq::@return: scope:[irq] from irq::@4 - [73] return + [72] return to:@return irq::@2: scope:[irq] from irq::@5 - [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:irq::toSpritePtr2 irq::toSpritePtr2: scope:[irq] from irq::@2 - [77] phi() + [76] phi() to:irq::@9 irq::@9: scope:[irq] from irq::toSpritePtr2 - [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 + [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 to:irq::@3 diff --git a/src/test/ref/examples/tetris/test-sprites.log b/src/test/ref/examples/tetris/test-sprites.log index ee472b61e..eeebebe79 100644 --- a/src/test/ref/examples/tetris/test-sprites.log +++ b/src/test/ref/examples/tetris/test-sprites.log @@ -1,9 +1,9 @@ Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx -Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN -Inlined call (byte~) init_sprites::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_CHARSET Inlined call (byte~) $2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES Inlined call (byte~) irq::$2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN +Inlined call (byte~) main::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_CHARSET CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -98,7 +98,7 @@ CONTROL FLOW GRAPH SSA (byte~) $1 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 (byte[$1]) playfield#0 ← { fill( $1, 0) } (byte*) current_piece_gfx#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) current_piece_color#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) current_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) 3 (byte) current_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) @@ -114,97 +114,39 @@ CONTROL FLOW GRAPH SSA } }} to:@5 -init_sprites: scope:[init_sprites] from main - (byte*) PLAYFIELD_CHARSET#6 ← phi( main/(byte*) PLAYFIELD_CHARSET#7 ) - (byte*) init_sprites::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN#0 - to:init_sprites::vicSelectGfxBank1 -init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites - (byte*) PLAYFIELD_CHARSET#5 ← phi( init_sprites/(byte*) PLAYFIELD_CHARSET#6 ) - (byte*) init_sprites::vicSelectGfxBank1_gfx#1 ← phi( init_sprites/(byte*) init_sprites::vicSelectGfxBank1_gfx#0 ) - *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 - (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) init_sprites::vicSelectGfxBank1_gfx#1 - to:init_sprites::vicSelectGfxBank1_toDd001 -init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 - (byte*) PLAYFIELD_CHARSET#4 ← phi( init_sprites::vicSelectGfxBank1/(byte*) PLAYFIELD_CHARSET#5 ) - (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 ← phi( init_sprites::vicSelectGfxBank1/(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ) - (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 - (byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 ← > (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 - (byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 - (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 - (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 - to:init_sprites::vicSelectGfxBank1_toDd001_@return -init_sprites::vicSelectGfxBank1_toDd001_@return: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 - (byte*) PLAYFIELD_CHARSET#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte*) PLAYFIELD_CHARSET#4 ) - (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ) - (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 - to:init_sprites::vicSelectGfxBank1_@1 -init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001_@return - (byte*) PLAYFIELD_CHARSET#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte*) PLAYFIELD_CHARSET#3 ) - (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ) - (byte) init_sprites::vicSelectGfxBank1_$0#0 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 - *((byte*) CIA2_PORT_A#0) ← (byte) init_sprites::vicSelectGfxBank1_$0#0 - to:init_sprites::@3 -init_sprites::@3: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 - (byte*) PLAYFIELD_CHARSET#1 ← phi( init_sprites::vicSelectGfxBank1_@1/(byte*) PLAYFIELD_CHARSET#2 ) - (byte*) init_sprites::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN#0 - (byte*) init_sprites::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#1 - to:init_sprites::toD0181 -init_sprites::toD0181: scope:[init_sprites] from init_sprites::@3 - (byte*) init_sprites::toD0181_gfx#1 ← phi( init_sprites::@3/(byte*) init_sprites::toD0181_gfx#0 ) - (byte*) init_sprites::toD0181_screen#1 ← phi( init_sprites::@3/(byte*) init_sprites::toD0181_screen#0 ) - (word) init_sprites::toD0181_$0#0 ← ((word)) (byte*) init_sprites::toD0181_screen#1 - (word) init_sprites::toD0181_$1#0 ← (word) init_sprites::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383 - (word) init_sprites::toD0181_$2#0 ← (word) init_sprites::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) init_sprites::toD0181_$3#0 ← > (word) init_sprites::toD0181_$2#0 - (word) init_sprites::toD0181_$4#0 ← ((word)) (byte*) init_sprites::toD0181_gfx#1 - (byte) init_sprites::toD0181_$5#0 ← > (word) init_sprites::toD0181_$4#0 - (byte) init_sprites::toD0181_$6#0 ← (byte) init_sprites::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) init_sprites::toD0181_$7#0 ← (byte) init_sprites::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) init_sprites::toD0181_$8#0 ← (byte) init_sprites::toD0181_$3#0 | (byte) init_sprites::toD0181_$7#0 - (byte) init_sprites::toD0181_return#0 ← (byte) init_sprites::toD0181_$8#0 - to:init_sprites::toD0181_@return -init_sprites::toD0181_@return: scope:[init_sprites] from init_sprites::toD0181 - (byte) init_sprites::toD0181_return#2 ← phi( init_sprites::toD0181/(byte) init_sprites::toD0181_return#0 ) - (byte) init_sprites::toD0181_return#1 ← (byte) init_sprites::toD0181_return#2 - to:init_sprites::@4 -init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181_@return - (byte) init_sprites::toD0181_return#3 ← phi( init_sprites::toD0181_@return/(byte) init_sprites::toD0181_return#1 ) - (byte~) init_sprites::$1 ← (byte) init_sprites::toD0181_return#3 - *((byte*) D018#0) ← (byte~) init_sprites::$1 +sprites_init: scope:[sprites_init] from main::@8 *((byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 *((byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 *((byte*) SPRITES_EXPAND_Y#0) ← *((byte*) SPRITES_MC#0) *((byte*) SPRITES_EXPAND_X#0) ← *((byte*) SPRITES_EXPAND_Y#0) - (byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$2 ← (byte/signed byte/word/signed word/dword/signed dword) 14 * (byte/signed byte/word/signed word/dword/signed dword) 8 - (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$2 - (byte) init_sprites::xpos#0 ← (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$3 - (byte) init_sprites::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:init_sprites::@1 -init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::@4 - (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::@4/(byte) init_sprites::xpos#0 ) - (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::@4/(byte) init_sprites::s#0 ) - (byte~) init_sprites::$4 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) init_sprites::s2#0 ← (byte~) init_sprites::$4 - *((byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 - *((byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (byte) BLACK#0 - (byte/signed word/word/dword/signed dword~) init_sprites::$5 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - (byte) init_sprites::xpos#1 ← (byte/signed word/word/dword/signed dword~) init_sprites::$5 - (byte) init_sprites::s#1 ← (byte) init_sprites::s#2 + rangenext(0,3) - (bool~) init_sprites::$6 ← (byte) init_sprites::s#1 != rangelast(0,3) - if((bool~) init_sprites::$6) goto init_sprites::@1 - to:init_sprites::@return -init_sprites::@return: scope:[init_sprites] from init_sprites::@1 + (byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 * (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 + (byte) sprites_init::xpos#0 ← (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 + (byte) sprites_init::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sprites_init::@1 +sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 + (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte) sprites_init::xpos#0 sprites_init::@1/(byte) sprites_init::xpos#1 ) + (byte) sprites_init::s#2 ← phi( sprites_init/(byte) sprites_init::s#0 sprites_init::@1/(byte) sprites_init::s#1 ) + (byte~) sprites_init::$2 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sprites_init::s2#0 ← (byte~) sprites_init::$2 + *((byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + *((byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (byte) BLACK#0 + (byte/signed word/word/dword/signed dword~) sprites_init::$3 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) sprites_init::xpos#1 ← (byte/signed word/word/dword/signed dword~) sprites_init::$3 + (byte) sprites_init::s#1 ← (byte) sprites_init::s#2 + rangenext(0,3) + (bool~) sprites_init::$4 ← (byte) sprites_init::s#1 != rangelast(0,3) + if((bool~) sprites_init::$4) goto sprites_init::@1 + to:sprites_init::@return +sprites_init::@return: scope:[sprites_init] from sprites_init::@1 return to:@return @5: scope:[] from @4 - (byte*) PLAYFIELD_CHARSET#12 ← phi( @4/(byte*) PLAYFIELD_CHARSET#0 ) (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - (byte*) PLAYFIELD_CHARSET#11 ← phi( @5/(byte*) PLAYFIELD_CHARSET#12 ) (byte) irq_raster_next#18 ← phi( @5/(byte) irq_raster_next#0 ) (byte) irq_sprite_ypos#16 ← phi( @5/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @5/(byte*) toSpritePtr1_sprite#0 ) @@ -214,14 +156,12 @@ toSpritePtr1: scope:[] from @5 (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 to:toSpritePtr1_@return toSpritePtr1_@return: scope:[] from toSpritePtr1 - (byte*) PLAYFIELD_CHARSET#10 ← phi( toSpritePtr1/(byte*) PLAYFIELD_CHARSET#11 ) (byte) irq_raster_next#17 ← phi( toSpritePtr1/(byte) irq_raster_next#18 ) (byte) irq_sprite_ypos#14 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#16 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 to:@9 @9: scope:[] from toSpritePtr1_@return - (byte*) PLAYFIELD_CHARSET#9 ← phi( toSpritePtr1_@return/(byte*) PLAYFIELD_CHARSET#10 ) (byte) irq_raster_next#16 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#17 ) (byte) irq_sprite_ypos#13 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#14 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) @@ -229,7 +169,7 @@ toSpritePtr1_@return: scope:[] from toSpritePtr1 (byte) irq_sprite_ptr#0 ← (byte~) $2 (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 -init_irq: scope:[init_irq] from main::@7 +sprites_irq_init: scope:[sprites_irq_init] from main::@9 asm { sei } *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } @@ -239,11 +179,11 @@ init_irq: scope:[init_irq] from main::@7 *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 *((byte*) RASTER#0) ← (byte) IRQ_RASTER_FIRST#0 *((byte*) IRQ_ENABLE#0) ← (byte) IRQ_RASTER#0 - (void()*~) init_irq::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) irq() - *((void()**) HARDWARE_IRQ#0) ← (void()*~) init_irq::$0 + (void()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) irq() + *((void()**) HARDWARE_IRQ#0) ← (void()*~) sprites_irq_init::$0 asm { cli } - to:init_irq::@return -init_irq::@return: scope:[init_irq] from init_irq + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init return to:@return irq: scope:[irq] from @@ -363,15 +303,64 @@ irq::@return: scope:[irq] from irq::@4 return to:@return main: scope:[main] from @8 - (byte*) PLAYFIELD_CHARSET#7 ← phi( @8/(byte*) PLAYFIELD_CHARSET#8 ) - call init_sprites + (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN#0 + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 ) + *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) + (word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 + (byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0 + (byte) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte) main::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) main::vicSelectGfxBank1_toDd001_$2#0 + (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 + to:main::vicSelectGfxBank1_toDd001_@return +main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 + (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) + (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2 + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return + (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) + (byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3 + *((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0 to:main::@7 -main::@7: scope:[main] from main - call init_irq +main::@7: scope:[main] from main::vicSelectGfxBank1_@1 + (byte*) main::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN#0 + (byte*) main::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::@7 + (byte*) main::toD0181_gfx#1 ← phi( main::@7/(byte*) main::toD0181_gfx#0 ) + (byte*) main::toD0181_screen#1 ← phi( main::@7/(byte*) main::toD0181_screen#0 ) + (word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1 + (word) main::toD0181_$1#0 ← (word) main::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383 + (word) main::toD0181_$2#0 ← (word) main::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::toD0181_$3#0 ← > (word) main::toD0181_$2#0 + (word) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1 + (byte) main::toD0181_$5#0 ← > (word) main::toD0181_$4#0 + (byte) main::toD0181_$6#0 ← (byte) main::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::toD0181_$7#0 ← (byte) main::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) main::toD0181_$8#0 ← (byte) main::toD0181_$3#0 | (byte) main::toD0181_$7#0 + (byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0 + to:main::toD0181_@return +main::toD0181_@return: scope:[main] from main::toD0181 + (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) + (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 to:main::@8 -main::@8: scope:[main] from main::@7 +main::@8: scope:[main] from main::toD0181_@return + (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) + (byte~) main::$1 ← (byte) main::toD0181_return#3 + *((byte*) D018#0) ← (byte~) main::$1 + call sprites_init + to:main::@9 +main::@9: scope:[main] from main::@8 + call sprites_irq_init + to:main::@10 +main::@10: scope:[main] from main::@9 to:main::@1 -main::@1: scope:[main] from main::@2 main::@8 +main::@1: scope:[main] from main::@10 main::@2 if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -381,7 +370,6 @@ main::@return: scope:[main] from main::@1 return to:@return @8: scope:[] from @9 - (byte*) PLAYFIELD_CHARSET#8 ← phi( @9/(byte*) PLAYFIELD_CHARSET#9 ) (byte) irq_raster_next#15 ← phi( @9/(byte) irq_raster_next#16 ) (byte) irq_cnt#11 ← phi( @9/(byte) irq_cnt#0 ) (byte) irq_sprite_ptr#12 ← phi( @9/(byte) irq_sprite_ptr#0 ) @@ -495,18 +483,6 @@ SYMBOL TABLE SSA (byte) PINK#0 (byte*) PLAYFIELD_CHARSET (byte*) PLAYFIELD_CHARSET#0 -(byte*) PLAYFIELD_CHARSET#1 -(byte*) PLAYFIELD_CHARSET#10 -(byte*) PLAYFIELD_CHARSET#11 -(byte*) PLAYFIELD_CHARSET#12 -(byte*) PLAYFIELD_CHARSET#2 -(byte*) PLAYFIELD_CHARSET#3 -(byte*) PLAYFIELD_CHARSET#4 -(byte*) PLAYFIELD_CHARSET#5 -(byte*) PLAYFIELD_CHARSET#6 -(byte*) PLAYFIELD_CHARSET#7 -(byte*) PLAYFIELD_CHARSET#8 -(byte*) PLAYFIELD_CHARSET#9 (byte) PLAYFIELD_COLS (byte) PLAYFIELD_COLS#0 (byte) PLAYFIELD_LINES @@ -587,94 +563,14 @@ SYMBOL TABLE SSA (byte) WHITE#0 (byte) YELLOW (byte) YELLOW#0 -(byte) current_piece_color -(byte) current_piece_color#0 +(byte) current_piece_char +(byte) current_piece_char#0 (byte*) current_piece_gfx (byte*) current_piece_gfx#0 (byte) current_xpos (byte) current_xpos#0 (byte) current_ypos (byte) current_ypos#0 -(void()) init_irq() -(void()*~) init_irq::$0 -(label) init_irq::@return -(void()) init_sprites() -(byte~) init_sprites::$1 -(byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$2 -(byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$3 -(byte~) init_sprites::$4 -(byte/signed word/word/dword/signed dword~) init_sprites::$5 -(bool~) init_sprites::$6 -(label) init_sprites::@1 -(label) init_sprites::@3 -(label) init_sprites::@4 -(label) init_sprites::@return -(byte) init_sprites::s -(byte) init_sprites::s#0 -(byte) init_sprites::s#1 -(byte) init_sprites::s#2 -(byte) init_sprites::s2 -(byte) init_sprites::s2#0 -(label) init_sprites::toD0181 -(word~) init_sprites::toD0181_$0 -(word) init_sprites::toD0181_$0#0 -(word~) init_sprites::toD0181_$1 -(word) init_sprites::toD0181_$1#0 -(word~) init_sprites::toD0181_$2 -(word) init_sprites::toD0181_$2#0 -(byte~) init_sprites::toD0181_$3 -(byte) init_sprites::toD0181_$3#0 -(word~) init_sprites::toD0181_$4 -(word) init_sprites::toD0181_$4#0 -(byte~) init_sprites::toD0181_$5 -(byte) init_sprites::toD0181_$5#0 -(byte~) init_sprites::toD0181_$6 -(byte) init_sprites::toD0181_$6#0 -(byte~) init_sprites::toD0181_$7 -(byte) init_sprites::toD0181_$7#0 -(byte~) init_sprites::toD0181_$8 -(byte) init_sprites::toD0181_$8#0 -(label) init_sprites::toD0181_@return -(byte*) init_sprites::toD0181_gfx -(byte*) init_sprites::toD0181_gfx#0 -(byte*) init_sprites::toD0181_gfx#1 -(byte) init_sprites::toD0181_return -(byte) init_sprites::toD0181_return#0 -(byte) init_sprites::toD0181_return#1 -(byte) init_sprites::toD0181_return#2 -(byte) init_sprites::toD0181_return#3 -(byte*) init_sprites::toD0181_screen -(byte*) init_sprites::toD0181_screen#0 -(byte*) init_sprites::toD0181_screen#1 -(label) init_sprites::vicSelectGfxBank1 -(byte~) init_sprites::vicSelectGfxBank1_$0 -(byte) init_sprites::vicSelectGfxBank1_$0#0 -(label) init_sprites::vicSelectGfxBank1_@1 -(byte*) init_sprites::vicSelectGfxBank1_gfx -(byte*) init_sprites::vicSelectGfxBank1_gfx#0 -(byte*) init_sprites::vicSelectGfxBank1_gfx#1 -(label) init_sprites::vicSelectGfxBank1_toDd001 -(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 -(word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 -(byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 -(byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 -(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 -(byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 -(label) init_sprites::vicSelectGfxBank1_toDd001_@return -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 -(byte) init_sprites::vicSelectGfxBank1_toDd001_return -(byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -(byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 -(byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 -(byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 -(byte) init_sprites::xpos -(byte) init_sprites::xpos#0 -(byte) init_sprites::xpos#1 -(byte) init_sprites::xpos#2 interrupt(HARDWARE_CLOBBER)(void()) irq() (bool~) irq::$0 (bool~) irq::$1 @@ -790,13 +686,93 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#8 (byte) irq_sprite_ypos#9 (void()) main() +(byte~) main::$1 (label) main::@1 +(label) main::@10 (label) main::@2 (label) main::@7 (label) main::@8 +(label) main::@9 (label) main::@return +(label) main::toD0181 +(word~) main::toD0181_$0 +(word) main::toD0181_$0#0 +(word~) main::toD0181_$1 +(word) main::toD0181_$1#0 +(word~) main::toD0181_$2 +(word) main::toD0181_$2#0 +(byte~) main::toD0181_$3 +(byte) main::toD0181_$3#0 +(word~) main::toD0181_$4 +(word) main::toD0181_$4#0 +(byte~) main::toD0181_$5 +(byte) main::toD0181_$5#0 +(byte~) main::toD0181_$6 +(byte) main::toD0181_$6#0 +(byte~) main::toD0181_$7 +(byte) main::toD0181_$7#0 +(byte~) main::toD0181_$8 +(byte) main::toD0181_$8#0 +(label) main::toD0181_@return +(byte*) main::toD0181_gfx +(byte*) main::toD0181_gfx#0 +(byte*) main::toD0181_gfx#1 +(byte) main::toD0181_return +(byte) main::toD0181_return#0 +(byte) main::toD0181_return#1 +(byte) main::toD0181_return#2 +(byte) main::toD0181_return#3 +(byte*) main::toD0181_screen +(byte*) main::toD0181_screen#0 +(byte*) main::toD0181_screen#1 +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(byte) main::vicSelectGfxBank1_$0#0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(byte*) main::vicSelectGfxBank1_gfx#0 +(byte*) main::vicSelectGfxBank1_gfx#1 +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(word) main::vicSelectGfxBank1_toDd001_$0#0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte) main::vicSelectGfxBank1_toDd001_$1#0 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte) main::vicSelectGfxBank1_toDd001_$2#0 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 +(label) main::vicSelectGfxBank1_toDd001_@return +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 +(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +(byte) main::vicSelectGfxBank1_toDd001_return +(byte) main::vicSelectGfxBank1_toDd001_return#0 +(byte) main::vicSelectGfxBank1_toDd001_return#1 +(byte) main::vicSelectGfxBank1_toDd001_return#2 +(byte) main::vicSelectGfxBank1_toDd001_return#3 (byte[$1]) playfield (byte[$1]) playfield#0 +(void()) sprites_init() +(byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 +(byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 +(byte~) sprites_init::$2 +(byte/signed word/word/dword/signed dword~) sprites_init::$3 +(bool~) sprites_init::$4 +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#0 +(byte) sprites_init::s#1 +(byte) sprites_init::s#2 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#0 +(byte) sprites_init::xpos#1 +(byte) sprites_init::xpos#2 +(void()) sprites_irq_init() +(void()*~) sprites_irq_init::$0 +(label) sprites_irq_init::@return (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word) toSpritePtr1_$0#0 @@ -814,7 +790,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 -Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@10 Culled Empty Block (label) @10 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) irq::$5 ← (byte~) irq::$3 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) irq::$4 ← (byte~) irq::$3 == (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -823,16 +799,9 @@ Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_ Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $2 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#12 Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS#0 = (byte*~) $0 -Alias (byte*) init_sprites::vicSelectGfxBank1_gfx#0 = (byte*) init_sprites::vicSelectGfxBank1_gfx#1 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte*) PLAYFIELD_CHARSET#1 = (byte*) PLAYFIELD_CHARSET#5 (byte*) PLAYFIELD_CHARSET#6 (byte*) PLAYFIELD_CHARSET#4 (byte*) PLAYFIELD_CHARSET#3 (byte*) PLAYFIELD_CHARSET#2 -Alias (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 (byte) init_sprites::vicSelectGfxBank1_$0#0 -Alias (byte*) init_sprites::toD0181_screen#0 = (byte*) init_sprites::toD0181_screen#1 -Alias (byte*) init_sprites::toD0181_gfx#0 = (byte*) init_sprites::toD0181_gfx#1 -Alias (byte) init_sprites::toD0181_return#0 = (byte) init_sprites::toD0181_$8#0 (byte) init_sprites::toD0181_return#2 (byte) init_sprites::toD0181_return#1 (byte) init_sprites::toD0181_return#3 (byte~) init_sprites::$1 -Alias (byte) init_sprites::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$3 -Alias (byte) init_sprites::s2#0 = (byte~) init_sprites::$4 -Alias (byte) init_sprites::xpos#1 = (byte/signed word/word/dword/signed dword~) init_sprites::$5 -Alias (byte*) PLAYFIELD_CHARSET#0 = (byte*) PLAYFIELD_CHARSET#12 (byte*) PLAYFIELD_CHARSET#11 (byte*) PLAYFIELD_CHARSET#10 (byte*) PLAYFIELD_CHARSET#9 (byte*) PLAYFIELD_CHARSET#8 +Alias (byte) sprites_init::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 +Alias (byte) sprites_init::s2#0 = (byte~) sprites_init::$2 +Alias (byte) sprites_init::xpos#1 = (byte/signed word/word/dword/signed dword~) sprites_init::$3 Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#13 (byte) irq_sprite_ypos#8 Alias (byte) irq_sprite_ptr#4 = (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#5 @@ -853,6 +822,11 @@ Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#7 Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#9 Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#7 (byte) irq_sprite_ypos#3 Alias (byte) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#8 +Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 +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) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 Alias (byte) irq_cnt#0 = (byte) irq_cnt#11 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 @@ -871,7 +845,6 @@ Self Phi Eliminated (byte) irq_sprite_ptr#4 Self Phi Eliminated (byte) irq_cnt#4 Self Phi Eliminated (byte) irq_raster_next#10 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) PLAYFIELD_CHARSET#1 (byte*) PLAYFIELD_CHARSET#7 Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#0 Redundant Phi (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#0 Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 @@ -887,11 +860,10 @@ Redundant Phi (byte) irq_cnt#4 (byte) irq_cnt#8 Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#13 Redundant Phi (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#0 Redundant Phi (byte) irq::toSpritePtr2_return#3 (byte) irq::toSpritePtr2_return#1 -Redundant Phi (byte*) PLAYFIELD_CHARSET#7 (byte*) PLAYFIELD_CHARSET#0 Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#0 Redundant Phi (byte) irq_raster_next#15 (byte) irq_raster_next#16 Successful SSA optimization Pass2RedundantPhiElimination -Simple Condition (bool~) init_sprites::$6 if((byte) init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 +Simple Condition (bool~) sprites_init::$4 if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 Simple Condition (bool~) irq::$0 if(*((byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 Simple Condition (bool~) irq::$1 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 Simple Condition (bool~) irq::$5 if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 @@ -981,51 +953,51 @@ Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240 Constant (const byte) PLAYFIELD_LINES#0 = 22 Constant (const byte) PLAYFIELD_COLS#0 = 10 Constant (const byte*) current_piece_gfx#0 = ((byte*))0 -Constant (const byte) current_piece_color#0 = 0 +Constant (const byte) current_piece_char#0 = 0 Constant (const byte) current_xpos#0 = 3 Constant (const byte) current_ypos#0 = 0 -Constant (const byte/signed byte/word/signed word/dword/signed dword) init_sprites::$2 = 14*8 -Constant (const byte) init_sprites::s#0 = 0 +Constant (const byte/signed byte/word/signed word/dword/signed dword) sprites_init::$0 = 15*8 +Constant (const byte) sprites_init::s#0 = 0 Constant (const byte) IRQ_RASTER_FIRST#0 = 49 -Constant (const void()*) init_irq::$0 = &irq +Constant (const void()*) sprites_irq_init::$0 = &irq Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) PLAYFIELD_SPRITE_PTRS#0 = PLAYFIELD_SCREEN#0+SPRITE_PTRS#0 Constant (const byte) $1 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 -Constant (const byte*) init_sprites::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN#0 -Constant (const byte*) init_sprites::toD0181_screen#0 = PLAYFIELD_SCREEN#0 -Constant (const byte*) init_sprites::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 -Constant (const byte) init_sprites::xpos#0 = 24+init_sprites::$2 +Constant (const byte) sprites_init::xpos#0 = 24+sprites_init::$0 Constant (const word) toSpritePtr1_$0#0 = ((word))PLAYFIELD_SPRITES#0 Constant (const byte*) irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 +Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN#0 +Constant (const byte*) main::toD0181_screen#0 = PLAYFIELD_SCREEN#0 +Constant (const byte*) main::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[$1]) playfield#0 = { fill( $1, 0) } -Constant (const word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 = ((word))init_sprites::vicSelectGfxBank1_gfx#0 -Constant (const word) init_sprites::toD0181_$0#0 = ((word))init_sprites::toD0181_screen#0 -Constant (const word) init_sprites::toD0181_$4#0 = ((word))init_sprites::toD0181_gfx#0 Constant (const word) toSpritePtr1_$1#0 = toSpritePtr1_$0#0>>6 Constant (const word) irq::toSpritePtr2_$0#0 = ((word))irq::toSpritePtr2_sprite#0 +Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0 +Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0 +Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 = >init_sprites::vicSelectGfxBank1_toDd001_$0#0 -Constant (const word) init_sprites::toD0181_$1#0 = init_sprites::toD0181_$0#0&16383 -Constant (const byte) init_sprites::toD0181_$5#0 = >init_sprites::toD0181_$4#0 Constant (const byte) toSpritePtr1_$2#0 = ((byte))toSpritePtr1_$1#0 Constant (const word) irq::toSpritePtr2_$1#0 = irq::toSpritePtr2_$0#0>>6 +Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0 +Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383 +Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 = init_sprites::vicSelectGfxBank1_toDd001_$1#0>>6 -Constant (const word) init_sprites::toD0181_$2#0 = init_sprites::toD0181_$1#0<<2 -Constant (const byte) init_sprites::toD0181_$6#0 = init_sprites::toD0181_$5#0>>2 Constant (const byte) toSpritePtr1_return#0 = toSpritePtr1_$2#0 Constant (const byte) irq::toSpritePtr2_$2#0 = ((byte))irq::toSpritePtr2_$1#0 +Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6 +Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2 +Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 = 3^init_sprites::vicSelectGfxBank1_toDd001_$2#0 -Constant (const byte) init_sprites::toD0181_$3#0 = >init_sprites::toD0181_$2#0 -Constant (const byte) init_sprites::toD0181_$7#0 = init_sprites::toD0181_$6#0&15 Constant (const byte) toSpritePtr1_return#1 = toSpritePtr1_return#0 Constant (const byte) irq::toSpritePtr2_return#0 = irq::toSpritePtr2_$2#0 +Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0 +Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 +Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) init_sprites::toD0181_return#0 = init_sprites::toD0181_$3#0|init_sprites::toD0181_$7#0 Constant (const byte) $2 = toSpritePtr1_return#1 Constant (const byte) irq::toSpritePtr2_return#1 = irq::toSpritePtr2_return#0 +Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) irq::$2 = irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification @@ -1043,43 +1015,43 @@ Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks -Resolved ranged next value init_sprites::s#1 ← ++ init_sprites::s#2 to ++ -Resolved ranged comparison value if(init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 -Culled Empty Block (label) init_sprites::vicSelectGfxBank1_toDd001_@return -Culled Empty Block (label) init_sprites::@3 -Culled Empty Block (label) init_sprites::toD0181_@return +Resolved ranged next value sprites_init::s#1 ← ++ sprites_init::s#2 to ++ +Resolved ranged comparison value if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Culled Empty Block (label) toSpritePtr1_@return Culled Empty Block (label) irq::toSpritePtr2_@return +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return +Culled Empty Block (label) main::@7 +Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@1 Successful SSA optimization Pass2CullEmptyBlocks -Inlining constant with var siblings (const byte) init_sprites::s#0 -Inlining constant with var siblings (const byte) init_sprites::xpos#0 +Inlining constant with var siblings (const byte) sprites_init::s#0 +Inlining constant with var siblings (const byte) sprites_init::xpos#0 Inlining constant with different constant siblings (const byte) irq::toSpritePtr2_return#1 Inlining constant with different constant siblings (const byte) toSpritePtr1_return#1 -Constant inlined init_sprites::$2 = (byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 -Constant inlined init_sprites::toD0181_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 -Constant inlined init_sprites::toD0181_$6#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined init_sprites::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 -Constant inlined init_sprites::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 -Constant inlined init_sprites::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined init_sprites::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined init_sprites::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 -Constant inlined init_sprites::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383 +Constant inlined main::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN#0 +Constant inlined main::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 +Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined $1 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined $2 = (const byte) toSpritePtr1_return#0 -Constant inlined init_sprites::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 -Constant inlined init_irq::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() Constant inlined irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SPRITES#0 Constant inlined irq::toSpritePtr2_return#1 = (const byte) irq::toSpritePtr2_return#0 -Constant inlined init_sprites::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_SCREEN#0 -Constant inlined init_sprites::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined init_sprites::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 -Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0 -Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 -Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 -Constant inlined init_sprites::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN#0 +Constant inlined sprites_init::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() +Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined main::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined main::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383 +Constant inlined main::toD0181_$6#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::toD0181_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +Constant inlined main::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 +Constant inlined main::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined toSpritePtr1_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_SCREEN#0 Constant inlined toSpritePtr1_$2#0 = (const byte) toSpritePtr1_return#0 +Constant inlined sprites_init::$0 = (byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 Constant inlined toSpritePtr1_return#1 = (const byte) toSpritePtr1_return#0 Constant inlined irq::toSpritePtr2_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 @@ -1089,41 +1061,39 @@ Constant inlined irq::toSpritePtr2_$2#0 = (const byte) irq::toSpritePtr2_return# Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero SPRITES_YPOS#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS#0+0 -Added new block during phi lifting init_sprites::@5(between init_sprites::@1 and init_sprites::@1) +Added new block during phi lifting sprites_init::@3(between sprites_init::@1 and sprites_init::@1) Added new block during phi lifting irq::@10(between irq::@3 and irq::@4) Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of init_sprites -Adding NOP phi() at start of init_sprites::vicSelectGfxBank1_toDd001 -Adding NOP phi() at start of init_sprites::toD0181 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@9 Adding NOP phi() at start of irq::toSpritePtr2 CALL GRAPH Calls in [] to main:8 -Calls in [main] to init_sprites:11 init_irq:13 +Calls in [main] to sprites_init:16 sprites_irq_init:18 Created 4 initial phi equivalence classes -Coalesced [45] init_sprites::s#3 ← init_sprites::s#1 -Coalesced [46] init_sprites::xpos#3 ← init_sprites::xpos#1 -Coalesced [66] irq_raster_next#19 ← irq_raster_next#2 -Coalesced [72] irq::raster_next#5 ← irq::raster_next#1 -Coalesced [78] irq::raster_next#4 ← irq::raster_next#0 -Coalesced [84] irq_raster_next#20 ← irq_raster_next#1 +Coalesced [44] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [45] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [65] irq_raster_next#19 ← irq_raster_next#2 +Coalesced [71] irq::raster_next#5 ← irq::raster_next#1 +Coalesced [77] irq::raster_next#4 ← irq::raster_next#0 +Coalesced [83] irq_raster_next#20 ← irq_raster_next#1 Coalesced down to 4 phi equivalence classes -Culled Empty Block (label) init_sprites::@5 +Culled Empty Block (label) sprites_init::@3 Culled Empty Block (label) irq::@10 Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of init_sprites -Adding NOP phi() at start of init_sprites::vicSelectGfxBank1_toDd001 -Adding NOP phi() at start of init_sprites::toD0181 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@9 Adding NOP phi() at start of irq::toSpritePtr2 FINAL CONTROL FLOW GRAPH @@ -1163,121 +1133,120 @@ toSpritePtr1: scope:[] from @5 [9] phi() main: scope:[main] from @8 [10] phi() - [11] call init_sprites - to:main::@7 -main::@7: scope:[main] from main + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + [11] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 [12] phi() - [13] call init_irq + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [14] phi() + to:main::@8 +main::@8: scope:[main] from main::toD0181 + [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [16] call sprites_init + to:main::@9 +main::@9: scope:[main] from main::@8 + [17] phi() + [18] call sprites_irq_init to:main::@2 -main::@2: scope:[main] from main::@2 main::@7 - [14] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) +main::@2: scope:[main] from main::@2 main::@9 + [19] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) to:main::@2 -init_irq: scope:[init_irq] from main::@7 +sprites_irq_init: scope:[sprites_irq_init] from main::@9 asm { sei } - [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() asm { cli } - to:init_irq::@return -init_irq::@return: scope:[init_irq] from init_irq - [26] return + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init + [31] return to:@return -init_sprites: scope:[init_sprites] from main - [27] phi() - to:init_sprites::vicSelectGfxBank1 -init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites - [28] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 - to:init_sprites::vicSelectGfxBank1_toDd001 -init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 - [29] phi() - to:init_sprites::vicSelectGfxBank1_@1 -init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 - [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 - to:init_sprites::toD0181 -init_sprites::toD0181: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 - [31] phi() - to:init_sprites::@4 -init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181 - [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 - [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) - to:init_sprites::@1 -init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::@4 - [37] (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::@4/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [37] (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 - [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 - [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [42] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 - [43] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 - to:init_sprites::@return -init_sprites::@return: scope:[init_sprites] from init_sprites::@1 - [44] return +sprites_init: scope:[sprites_init] from main::@8 + [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [35] *((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 + [36] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [36] (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 ) + [37] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [42] 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 + [43] return to:@return irq: scope:[irq] from - [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 - [46] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [47] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 - [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 - [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 - [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 + [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 + [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 + [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 + [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 to:irq::@1 irq::@1: scope:[irq] from irq irq::@1 - [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 + [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 to:irq::@5 irq::@5: scope:[irq] from irq::@1 - [52] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [53] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 - [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [57] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [58] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 + [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [52] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 + [53] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 + [54] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 + [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 + [56] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 + [57] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 to:irq::@6 irq::@6: scope:[irq] from irq::@5 - [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [63] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [62] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 to:irq::@3 irq::@3: scope:[irq] from irq::@6 irq::@9 - [64] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [65] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [67] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 + [63] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) + [64] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 + [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [66] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 to:irq::@8 irq::@8: scope:[irq] from irq::@3 - [68] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [67] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 to:irq::@4 irq::@4: scope:[irq] from irq::@3 irq::@8 - [69] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [70] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [68] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) + [69] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 + [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 to:irq::@return irq::@return: scope:[irq] from irq::@4 - [73] return + [72] return to:@return irq::@2: scope:[irq] from irq::@5 - [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:irq::toSpritePtr2 irq::toSpritePtr2: scope:[irq] from irq::@2 - [77] phi() + [76] phi() to:irq::@9 irq::@9: scope:[irq] from irq::toSpritePtr2 - [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 + [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 to:irq::@3 @@ -1368,40 +1337,10 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_RST8 (byte) WHITE (byte) YELLOW -(byte) current_piece_color +(byte) current_piece_char (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -(void()) init_irq() -(void()) init_sprites() -(byte) init_sprites::s -(byte) init_sprites::s#1 16.5 -(byte) init_sprites::s#2 8.8 -(byte) init_sprites::s2 -(byte) init_sprites::s2#0 22.0 -(word~) init_sprites::toD0181_$0 -(word~) init_sprites::toD0181_$1 -(word~) init_sprites::toD0181_$2 -(byte~) init_sprites::toD0181_$3 -(word~) init_sprites::toD0181_$4 -(byte~) init_sprites::toD0181_$5 -(byte~) init_sprites::toD0181_$6 -(byte~) init_sprites::toD0181_$7 -(byte~) init_sprites::toD0181_$8 -(byte*) init_sprites::toD0181_gfx -(byte) init_sprites::toD0181_return -(byte*) init_sprites::toD0181_screen -(byte~) init_sprites::vicSelectGfxBank1_$0 -(byte*) init_sprites::vicSelectGfxBank1_gfx -(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 -(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx -(byte) init_sprites::vicSelectGfxBank1_toDd001_return -(byte) init_sprites::xpos -(byte) init_sprites::xpos#1 7.333333333333333 -(byte) init_sprites::xpos#2 8.25 interrupt(HARDWARE_CLOBBER)(void()) irq() (byte~) irq::$3 4.0 (byte) irq::ptr @@ -1437,7 +1376,37 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#1 20.0 (byte) irq_sprite_ypos#2 20.0 (void()) main() +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(byte*) main::toD0181_screen +(byte~) main::vicSelectGfxBank1_$0 +(byte*) main::vicSelectGfxBank1_gfx +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(void()) sprites_init() +(byte) sprites_init::s +(byte) sprites_init::s#1 16.5 +(byte) sprites_init::s#2 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 7.333333333333333 +(byte) sprites_init::xpos#2 8.25 +(void()) sprites_irq_init() (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 (byte~) toSpritePtr1_$2 @@ -1445,15 +1414,15 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*) toSpritePtr1_sprite Initial phi equivalence classes -[ init_sprites::s#2 init_sprites::s#1 ] -[ init_sprites::xpos#2 init_sprites::xpos#1 ] +[ sprites_init::s#2 sprites_init::s#1 ] +[ sprites_init::xpos#2 sprites_init::xpos#1 ] [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] Added variable irq_raster_next#0 to zero page equivalence class [ irq_raster_next#0 ] Added variable irq_sprite_ypos#0 to zero page equivalence class [ irq_sprite_ypos#0 ] Added variable irq_sprite_ptr#0 to zero page equivalence class [ irq_sprite_ptr#0 ] Added variable irq_cnt#0 to zero page equivalence class [ irq_cnt#0 ] -Added variable init_sprites::s2#0 to zero page equivalence class [ init_sprites::s2#0 ] +Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init::s2#0 ] Added variable irq::ypos#0 to zero page equivalence class [ irq::ypos#0 ] Added variable irq::ptr#0 to zero page equivalence class [ irq::ptr#0 ] Added variable irq::ptr#1 to zero page equivalence class [ irq::ptr#1 ] @@ -1466,15 +1435,15 @@ Added variable irq_cnt#13 to zero page equivalence class [ irq_cnt#13 ] Added variable irq_sprite_ypos#1 to zero page equivalence class [ irq_sprite_ypos#1 ] Added variable irq_sprite_ptr#1 to zero page equivalence class [ irq_sprite_ptr#1 ] Complete equivalence classes -[ init_sprites::s#2 init_sprites::s#1 ] -[ init_sprites::xpos#2 init_sprites::xpos#1 ] +[ sprites_init::s#2 sprites_init::s#1 ] +[ sprites_init::xpos#2 sprites_init::xpos#1 ] [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] [ irq_raster_next#0 ] [ irq_sprite_ypos#0 ] [ irq_sprite_ptr#0 ] [ irq_cnt#0 ] -[ init_sprites::s2#0 ] +[ sprites_init::s2#0 ] [ irq::ypos#0 ] [ irq::ptr#0 ] [ irq::ptr#1 ] @@ -1486,15 +1455,15 @@ Complete equivalence classes [ irq_cnt#13 ] [ irq_sprite_ypos#1 ] [ irq_sprite_ptr#1 ] -Allocated zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] -Allocated zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Allocated zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] +Allocated zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Allocated zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] Allocated zp ZP_BYTE:5 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] Allocated zp ZP_BYTE:6 [ irq_raster_next#0 ] Allocated zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] Allocated zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] Allocated zp ZP_BYTE:9 [ irq_cnt#0 ] -Allocated zp ZP_BYTE:10 [ init_sprites::s2#0 ] +Allocated zp ZP_BYTE:10 [ sprites_init::s2#0 ] Allocated zp ZP_BYTE:11 [ irq::ypos#0 ] Allocated zp ZP_BYTE:12 [ irq::ptr#0 ] Allocated zp ZP_BYTE:13 [ irq::ptr#1 ] @@ -1605,158 +1574,156 @@ bend_from_b8: bend: //SEG19 main main: { - //SEG20 [11] call init_sprites - //SEG21 [27] phi from main to init_sprites [phi:main->init_sprites] - init_sprites_from_main: - jsr init_sprites - //SEG22 [12] phi from main to main::@7 [phi:main->main::@7] - b7_from_main: - jmp b7 - //SEG23 main::@7 - b7: - //SEG24 [13] call init_irq - jsr init_irq + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + jmp vicSelectGfxBank1 + //SEG20 main::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG21 [11] *((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 + //SEG22 [12] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG23 main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG24 main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG25 [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG26 [14] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG27 main::toD0181 + toD0181: + jmp b8 + //SEG28 main::@8 + b8: + //SEG29 [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG30 [16] call sprites_init + jsr sprites_init + //SEG31 [17] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + b9_from_b8: + jmp b9 + //SEG32 main::@9 + b9: + //SEG33 [18] call sprites_irq_init + jsr sprites_irq_init jmp b2 - //SEG25 main::@2 + //SEG34 main::@2 b2: - //SEG26 [14] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN jmp b2 } -//SEG27 init_irq -init_irq: { - //SEG28 asm { sei } +//SEG36 sprites_irq_init +sprites_irq_init: { + //SEG37 asm { sei } sei - //SEG29 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG30 asm { ldaCIA1_INTERRUPT } + //SEG39 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG31 [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG32 [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG33 [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG34 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG43 [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG35 [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG36 [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG37 [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG38 asm { cli } + //SEG47 asm { cli } cli jmp breturn - //SEG39 init_irq::@return + //SEG48 sprites_irq_init::@return breturn: - //SEG40 [26] return + //SEG49 [31] return rts } -//SEG41 init_sprites -init_sprites: { - .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 - .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f +//SEG50 sprites_init +sprites_init: { .label s2 = $a .label xpos = 3 .label s = 2 - jmp vicSelectGfxBank1 - //SEG42 init_sprites::vicSelectGfxBank1 - vicSelectGfxBank1: - //SEG43 [28] *((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 - //SEG44 [29] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] - vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: - jmp vicSelectGfxBank1_toDd001 - //SEG45 init_sprites::vicSelectGfxBank1_toDd001 - vicSelectGfxBank1_toDd001: - jmp vicSelectGfxBank1_b1 - //SEG46 init_sprites::vicSelectGfxBank1_@1 - vicSelectGfxBank1_b1: - //SEG47 [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 - lda #vicSelectGfxBank1_toDd001_return - sta CIA2_PORT_A - //SEG48 [31] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] - toD0181_from_vicSelectGfxBank1_b1: - jmp toD0181 - //SEG49 init_sprites::toD0181 - toD0181: - jmp b4 - //SEG50 init_sprites::@4 - b4: - //SEG51 [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 - lda #toD0181_return - sta D018 - //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG56 [37] phi from init_sprites::@4 to init_sprites::@1 [phi:init_sprites::@4->init_sprites::@1] - b1_from_b4: - //SEG57 [37] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::@4->init_sprites::@1#0] -- vbuz1=vbuc1 - lda #$18+$e*8 + //SEG55 [36] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + b1_from_sprites_init: + //SEG56 [36] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 - //SEG58 [37] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::@4->init_sprites::@1#1] -- vbuz1=vbuc1 + //SEG57 [36] 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 - //SEG59 [37] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] + //SEG58 [36] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG60 [37] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy - //SEG61 [37] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy + //SEG59 [36] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG60 [36] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG62 init_sprites::@1 + //SEG61 sprites_init::@1 b1: - //SEG63 [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG62 [37] (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 - //SEG64 [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG63 [38] *((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 - //SEG65 [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy s lda #BLACK sta SPRITES_COLS,y - //SEG66 [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG65 [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG67 [42] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuz1=_inc_vbuz1 + //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG68 [43] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG67 [42] 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 s cmp #4 bne b1_from_b1 jmp breturn - //SEG69 init_sprites::@return + //SEG68 sprites_init::@return breturn: - //SEG70 [44] return + //SEG69 [43] return rts } -//SEG71 irq +//SEG70 irq irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 .label _3 = $12 @@ -1765,130 +1732,130 @@ irq: { .label ptr_1 = $d .label ptr_2 = $e .label raster_next = 5 - //SEG72 entry interrupt(HARDWARE_CLOBBER) + //SEG71 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG73 [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG74 [46] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG75 [47] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 jmp b1 - //SEG79 irq::@1 + //SEG78 irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG79 [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos bne b1 jmp b5 - //SEG81 irq::@5 + //SEG80 irq::@5 b5: - //SEG82 [52] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG83 [53] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG84 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS+2 - //SEG87 [57] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG86 [56] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS+3 - //SEG89 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + //SEG88 [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG90 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG89 [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a beq b2 jmp b6 - //SEG91 irq::@6 + //SEG90 irq::@6 b6: - //SEG92 [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG91 [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 lda #$15 clc adc irq_raster_next sta irq_raster_next_2 - //SEG93 [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG92 [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos_2 - //SEG94 [63] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG93 [62] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_2 - //SEG95 [64] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + //SEG94 [63] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] b3_from_b6: b3_from_b9: - //SEG96 [64] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + //SEG95 [63] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy jmp b3 - //SEG97 irq::@3 + //SEG96 irq::@3 b3: - //SEG98 [65] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuz1=vbuz2 + //SEG97 [64] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuz1=vbuz2 lda irq_raster_next_12 sta raster_next - //SEG99 [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG98 [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and raster_next sta _3 - //SEG100 [67] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG99 [66] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuz1_neq_vbuc1_then_la1 lda _3 cmp #3 bne b4_from_b3 jmp b8 - //SEG101 irq::@8 + //SEG100 irq::@8 b8: - //SEG102 [68] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 + //SEG101 [67] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 dec raster_next - //SEG103 [69] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + //SEG102 [68] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] b4_from_b3: b4_from_b8: - //SEG104 [69] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + //SEG103 [68] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy jmp b4 - //SEG105 irq::@4 + //SEG104 irq::@4 b4: - //SEG106 [70] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 lda raster_next sta RASTER - //SEG107 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG108 [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG107 [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp breturn - //SEG109 irq::@return + //SEG108 irq::@return breturn: - //SEG110 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG109 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -1896,26 +1863,26 @@ irq: { regy: ldy #00 rti - //SEG111 irq::@2 + //SEG110 irq::@2 b2: - //SEG112 [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG111 [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt_13 - //SEG113 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG112 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next_1 - //SEG114 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG113 [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos_1 - //SEG115 [77] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + //SEG114 [76] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] toSpritePtr2_from_b2: jmp toSpritePtr2 - //SEG116 irq::toSpritePtr2 + //SEG115 irq::toSpritePtr2 toSpritePtr2: jmp b9 - //SEG117 irq::@9 + //SEG116 irq::@9 b9: - //SEG118 [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG117 [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 jmp b3_from_b9 @@ -1939,92 +1906,92 @@ Statement [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a Statement [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a +Statement [11] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::s2#0 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::s2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] -Statement [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 [ init_sprites::s#2 init_sprites::xpos#2 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 ] ) always clobbers reg byte a -Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 [ init_sprites::s#2 init_sprites::xpos#2 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 ] ) always clobbers reg byte a -Statement [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ init_sprites::s#2 init_sprites::xpos#1 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#1 ] ) always clobbers reg byte a -Statement [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y -Statement [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [63] (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 -Statement [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a +Statement [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [37] (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:8::sprites_init:16 [ 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:2 [ sprites_init::s#2 sprites_init::s#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Statement [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y +Statement [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [62] (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 +Statement [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] -Statement [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [73] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [72] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a Statement [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a +Statement [11] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:8 [ ] ) always clobbers reg byte a +Statement [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:8::init_sprites:11 [ ] ) always clobbers reg byte a -Statement [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::s2#0 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::s2#0 ] ) always clobbers reg byte a -Statement [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 [ init_sprites::s#2 init_sprites::xpos#2 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 ] ) always clobbers reg byte a -Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 [ init_sprites::s#2 init_sprites::xpos#2 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#2 ] ) always clobbers reg byte a -Statement [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ init_sprites::s#2 init_sprites::xpos#1 ] ( main:8::init_sprites:11 [ init_sprites::s#2 init_sprites::xpos#1 ] ) always clobbers reg byte a -Statement [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y -Statement [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [63] (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 -Statement [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a -Statement [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [73] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , +Statement [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:8::sprites_irq_init:18 [ ] ) always clobbers reg byte a +Statement [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:8::sprites_init:16 [ ] ) always clobbers reg byte a +Statement [37] (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:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:8::sprites_init:16 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y +Statement [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [62] (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 +Statement [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a +Statement [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [72] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:4 , Potential registers zp ZP_BYTE:5 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:6 [ irq_raster_next#0 ] : zp ZP_BYTE:6 , Potential registers zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:7 , Potential registers zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:8 , Potential registers zp ZP_BYTE:9 [ irq_cnt#0 ] : zp ZP_BYTE:9 , -Potential registers zp ZP_BYTE:10 [ init_sprites::s2#0 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ sprites_init::s2#0 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ irq::ypos#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ irq::ptr#0 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ irq::ptr#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , @@ -2039,16 +2006,16 @@ Potential registers zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:21 , REGISTER UPLIFT SCOPES Uplift Scope [] 20: zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:19 [ irq_cnt#13 ] 20: zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] 8.33: zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] 4: zp ZP_BYTE:15 [ irq_cnt#1 ] 1: zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] 0.33: zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] 0.29: zp ZP_BYTE:9 [ irq_cnt#0 ] 0.25: zp ZP_BYTE:6 [ irq_raster_next#0 ] -Uplift Scope [init_sprites] 25.3: zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] 22: zp ZP_BYTE:10 [ init_sprites::s2#0 ] 15.58: zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:10 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Uplift Scope [irq] 12.67: zp ZP_BYTE:5 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] 4: zp ZP_BYTE:14 [ irq::ptr#2 ] 4: zp ZP_BYTE:18 [ irq::$3 ] 3: zp ZP_BYTE:12 [ irq::ptr#0 ] 2.67: zp ZP_BYTE:13 [ irq::ptr#1 ] 2.5: zp ZP_BYTE:11 [ irq::ypos#0 ] -Uplift Scope [init_irq] +Uplift Scope [sprites_irq_init] Uplift Scope [main] Uplifting [] best 1901 combination zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] zp ZP_BYTE:19 [ irq_cnt#13 ] zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:15 [ irq_cnt#1 ] zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] zp ZP_BYTE:9 [ irq_cnt#0 ] zp ZP_BYTE:6 [ irq_raster_next#0 ] -Uplifting [init_sprites] best 1731 combination reg byte x [ init_sprites::s#2 init_sprites::s#1 ] reg byte a [ init_sprites::s2#0 ] zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Uplifting [sprites_init] best 1731 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Uplifting [irq] best 1702 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte x [ irq::ptr#2 ] reg byte a [ irq::$3 ] reg byte a [ irq::ptr#0 ] zp ZP_BYTE:13 [ irq::ptr#1 ] zp ZP_BYTE:11 [ irq::ypos#0 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [init_irq] best 1702 combination +Uplifting [sprites_irq_init] best 1702 combination Uplifting [main] best 1702 combination Attempting to uplift remaining variables inzp ZP_BYTE:16 [ irq_sprite_ypos#2 ] Uplifting [] best 1702 combination zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] @@ -2060,8 +2027,8 @@ Attempting to uplift remaining variables inzp ZP_BYTE:20 [ irq_sprite_ypos#1 ] Uplifting [] best 1702 combination zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ irq_sprite_ptr#1 ] Uplifting [] best 1702 combination zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] -Uplifting [init_sprites] best 1702 combination zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 1702 combination zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] Uplifting [] best 1702 combination zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ irq_cnt#1 ] @@ -2085,15 +2052,15 @@ Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ irq_cnt#0 Coalescing zero page register [ zp ZP_BYTE:7 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] ] Coalescing zero page register [ zp ZP_BYTE:9 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:19 [ irq_cnt#13 ] ] -Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:4 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] Interrupt procedure irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG72 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG110 [73] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG110 [73] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG71 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG109 [72] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG109 [72] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2184,283 +2151,281 @@ bend_from_b8: bend: //SEG19 main main: { - //SEG20 [11] call init_sprites - //SEG21 [27] phi from main to init_sprites [phi:main->init_sprites] - init_sprites_from_main: - jsr init_sprites - //SEG22 [12] phi from main to main::@7 [phi:main->main::@7] - b7_from_main: - jmp b7 - //SEG23 main::@7 - b7: - //SEG24 [13] call init_irq - jsr init_irq + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + jmp vicSelectGfxBank1 + //SEG20 main::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG21 [11] *((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 + //SEG22 [12] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG23 main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG24 main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG25 [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG26 [14] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG27 main::toD0181 + toD0181: + jmp b8 + //SEG28 main::@8 + b8: + //SEG29 [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG30 [16] call sprites_init + jsr sprites_init + //SEG31 [17] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + b9_from_b8: + jmp b9 + //SEG32 main::@9 + b9: + //SEG33 [18] call sprites_irq_init + jsr sprites_irq_init jmp b2 - //SEG25 main::@2 + //SEG34 main::@2 b2: - //SEG26 [14] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN jmp b2 } -//SEG27 init_irq -init_irq: { - //SEG28 asm { sei } +//SEG36 sprites_irq_init +sprites_irq_init: { + //SEG37 asm { sei } sei - //SEG29 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG30 asm { ldaCIA1_INTERRUPT } + //SEG39 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG31 [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG32 [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG33 [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG34 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG43 [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG35 [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG36 [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG37 [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG38 asm { cli } + //SEG47 asm { cli } cli jmp breturn - //SEG39 init_irq::@return + //SEG48 sprites_irq_init::@return breturn: - //SEG40 [26] return + //SEG49 [31] return rts } -//SEG41 init_sprites -init_sprites: { - .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 - .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f +//SEG50 sprites_init +sprites_init: { .label xpos = 2 - jmp vicSelectGfxBank1 - //SEG42 init_sprites::vicSelectGfxBank1 - vicSelectGfxBank1: - //SEG43 [28] *((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 - //SEG44 [29] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] - vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: - jmp vicSelectGfxBank1_toDd001 - //SEG45 init_sprites::vicSelectGfxBank1_toDd001 - vicSelectGfxBank1_toDd001: - jmp vicSelectGfxBank1_b1 - //SEG46 init_sprites::vicSelectGfxBank1_@1 - vicSelectGfxBank1_b1: - //SEG47 [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 - lda #vicSelectGfxBank1_toDd001_return - sta CIA2_PORT_A - //SEG48 [31] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] - toD0181_from_vicSelectGfxBank1_b1: - jmp toD0181 - //SEG49 init_sprites::toD0181 - toD0181: - jmp b4 - //SEG50 init_sprites::@4 - b4: - //SEG51 [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 - lda #toD0181_return - sta D018 - //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG56 [37] phi from init_sprites::@4 to init_sprites::@1 [phi:init_sprites::@4->init_sprites::@1] - b1_from_b4: - //SEG57 [37] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::@4->init_sprites::@1#0] -- vbuz1=vbuc1 - lda #$18+$e*8 + //SEG55 [36] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + b1_from_sprites_init: + //SEG56 [36] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 - //SEG58 [37] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::@4->init_sprites::@1#1] -- vbuxx=vbuc1 + //SEG57 [36] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG59 [37] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] + //SEG58 [36] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG60 [37] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy - //SEG61 [37] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy + //SEG59 [36] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG60 [36] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG62 init_sprites::@1 + //SEG61 sprites_init::@1 b1: - //SEG63 [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG62 [37] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG64 [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG63 [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG65 [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG66 [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG65 [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG67 [42] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuxx=_inc_vbuxx + //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG68 [43] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG67 [42] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG69 init_sprites::@return + //SEG68 sprites_init::@return breturn: - //SEG70 [44] return + //SEG69 [43] return rts } -//SEG71 irq +//SEG70 irq irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG72 entry interrupt(HARDWARE_CLOBBER) + //SEG71 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG73 [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG74 [46] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG75 [47] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 jmp b1 - //SEG79 irq::@1 + //SEG78 irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG79 [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos bne b1 jmp b5 - //SEG81 irq::@5 + //SEG80 irq::@5 b5: - //SEG82 [52] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 + //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 lda irq_sprite_ptr - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa + //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa + //SEG83 [53] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa tax inx - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG84 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+2 - //SEG87 [57] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG86 [56] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx inx - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+3 - //SEG89 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG88 [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG90 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG89 [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a beq b2 jmp b6 - //SEG91 irq::@6 + //SEG90 irq::@6 b6: - //SEG92 [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG91 [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_raster_next sta irq_raster_next - //SEG93 [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG92 [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG94 [63] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG93 [62] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG95 [64] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + //SEG94 [63] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] b3_from_b6: b3_from_b9: - //SEG96 [64] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + //SEG95 [63] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy jmp b3 - //SEG97 irq::@3 + //SEG96 irq::@3 b3: - //SEG98 [65] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG97 [64] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG99 [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG98 [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG100 [67] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG99 [66] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #3 bne b4_from_b3 jmp b8 - //SEG101 irq::@8 + //SEG100 irq::@8 b8: - //SEG102 [68] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + //SEG101 [67] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG103 [69] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + //SEG102 [68] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] b4_from_b3: b4_from_b8: - //SEG104 [69] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + //SEG103 [68] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy jmp b4 - //SEG105 irq::@4 + //SEG104 irq::@4 b4: - //SEG106 [70] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG107 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG108 [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG107 [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp breturn - //SEG109 irq::@return + //SEG108 irq::@return breturn: - //SEG110 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG109 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG111 irq::@2 + //SEG110 irq::@2 b2: - //SEG112 [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG111 [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG113 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG112 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG114 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG113 [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG115 [77] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + //SEG114 [76] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] toSpritePtr2_from_b2: jmp toSpritePtr2 - //SEG116 irq::toSpritePtr2 + //SEG115 irq::toSpritePtr2 toSpritePtr2: jmp b9 - //SEG117 irq::@9 + //SEG116 irq::@9 b9: - //SEG118 [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG117 [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b3_from_b9 @@ -2486,14 +2451,14 @@ Removing instruction jmp toSpritePtr1 Removing instruction jmp b9 Removing instruction jmp b8 Removing instruction jmp bend -Removing instruction jmp b7 -Removing instruction jmp b2 -Removing instruction jmp breturn Removing instruction jmp vicSelectGfxBank1 Removing instruction jmp vicSelectGfxBank1_toDd001 Removing instruction jmp vicSelectGfxBank1_b1 Removing instruction jmp toD0181 -Removing instruction jmp b4 +Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 @@ -2519,11 +2484,11 @@ Removing instruction toSpritePtr1: Removing instruction b8_from_b9: Removing instruction main_from_b8: Removing instruction bend_from_b8: -Removing instruction b7_from_main: Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_toDd001: Removing instruction toD0181_from_vicSelectGfxBank1_b1: Removing instruction toD0181: +Removing instruction b9_from_b8: Removing instruction b1_from_b1: Removing instruction b3_from_b6: Removing instruction b3_from_b9: @@ -2536,13 +2501,12 @@ Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b9: Removing instruction b8: Removing instruction bend: -Removing instruction init_sprites_from_main: -Removing instruction b7: -Removing instruction breturn: Removing instruction vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_b1: -Removing instruction b4: -Removing instruction b1_from_b4: +Removing instruction b8: +Removing instruction b9: +Removing instruction breturn: +Removing instruction b1_from_sprites_init: Removing instruction breturn: Removing instruction b5: Removing instruction b6: @@ -2678,50 +2642,10 @@ FINAL SYMBOL TABLE (byte) VIC_RST8 (byte) WHITE (byte) YELLOW -(byte) current_piece_color +(byte) current_piece_char (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -(void()) init_irq() -(label) init_irq::@return -(void()) init_sprites() -(label) init_sprites::@1 -(label) init_sprites::@4 -(label) init_sprites::@return -(byte) init_sprites::s -(byte) init_sprites::s#1 reg byte x 16.5 -(byte) init_sprites::s#2 reg byte x 8.8 -(byte) init_sprites::s2 -(byte) init_sprites::s2#0 reg byte a 22.0 -(label) init_sprites::toD0181 -(word~) init_sprites::toD0181_$0 -(word~) init_sprites::toD0181_$1 -(word~) init_sprites::toD0181_$2 -(byte~) init_sprites::toD0181_$3 -(word~) init_sprites::toD0181_$4 -(byte~) init_sprites::toD0181_$5 -(byte~) init_sprites::toD0181_$6 -(byte~) init_sprites::toD0181_$7 -(byte~) init_sprites::toD0181_$8 -(byte*) init_sprites::toD0181_gfx -(byte) init_sprites::toD0181_return -(const byte) init_sprites::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 -(byte*) init_sprites::toD0181_screen -(label) init_sprites::vicSelectGfxBank1 -(byte~) init_sprites::vicSelectGfxBank1_$0 -(label) init_sprites::vicSelectGfxBank1_@1 -(byte*) init_sprites::vicSelectGfxBank1_gfx -(label) init_sprites::vicSelectGfxBank1_toDd001 -(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 -(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx -(byte) init_sprites::vicSelectGfxBank1_toDd001_return -(const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 -(byte) init_sprites::xpos -(byte) init_sprites::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 -(byte) init_sprites::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) irq() (byte~) irq::$3 reg byte a 4.0 (label) irq::@1 @@ -2769,8 +2693,48 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:4 20.0 (void()) main() (label) main::@2 -(label) main::@7 +(label) main::@8 +(label) main::@9 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(void()) sprites_init() +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#1 reg byte x 16.5 +(byte) sprites_init::s#2 reg byte x 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 reg byte a 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 +(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 +(void()) sprites_irq_init() +(label) sprites_irq_init::@return (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 @@ -2779,14 +2743,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) toSpritePtr1_sprite -reg byte x [ init_sprites::s#2 init_sprites::s#1 ] -zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +reg byte x [ sprites_init::s#2 sprites_init::s#1 ] +zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] zp ZP_BYTE:3 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] zp ZP_BYTE:4 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] zp ZP_BYTE:5 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] zp ZP_BYTE:6 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] -reg byte a [ init_sprites::s2#0 ] +reg byte a [ sprites_init::s2#0 ] reg byte a [ irq::ypos#0 ] reg byte a [ irq::ptr#0 ] reg byte x [ irq::ptr#1 ] @@ -2869,236 +2833,235 @@ bbegin: //SEG18 @end //SEG19 main main: { - //SEG20 [11] call init_sprites - //SEG21 [27] phi from main to init_sprites [phi:main->init_sprites] - jsr init_sprites - //SEG22 [12] phi from main to main::@7 [phi:main->main::@7] - //SEG23 main::@7 - //SEG24 [13] call init_irq - jsr init_irq - //SEG25 main::@2 + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + //SEG20 main::vicSelectGfxBank1 + //SEG21 [11] *((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 + //SEG22 [12] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG23 main::vicSelectGfxBank1_toDd001 + //SEG24 main::vicSelectGfxBank1_@1 + //SEG25 [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG26 [14] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG27 main::toD0181 + //SEG28 main::@8 + //SEG29 [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG30 [16] call sprites_init + jsr sprites_init + //SEG31 [17] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG32 main::@9 + //SEG33 [18] call sprites_irq_init + jsr sprites_irq_init + //SEG34 main::@2 b2: - //SEG26 [14] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN#0) ← ++ *((const byte*) PLAYFIELD_SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN jmp b2 } -//SEG27 init_irq -init_irq: { - //SEG28 asm { sei } +//SEG36 sprites_irq_init +sprites_irq_init: { + //SEG37 asm { sei } sei - //SEG29 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG30 asm { ldaCIA1_INTERRUPT } + //SEG39 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG31 [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG32 [19] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG33 [20] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG34 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG43 [26] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG35 [22] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG36 [23] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG37 [24] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG38 asm { cli } + //SEG47 asm { cli } cli - //SEG39 init_irq::@return - //SEG40 [26] return + //SEG48 sprites_irq_init::@return + //SEG49 [31] return rts } -//SEG41 init_sprites -init_sprites: { - .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 - .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f +//SEG50 sprites_init +sprites_init: { .label xpos = 2 - //SEG42 init_sprites::vicSelectGfxBank1 - //SEG43 [28] *((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 - //SEG44 [29] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] - //SEG45 init_sprites::vicSelectGfxBank1_toDd001 - //SEG46 init_sprites::vicSelectGfxBank1_@1 - //SEG47 [30] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 - lda #vicSelectGfxBank1_toDd001_return - sta CIA2_PORT_A - //SEG48 [31] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] - //SEG49 init_sprites::toD0181 - //SEG50 init_sprites::@4 - //SEG51 [32] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 - lda #toD0181_return - sta D018 - //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG56 [37] phi from init_sprites::@4 to init_sprites::@1 [phi:init_sprites::@4->init_sprites::@1] - //SEG57 [37] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::@4->init_sprites::@1#0] -- vbuz1=vbuc1 - lda #$18+$e*8 + //SEG55 [36] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG56 [36] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 - //SEG58 [37] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::@4->init_sprites::@1#1] -- vbuxx=vbuc1 + //SEG57 [36] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG59 [37] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] - //SEG60 [37] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy - //SEG61 [37] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy - //SEG62 init_sprites::@1 + //SEG58 [36] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG59 [36] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG60 [36] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG61 sprites_init::@1 b1: - //SEG63 [38] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG62 [37] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG64 [39] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG63 [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG65 [40] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG66 [41] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG65 [40] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG67 [42] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuxx=_inc_vbuxx + //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG68 [43] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG67 [42] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG69 init_sprites::@return - //SEG70 [44] return + //SEG68 sprites_init::@return + //SEG69 [43] return rts } -//SEG71 irq +//SEG70 irq irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG72 entry interrupt(HARDWARE_CLOBBER) + //SEG71 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG73 [45] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG74 [46] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG75 [47] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG76 [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG77 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG79 irq::@1 + //SEG78 irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG79 [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos bne b1 - //SEG81 irq::@5 - //SEG82 [52] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 + //SEG80 irq::@5 + //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 lda irq_sprite_ptr - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa + //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa + //SEG83 [53] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa tax inx - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG84 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+2 - //SEG87 [57] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG86 [56] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx inx - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS+3 - //SEG89 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG88 [58] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG90 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG89 [59] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a beq b2 - //SEG91 irq::@6 - //SEG92 [61] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG90 irq::@6 + //SEG91 [60] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_raster_next sta irq_raster_next - //SEG93 [62] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG92 [61] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG94 [63] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG93 [62] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG95 [64] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - //SEG96 [64] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - //SEG97 irq::@3 + //SEG94 [63] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + //SEG95 [63] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + //SEG96 irq::@3 b3: - //SEG98 [65] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG97 [64] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG99 [66] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG98 [65] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG100 [67] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG99 [66] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #3 bne b4 - //SEG101 irq::@8 - //SEG102 [68] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + //SEG100 irq::@8 + //SEG101 [67] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG103 [69] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - //SEG104 [69] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - //SEG105 irq::@4 + //SEG102 [68] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + //SEG103 [68] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + //SEG104 irq::@4 b4: - //SEG106 [70] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG107 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG108 [72] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG107 [71] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG109 irq::@return - //SEG110 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG108 irq::@return + //SEG109 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG111 irq::@2 + //SEG110 irq::@2 b2: - //SEG112 [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG111 [73] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG113 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG112 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG114 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG113 [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG115 [77] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - //SEG116 irq::toSpritePtr2 - //SEG117 irq::@9 - //SEG118 [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG114 [76] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + //SEG115 irq::toSpritePtr2 + //SEG116 irq::@9 + //SEG117 [77] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b3 diff --git a/src/test/ref/examples/tetris/test-sprites.sym b/src/test/ref/examples/tetris/test-sprites.sym index 7f11ce034..78230e8bd 100644 --- a/src/test/ref/examples/tetris/test-sprites.sym +++ b/src/test/ref/examples/tetris/test-sprites.sym @@ -123,50 +123,10 @@ (byte) VIC_RST8 (byte) WHITE (byte) YELLOW -(byte) current_piece_color +(byte) current_piece_char (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -(void()) init_irq() -(label) init_irq::@return -(void()) init_sprites() -(label) init_sprites::@1 -(label) init_sprites::@4 -(label) init_sprites::@return -(byte) init_sprites::s -(byte) init_sprites::s#1 reg byte x 16.5 -(byte) init_sprites::s#2 reg byte x 8.8 -(byte) init_sprites::s2 -(byte) init_sprites::s2#0 reg byte a 22.0 -(label) init_sprites::toD0181 -(word~) init_sprites::toD0181_$0 -(word~) init_sprites::toD0181_$1 -(word~) init_sprites::toD0181_$2 -(byte~) init_sprites::toD0181_$3 -(word~) init_sprites::toD0181_$4 -(byte~) init_sprites::toD0181_$5 -(byte~) init_sprites::toD0181_$6 -(byte~) init_sprites::toD0181_$7 -(byte~) init_sprites::toD0181_$8 -(byte*) init_sprites::toD0181_gfx -(byte) init_sprites::toD0181_return -(const byte) init_sprites::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 -(byte*) init_sprites::toD0181_screen -(label) init_sprites::vicSelectGfxBank1 -(byte~) init_sprites::vicSelectGfxBank1_$0 -(label) init_sprites::vicSelectGfxBank1_@1 -(byte*) init_sprites::vicSelectGfxBank1_gfx -(label) init_sprites::vicSelectGfxBank1_toDd001 -(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 -(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 -(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 -(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx -(byte) init_sprites::vicSelectGfxBank1_toDd001_return -(const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 -(byte) init_sprites::xpos -(byte) init_sprites::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 -(byte) init_sprites::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) irq() (byte~) irq::$3 reg byte a 4.0 (label) irq::@1 @@ -214,8 +174,48 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:4 20.0 (void()) main() (label) main::@2 -(label) main::@7 +(label) main::@8 +(label) main::@9 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(void()) sprites_init() +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#1 reg byte x 16.5 +(byte) sprites_init::s#2 reg byte x 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 reg byte a 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 +(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 +(void()) sprites_irq_init() +(label) sprites_irq_init::@return (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 @@ -224,14 +224,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) toSpritePtr1_sprite -reg byte x [ init_sprites::s#2 init_sprites::s#1 ] -zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +reg byte x [ sprites_init::s#2 sprites_init::s#1 ] +zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] zp ZP_BYTE:3 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] zp ZP_BYTE:4 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] zp ZP_BYTE:5 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] zp ZP_BYTE:6 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] -reg byte a [ init_sprites::s2#0 ] +reg byte a [ sprites_init::s2#0 ] reg byte a [ irq::ypos#0 ] reg byte a [ irq::ptr#0 ] reg byte x [ irq::ptr#1 ] diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index 6aeca78ed..6c1f3e8fa 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -1,22 +1,41 @@ .pc = $801 "Basic" -:BasicUpstart(main) +:BasicUpstart(bbegin) .pc = $80d "Program" + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f .label CIA2_PORT_A = $dd00 .label CIA2_PORT_A_DDR = $dd02 + .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const WHITE = 1 .const CYAN = 3 @@ -41,10 +60,12 @@ .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .label PLAYFIELD_SCREEN_ORIGINAL = $2c00 + .const IRQ_RASTER_FIRST = $31 .const current_movedown_slow = $32 .const current_movedown_fast = 5 .const COLLISION_NONE = 0 @@ -52,7 +73,13 @@ .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $13 + .label irq_raster_next = $14 + .label irq_sprite_ypos = $15 + .label irq_sprite_ptr = $16 + .label irq_cnt = $17 .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 @@ -63,31 +90,43 @@ .label current_piece_12 = 5 .label current_xpos_48 = 4 .label current_piece_gfx_53 = 5 - .label current_piece_char_62 = 7 - .label current_xpos_96 = 4 - .label current_piece_gfx_87 = 5 - .label current_piece_gfx_88 = 5 - .label current_piece_char_75 = 7 - .label current_piece_char_76 = 7 - .label current_piece_71 = 5 - .label current_piece_72 = 5 + .label current_piece_char_63 = 7 + .label current_xpos_104 = 4 + .label current_piece_gfx_95 = 5 + .label current_piece_gfx_96 = 5 + .label current_piece_char_83 = 7 + .label current_piece_char_84 = 7 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 + .label current_piece_76 = 5 +bbegin: + lda #IRQ_RASTER_FIRST + sta irq_raster_next + lda #$32 + sta irq_sprite_ypos + lda #toSpritePtr1_return + sta irq_sprite_ptr + lda #0 + sta irq_cnt + jsr main main: { - .label key_event = $14 - .label render = $15 + .label key_event = $18 + .label render = $19 jsr sid_rnd_init sei jsr render_init + jsr sprites_init + jsr sprites_irq_init jsr play_init jsr play_spawn_current jsr render_playfield lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_95 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 + sta current_piece_gfx_95+1 lda current_piece_char - sta current_piece_char_75 + sta current_piece_char_83 lda #3 sta current_xpos_48 ldx #0 @@ -136,13 +175,13 @@ main: { jsr render_playfield ldx current_ypos lda current_xpos - sta current_xpos_96 + sta current_xpos_104 lda current_piece_gfx - sta current_piece_gfx_88 + sta current_piece_gfx_96 lda current_piece_gfx+1 - sta current_piece_gfx_88+1 + sta current_piece_gfx_96+1 lda current_piece_char - sta current_piece_char_76 + sta current_piece_char_84 jsr render_current b10: dec BORDERCOL @@ -150,46 +189,28 @@ main: { } render_current: { .label ypos2 = 8 - .label l = 9 - .label screen_line = $16 + .label screen_line = $1a .label xpos = $b .label i = $a + .label l = 9 txa asl sta ypos2 lda #0 - sta i sta l + sta i b1: lda ypos2 - cmp #2*PLAYFIELD_LINES - bcs b2 - tay - lda screen_lines,y - sta screen_line - lda screen_lines+1,y - sta screen_line+1 - lda current_xpos_48 - sta xpos - ldx #0 + cmp #2 + beq !+ + bcs b13 + !: + b7: + lda #4 + clc + adc i + sta i b3: - ldy i - lda (current_piece_gfx_53),y - inc i - cmp #0 - beq b4 - lda xpos - cmp #PLAYFIELD_COLS - bcs b4 - lda current_piece_char_62 - ldy xpos - sta (screen_line),y - b4: - inc xpos - inx - cpx #4 - bne b3 - b2: lda ypos2 clc adc #2 @@ -199,31 +220,64 @@ render_current: { cmp #4 bne b1 rts + b13: + lda ypos2 + cmp #2*PLAYFIELD_LINES + bcc b2 + jmp b7 + b2: + ldy ypos2 + lda screen_lines,y + sta screen_line + lda screen_lines+1,y + sta screen_line+1 + lda current_xpos_48 + sta xpos + ldx #0 + b4: + ldy i + lda (current_piece_gfx_53),y + inc i + cmp #0 + beq b5 + lda xpos + cmp #PLAYFIELD_COLS + bcs b5 + lda current_piece_char_63 + ldy xpos + sta (screen_line),y + b5: + inc xpos + inx + cpx #4 + bne b4 + jmp b3 } render_playfield: { - .label line = 5 + .label screen_line = 5 .label i = 7 .label l = 4 - lda #0 + lda #PLAYFIELD_COLS*2 sta i + lda #2 sta l b1: lda l asl tay lda screen_lines,y - sta line + sta screen_line lda screen_lines+1,y - sta line+1 + sta screen_line+1 ldx #0 b2: ldy i lda playfield,y ldy #0 - sta (line),y - inc line + sta (screen_line),y + inc screen_line bne !+ - inc line+1 + inc screen_line+1 !: inc i inx @@ -257,9 +311,9 @@ play_move_rotate: { ldy current_ypos ldx orientation lda current_piece - sta current_piece_74 + sta current_piece_76 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_76+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -285,8 +339,8 @@ play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 - .label playfield_line = $16 - .label i = $18 + .label playfield_line = $1a + .label i = $1c .label col = $b .label l = 9 .label i_2 = $a @@ -384,9 +438,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_73 + sta current_piece_75 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_75+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -405,9 +459,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_72 + sta current_piece_74 lda current_piece+1 - sta current_piece_72+1 + sta current_piece_74+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -446,9 +500,9 @@ play_move_down: { sta play_collision.xpos ldx current_orientation lda current_piece - sta current_piece_71 + sta current_piece_73 lda current_piece+1 - sta current_piece_71+1 + sta current_piece_73+1 jsr play_collision cmp #COLLISION_NONE beq b6 @@ -786,10 +840,63 @@ play_init: { sta playfield_lines_idx+PLAYFIELD_LINES rts } +sprites_irq_init: { + sei + lda #IRQ_RASTER + sta IRQ_STATUS + lda CIA1_INTERRUPT + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + lda #PROCPORT_RAM_IO + sta PROCPORT + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + lda #IRQ_RASTER_FIRST + sta RASTER + lda #IRQ_RASTER + sta IRQ_ENABLE + lda #irq + sta HARDWARE_IRQ+1 + cli + rts +} +sprites_init: { + .label xpos = 2 + lda #$f + sta SPRITES_ENABLE + lda #0 + sta SPRITES_MC + sta SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + lda #$18+$f*8 + sta xpos + ldx #0 + b1: + txa + asl + tay + lda xpos + sta SPRITES_XPOS,y + lda #BLACK + sta SPRITES_COLS,x + lda #$18 + clc + adc xpos + sta xpos + inx + cpx #4 + bne b1 + rts +} render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - .label _15 = $c + .label _18 = $c .label li = 5 .label line = 5 .label l = 2 @@ -811,9 +918,9 @@ render_init: { sta BGCOL4 jsr fill jsr render_screen_original - lda #PLAYFIELD_SCREEN+$28+$10 + lda #>PLAYFIELD_SCREEN+2*$28+$10 sta li+1 ldx #0 b1: @@ -832,13 +939,13 @@ render_init: { inc li+1 !: inx - cpx #PLAYFIELD_LINES+2+1 + cpx #PLAYFIELD_LINES-1+1 bne b1 - lda #0 + lda #2 sta l - lda #COLS+$f + lda #>COLS+4*$28+$10 sta line+1 b2: ldx #0 @@ -846,15 +953,15 @@ render_init: { txa clc adc line - sta _15 + sta _18 lda #0 adc line+1 - sta _15+1 + sta _18+1 lda #WHITE ldy #0 - sta (_15),y + sta (_18),y inx - cpx #PLAYFIELD_COLS+1+1 + cpx #PLAYFIELD_COLS-1+1 bne b3 lda line clc @@ -865,7 +972,7 @@ render_init: { !: inc l lda l - cmp #PLAYFIELD_LINES+1+1 + cmp #PLAYFIELD_LINES-1+1 bne b2 rts } @@ -963,6 +1070,74 @@ sid_rnd_init: { lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL rts +} +irq: { + .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + sta rega+1 + stx regx+1 + lda #DARK_GREY + sta BORDERCOL + lda irq_sprite_ypos + sta SPRITES_YPOS + sta SPRITES_YPOS+2 + sta SPRITES_YPOS+4 + sta SPRITES_YPOS+6 + b1: + lda RASTER + cmp irq_sprite_ypos + bne b1 + lda irq_sprite_ptr + sta PLAYFIELD_SPRITE_PTRS + tax + inx + stx PLAYFIELD_SPRITE_PTRS+1 + stx PLAYFIELD_SPRITE_PTRS+2 + inx + stx PLAYFIELD_SPRITE_PTRS+3 + inc irq_cnt + lda irq_cnt + cmp #$a + beq b2 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + b3: + ldx irq_raster_next + txa + and #7 + cmp #3 + bne b4 + dex + b4: + stx RASTER + lda #IRQ_RASTER + sta IRQ_STATUS + lda #BLACK + sta BORDERCOL + rega: + lda #00 + regx: + ldx #00 + rti + b2: + lda #0 + sta irq_cnt + lda #IRQ_RASTER_FIRST + sta irq_raster_next + lda #$32 + sta irq_sprite_ypos + lda #toSpritePtr2_return + sta irq_sprite_ptr + jmp b3 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 @@ -983,9 +1158,9 @@ sid_rnd_init: { .align $40 PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 PIECES_CHARS: .byte $57, $58, $98, $58, $57, $57, $98 + screen_lines: .fill 2*PLAYFIELD_LINES, 0 playfield_lines: .fill 2*PLAYFIELD_LINES, 0 playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 .pc = PLAYFIELD_CHARSET "Inline" @@ -995,3 +1170,16 @@ sid_rnd_init: { .pc = PLAYFIELD_SCREEN_ORIGINAL "Inline" .import binary "nes-screen.iscr" +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index ff1bfd3d6..11f2abe7d 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -7,777 +7,907 @@ }} kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} - to:@27 -@27: scope:[] from @14 - [3] phi() - [4] call main - to:@end -@end: scope:[] from @27 - [5] phi() -main: scope:[main] from @27 + to:@18 +@18: scope:[] from @14 + kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + to:@19 +@19: scope:[] from @18 + [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:toSpritePtr1 +toSpritePtr1: scope:[] from @19 [6] phi() - [7] call sid_rnd_init + to:@31 +@31: scope:[] from toSpritePtr1 + [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@30 +@30: scope:[] from @31 + [9] phi() + [10] call main + to:@end +@end: scope:[] from @30 + [11] phi() +main: scope:[main] from @30 + [12] phi() + [13] call sid_rnd_init to:main::@21 main::@21: scope:[main] from main asm { sei } - [9] call render_init + [15] call render_init to:main::@22 main::@22: scope:[main] from main::@21 - [10] phi() - [11] call play_init + [16] phi() + [17] call sprites_init to:main::@23 main::@23: scope:[main] from main::@22 - [12] phi() - [13] call play_spawn_current + [18] phi() + [19] call sprites_irq_init to:main::@24 main::@24: scope:[main] from main::@23 - [14] phi() - [15] call render_playfield + [20] phi() + [21] call play_init to:main::@25 main::@25: scope:[main] from main::@24 - [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 - [17] (byte~) current_piece_char#75 ← (byte) current_piece_char#13 - [18] call render_current - [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [22] phi() + [23] call play_spawn_current + to:main::@26 +main::@26: scope:[main] from main::@25 + [24] phi() + [25] call render_playfield + to:main::@27 +main::@27: scope:[main] from main::@26 + [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 + [27] (byte~) current_piece_char#83 ← (byte) current_piece_char#13 + [28] call render_current + [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@10 main::@25 - [20] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) current_piece_char#16 ← phi( main::@10/(byte) current_piece_char#11 main::@25/(byte) current_piece_char#13 ) - [20] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [20] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@25/(byte*) current_piece_gfx#17 ) - [20] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@25/(byte*~) current_piece#70 ) +main::@1: scope:[main] from main::@10 main::@27 + [30] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) current_piece_char#16 ← phi( main::@10/(byte) current_piece_char#11 main::@27/(byte) current_piece_char#13 ) + [30] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [30] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@27/(byte*) current_piece_gfx#17 ) + [30] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@27/(byte*~) current_piece#72 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 main::@7 - [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 + [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 to:main::@9 main::@9: scope:[main] from main::@7 - [23] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [24] call keyboard_event_scan - to:main::@27 -main::@27: scope:[main] from main::@9 - [25] phi() - [26] call keyboard_event_get - [27] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@28 -main::@28: scope:[main] from main::@27 - [28] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [29] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [30] call play_move_down - [31] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 + [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [34] call keyboard_event_scan to:main::@29 -main::@29: scope:[main] from main::@28 - [32] (byte~) main::$10 ← (byte) play_move_down::return#3 - [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 - [34] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [35] call play_move_leftright - [36] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 +main::@29: scope:[main] from main::@9 + [35] phi() + [36] call keyboard_event_get + [37] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@30 main::@30: scope:[main] from main::@29 - [37] (byte~) main::$11 ← (byte) play_move_leftright::return#4 - [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 - [39] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [40] call play_move_rotate - [41] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + [38] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [39] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [40] call play_move_down + [41] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@31 main::@31: scope:[main] from main::@30 - [42] (byte~) main::$12 ← (byte) play_move_rotate::return#4 - [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 - [44] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@31 - [45] phi() - [46] call render_playfield + [42] (byte~) main::$12 ← (byte) play_move_down::return#3 + [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 + [44] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [45] call play_move_leftright + [46] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@32 -main::@32: scope:[main] from main::@19 - [47] (byte~) current_ypos#71 ← (byte) current_ypos#14 - [48] (byte~) current_xpos#96 ← (byte) current_xpos#20 - [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 - [50] (byte~) current_piece_char#76 ← (byte) current_piece_char#11 - [51] call render_current +main::@32: scope:[main] from main::@31 + [47] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 + [49] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [50] call play_move_rotate + [51] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + to:main::@33 +main::@33: scope:[main] from main::@32 + [52] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 + [54] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@33 + [55] phi() + [56] call render_playfield + to:main::@34 +main::@34: scope:[main] from main::@19 + [57] (byte~) current_ypos#78 ← (byte) current_ypos#14 + [58] (byte~) current_xpos#104 ← (byte) current_xpos#20 + [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 + [60] (byte~) current_piece_char#84 ← (byte) current_piece_char#11 + [61] call render_current to:main::@10 -main::@10: scope:[main] from main::@31 main::@32 - [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@33 main::@34 + [62] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@25 main::@32 - [53] (byte) current_piece_char#62 ← phi( main::@25/(byte~) current_piece_char#75 main::@32/(byte~) current_piece_char#76 ) - [53] (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) - [53] (byte) current_xpos#48 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) - [53] (byte) current_ypos#10 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) - [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_current: scope:[render_current] from main::@27 main::@34 + [63] (byte) current_piece_char#63 ← phi( main::@27/(byte~) current_piece_char#83 main::@34/(byte~) current_piece_char#84 ) + [63] (byte*) current_piece_gfx#53 ← phi( main::@27/(byte*~) current_piece_gfx#95 main::@34/(byte*~) current_piece_gfx#96 ) + [63] (byte) current_xpos#48 ← phi( main::@27/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@34/(byte~) current_xpos#104 ) + [63] (byte) current_ypos#10 ← phi( main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@34/(byte~) current_ypos#78 ) + [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 -render_current::@1: scope:[render_current] from render_current render_current::@2 - [55] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [55] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [55] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) - [56] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 - to:render_current::@6 -render_current::@6: scope:[render_current] from render_current::@1 - [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [58] (byte) render_current::xpos#0 ← (byte) current_xpos#48 - to:render_current::@3 -render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [59] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [59] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) - [59] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) - [61] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [62] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 +render_current::@1: scope:[render_current] from render_current render_current::@3 + [65] (byte) render_current::l#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@3/(byte) render_current::l#1 ) + [65] (byte) render_current::i#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@3/(byte) render_current::i#8 ) + [65] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) + [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 to:render_current::@7 -render_current::@7: scope:[render_current] from render_current::@3 - [63] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 - to:render_current::@8 -render_current::@8: scope:[render_current] from render_current::@7 - [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 - to:render_current::@4 -render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [65] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [66] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [67] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 - to:render_current::@2 -render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [68] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) +render_current::@7: scope:[render_current] from render_current::@1 render_current::@13 + [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + to:render_current::@3 +render_current::@3: scope:[render_current] from render_current::@5 render_current::@7 + [68] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return -render_current::@return: scope:[render_current] from render_current::@2 +render_current::@return: scope:[render_current] from render_current::@3 [72] return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@24 - [73] phi() +render_current::@13: scope:[render_current] from render_current::@1 + [73] if((byte) render_current::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + to:render_current::@7 +render_current::@2: scope:[render_current] from render_current::@13 + [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) + [75] (byte) render_current::xpos#0 ← (byte) current_xpos#48 + to:render_current::@4 +render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 + [76] (byte) render_current::c#2 ← phi( render_current::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@5/(byte) render_current::c#1 ) + [76] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) + [76] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) + [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) + [78] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 + [79] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 + to:render_current::@9 +render_current::@9: scope:[render_current] from render_current::@4 + [80] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 + to:render_current::@10 +render_current::@10: scope:[render_current] from render_current::@9 + [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 + to:render_current::@5 +render_current::@5: scope:[render_current] from render_current::@10 render_current::@4 render_current::@9 + [82] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [83] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [84] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 + to:render_current::@3 +render_playfield: scope:[render_playfield] from main::@19 main::@26 + [85] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [74] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [74] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [86] (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 ) + [86] (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 ) + [87] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [77] (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 ) - [77] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) - [77] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [79] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 - [80] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [81] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [82] 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 + [89] (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 ) + [89] (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 ) + [89] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [90] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [91] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [92] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [93] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [94] 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 - [83] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [84] 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 + [95] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [96] 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 - [85] return + [97] return to:@return -play_move_rotate: scope:[play_move_rotate] from main::@30 - [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 +play_move_rotate: scope:[play_move_rotate] from main::@32 + [98] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [87] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [99] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [88] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) - [88] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) - [88] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [89] return + [100] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) + [100] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) + [100] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [101] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [92] (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 ) - [93] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 - [94] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 - [95] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 - [97] call play_collision - [98] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [104] (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 ) + [105] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 + [106] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 + [107] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 + [109] call play_collision + [110] (byte) play_collision::return#13 ← (byte) play_collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [99] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [100] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [111] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + [112] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [101] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [113] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [105] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) - [105] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) - [105] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) - [105] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#71 play_move_leftright::@1/(byte*~) current_piece#72 play_move_leftright::@7/(byte*~) current_piece#73 play_move_rotate::@4/(byte*~) current_piece#74 ) - [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [117] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) + [117] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) + [117] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) + [117] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#73 play_move_leftright::@1/(byte*~) current_piece#74 play_move_leftright::@7/(byte*~) current_piece#75 play_move_rotate::@4/(byte*~) current_piece#76 ) + [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 - [108] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) - [108] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) - [108] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [110] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [120] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [120] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [120] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [122] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 - [111] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) - [111] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [111] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [112] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [113] 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 + [123] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [123] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [123] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [124] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@2 - [114] 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 + [126] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 - [115] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [116] return + [127] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [128] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [118] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [130] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [119] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [131] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [120] 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 + [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [121] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [122] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [123] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [133] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [134] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [135] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 to:play_collision::@17 play_collision::@17: scope:[play_collision] from play_collision::@3 - [124] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [125] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [126] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [136] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [137] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [138] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 to:play_collision::@return play_collision::@20: scope:[play_collision] from play_collision::@17 - [127] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [139] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [128] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [140] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@29 - [129] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from main::@31 + [141] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [130] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [142] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [131] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [132] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 - [133] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 - [135] call play_collision - [136] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [143] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [144] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 + [145] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 + [147] call play_collision + [148] (byte) play_collision::return#12 ← (byte) play_collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [137] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [138] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [149] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + [150] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [139] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 + [151] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [140] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) - [140] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [141] return + [152] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) + [152] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [153] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [142] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [143] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 - [144] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 - [146] call play_collision - [147] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [154] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 + [156] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 + [158] call play_collision + [159] (byte) play_collision::return#1 ← (byte) play_collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [148] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [149] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [160] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [161] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [150] (byte) current_xpos#5 ← -- (byte) current_xpos#16 + [162] (byte) current_xpos#5 ← -- (byte) current_xpos#16 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@28 - [151] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [152] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from main::@30 + [163] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 + [164] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [153] phi() + [165] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [154] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [155] call keyboard_event_pressed - [156] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [166] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [167] call keyboard_event_pressed + [168] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [157] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [158] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [169] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [170] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [159] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [171] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [160] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [172] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [161] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [162] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [173] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [174] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [163] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [175] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [164] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [165] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [176] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [177] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [166] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [167] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 - [168] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 - [170] call play_collision - [171] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [178] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [179] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 + [180] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 + [182] call play_collision + [183] (byte) play_collision::return#0 ← (byte) play_collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [172] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [173] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [184] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [185] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [174] phi() - [175] call play_lock_current + [186] phi() + [187] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [176] phi() - [177] call play_remove_lines + [188] phi() + [189] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [178] phi() - [179] call play_spawn_current - [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [190] phi() + [191] call play_spawn_current + [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 - [181] (byte) current_piece_char#21 ← phi( play_move_down::@20/(byte) current_piece_char#13 play_move_down::@6/(byte) current_piece_char#16 ) - [181] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) - [181] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) - [181] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) - [181] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#16 ) - [181] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) + [193] (byte) current_piece_char#21 ← phi( play_move_down::@20/(byte) current_piece_char#13 play_move_down::@6/(byte) current_piece_char#16 ) + [193] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) + [193] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) + [193] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) + [193] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#77 play_move_down::@6/(byte*) current_piece#16 ) + [193] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [182] (byte) current_piece_char#11 ← phi( play_move_down::@4/(byte) current_piece_char#16 play_move_down::@7/(byte) current_piece_char#21 ) - [182] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) - [182] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) - [182] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [182] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [182] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) - [182] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [182] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [183] return + [194] (byte) current_piece_char#11 ← phi( play_move_down::@4/(byte) current_piece_char#16 play_move_down::@7/(byte) current_piece_char#21 ) + [194] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) + [194] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) + [194] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [194] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [194] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) + [194] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [194] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [195] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [184] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 + [196] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 to:play_move_down::@7 -play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 - [185] phi() +play_spawn_current: scope:[play_spawn_current] from main::@25 play_move_down::@20 + [197] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [186] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) - [187] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + [198] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) + [199] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 - [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 - [191] return + [203] return to:@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [192] phi() - [193] call sid_rnd - [194] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [204] phi() + [205] call sid_rnd + [206] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 to:play_spawn_current::@7 play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 - [195] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [207] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 - [197] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [209] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [198] return + [210] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [199] phi() + [211] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [200] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) - [200] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) - [200] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + [212] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [212] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [212] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [201] (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 ) - [201] (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 ) - [201] (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 ) - [201] (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 ) - [202] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [203] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [204] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + [213] (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 ) + [213] (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 ) + [213] (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 ) + [213] (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 ) + [214] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [215] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [216] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@17 play_remove_lines::@2 - [205] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [206] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [207] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [208] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [209] 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 + [217] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [218] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [219] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [220] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [221] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@9 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 - [210] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [222] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 to:play_remove_lines::@10 play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 - [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 - [212] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) - [213] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [214] 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 + [224] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [225] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [226] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 - [215] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) - [216] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [227] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [228] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 - [217] return + [229] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [218] *((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 - [219] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [230] *((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 + [231] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@5 play_remove_lines::@17: scope:[play_remove_lines] from play_remove_lines::@2 - [220] phi() + [232] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 - [222] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) - [222] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) - [222] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) - [223] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [224] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 + [234] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [234] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [234] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [236] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [225] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) - [225] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) - [225] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) - [226] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [237] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [237] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [237] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [238] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 + [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [229] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [230] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [231] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [241] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [242] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [243] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [232] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [233] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [234] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [244] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [245] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [246] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [235] return + [247] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [236] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [248] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 - [237] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [249] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [238] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [239] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [240] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [241] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [242] (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) + [250] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [251] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [252] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [253] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [254] (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 - [243] return + [255] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@27 - [244] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@29 + [256] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [245] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [246] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [257] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [258] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [247] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [247] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [248] return + [259] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [259] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [260] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [249] phi() + [261] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [250] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [250] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [250] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [251] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [252] call keyboard_matrix_read - [253] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [262] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [262] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [262] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [263] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [264] call keyboard_matrix_read + [265] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [254] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [266] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [256] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [257] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [257] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [258] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [259] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [269] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [269] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [270] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [271] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [260] phi() - [261] call keyboard_event_pressed - [262] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [272] phi() + [273] call keyboard_event_pressed + [274] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [263] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [264] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [275] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [276] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [265] phi() + [277] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [266] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [267] call keyboard_event_pressed - [268] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [278] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [279] call keyboard_event_pressed + [280] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [269] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [270] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [281] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [282] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [272] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [273] call keyboard_event_pressed - [274] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [284] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [285] call keyboard_event_pressed + [286] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [275] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [276] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [287] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [288] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [278] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [279] call keyboard_event_pressed - [280] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [290] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [291] call keyboard_event_pressed + [292] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [281] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [282] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [293] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [294] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [284] return + [296] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [285] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [285] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [285] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [288] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [297] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [297] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [297] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [300] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [289] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [301] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [290] (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) - [291] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [302] (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) + [303] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [292] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [293] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [304] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [305] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [294] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [295] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [296] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [297] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [306] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [307] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [308] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [309] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [300] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [301] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [312] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [313] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [302] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [314] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [315] (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 - [304] return + [316] return to:@return -play_init: scope:[play_init] from main::@22 - [305] phi() +play_init: scope:[play_init] from main::@24 + [317] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [306] (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 ) - [306] (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 ) - [306] (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 ) - [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [309] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [310] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [311] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [312] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [313] 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 + [318] (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 ) + [318] (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 ) + [318] (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 ) + [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [321] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [322] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [323] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [324] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [325] 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 - [314] *((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 + [326] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@2 - [315] return + [327] return + to:@return +sprites_irq_init: scope:[sprites_irq_init] from main::@23 + asm { sei } + [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + asm { ldaCIA1_INTERRUPT } + [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + asm { cli } + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init + [339] return + to:@return +sprites_init: scope:[sprites_init] from main::@22 + [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [343] *((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 + [344] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [344] (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 ) + [345] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [349] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [350] 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 + [351] return to:@return render_init: scope:[render_init] from main::@21 - [316] phi() + [352] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [353] *((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 - [318] phi() + [354] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [355] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::toD0181 render_init::toD0181: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [320] phi() + [356] phi() to:render_init::@8 render_init::@8: scope:[render_init] from render_init::toD0181 - [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 - [322] *((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 - [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 - [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 - [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [327] call fill + [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 + [358] *((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 + [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 + [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 + [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [363] call fill to:render_init::@9 render_init::@9: scope:[render_init] from render_init::@8 - [328] phi() - [329] call render_screen_original + [364] phi() + [365] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@9 - [330] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@9/(const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [330] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 - [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [334] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [335] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [366] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@9/(const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [366] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 + [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [370] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [371] 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::@2 render_init::@2: scope:[render_init] from render_init::@1 render_init::@5 - [336] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) - [336] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 render_init::@5/(byte*) render_init::line#1 ) + [372] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 render_init::@5/(byte) render_init::l#1 ) + [372] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 render_init::@5/(byte*) render_init::line#1 ) to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 render_init::@3 - [337] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) - [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 - [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 - [340] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 - [341] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 + [373] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) + [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 + [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 + [376] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 + [377] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 to:render_init::@5 render_init::@5: scope:[render_init] from render_init::@3 - [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [343] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 - [344] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 + [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [379] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 + [380] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@5 - [345] return + [381] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@9 - [346] phi() + [382] phi() to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@7 - [347] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [347] (byte*) render_screen_original::orig#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::orig#1 ) - [347] (byte*) render_screen_original::screen#7 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN#0 render_screen_original::@7/(byte*) render_screen_original::screen#3 ) + [383] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [383] (byte*) render_screen_original::orig#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::orig#1 ) + [383] (byte*) render_screen_original::screen#7 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN#0 render_screen_original::@7/(byte*) render_screen_original::screen#3 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [348] (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 ) - [348] (byte*) render_screen_original::screen#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#7 render_screen_original::@2/(byte*) render_screen_original::screen#1 ) - [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 - [350] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 - [351] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [352] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [384] (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 ) + [384] (byte*) render_screen_original::screen#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#7 render_screen_original::@2/(byte*) render_screen_original::screen#1 ) + [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 + [386] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 + [387] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [388] 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 - [353] (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 ) - [353] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#1 render_screen_original::@3/(byte*) render_screen_original::screen#2 ) - [353] (byte*) render_screen_original::orig#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::orig#4 render_screen_original::@3/(byte*) render_screen_original::orig#1 ) - [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 - [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 - [356] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [357] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 - [358] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [359] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 + [389] (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 ) + [389] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#1 render_screen_original::@3/(byte*) render_screen_original::screen#2 ) + [389] (byte*) render_screen_original::orig#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::orig#4 render_screen_original::@3/(byte*) render_screen_original::orig#1 ) + [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 + [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 + [392] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [393] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 + [394] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [395] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) 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 - [360] (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 ) - [360] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#2 render_screen_original::@4/(byte*) render_screen_original::screen#3 ) - [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 - [362] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [363] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [364] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 + [396] (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 ) + [396] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#2 render_screen_original::@4/(byte*) render_screen_original::screen#3 ) + [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 + [398] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [399] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [400] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 to:render_screen_original::@7 render_screen_original::@7: scope:[render_screen_original] from render_screen_original::@4 - [365] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [366] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 + [401] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [402] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 - [367] return + [403] return to:@return fill: scope:[fill] from render_init::@8 - [368] phi() + [404] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [369] (byte*) fill::addr#2 ← phi( fill/(const byte*) COLS#0 fill::@1/(byte*) fill::addr#1 ) - [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 - [371] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [405] (byte*) fill::addr#2 ← phi( fill/(const byte*) COLS#0 fill::@1/(byte*) fill::addr#1 ) + [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 + [407] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [373] return + [409] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [374] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [410] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [411] *((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 - [376] return + [412] return to:@return +irq: scope:[irq] from + [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 + [414] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [415] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 + [416] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 + [417] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 + [418] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 + to:irq::@1 +irq::@1: scope:[irq] from irq irq::@1 + [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 + to:irq::@5 +irq::@5: scope:[irq] from irq::@1 + [420] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [421] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 + [422] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 + [423] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 + [424] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 + [425] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 + [426] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 + to:irq::@6 +irq::@6: scope:[irq] from irq::@5 + [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [431] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:irq::@3 +irq::@3: scope:[irq] from irq::@6 irq::@9 + [432] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) + [433] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 + [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [435] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 + to:irq::@8 +irq::@8: scope:[irq] from irq::@3 + [436] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:irq::@4 +irq::@4: scope:[irq] from irq::@3 irq::@8 + [437] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) + [438] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 + [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + to:irq::@return +irq::@return: scope:[irq] from irq::@4 + [441] return + to:@return +irq::@2: scope:[irq] from irq::@5 + [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:irq::toSpritePtr2 +irq::toSpritePtr2: scope:[irq] from irq::@2 + [445] phi() + to:irq::@9 +irq::@9: scope:[irq] from irq::toSpritePtr2 + [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 + to:irq::@3 diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index 1944165d2..11c006e83 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -1,3 +1,4 @@ +Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() 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 @@ -5,6 +6,8 @@ Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN Inlined call (byte~) render_init::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_CHARSET +Inlined call (byte~) $3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) irq::$2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -324,14 +327,14 @@ keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan: *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@3 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - (byte) keyboard_events_size#71 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#74 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_modifiers#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_pressed::keycode#0 ← (byte) KEY_LSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - (byte) keyboard_events_size#69 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#71 ) + (byte) keyboard_events_size#71 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#74 ) (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@20/(byte) keyboard_modifiers#1 ) (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_pressed::return#0 ) (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#7 @@ -340,14 +343,14 @@ keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$16) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - (byte) keyboard_events_size#66 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#68 keyboard_event_scan::@26/(byte) keyboard_events_size#69 ) + (byte) keyboard_events_size#67 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#70 keyboard_event_scan::@26/(byte) keyboard_events_size#71 ) (byte) keyboard_modifiers#26 ← phi( keyboard_event_scan::@21/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte) keyboard_event_pressed::keycode#1 ← (byte) KEY_RSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#66 ) + (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#67 ) (byte) keyboard_modifiers#19 ← phi( keyboard_event_scan::@9/(byte) keyboard_modifiers#26 ) (byte) keyboard_event_pressed::return#8 ← phi( keyboard_event_scan::@9/(byte) keyboard_event_pressed::return#1 ) (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#8 @@ -356,7 +359,7 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$20) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - (byte) keyboard_events_size#68 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#69 ) + (byte) keyboard_events_size#70 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#71 ) (byte) keyboard_modifiers#10 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte~) keyboard_event_scan::$17 ← (byte) keyboard_modifiers#10 | (byte) KEY_MODIFIER_LSHIFT#0 (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 @@ -435,8 +438,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e (byte) keyboard_event_pressed::return#5 ← (byte) keyboard_event_pressed::return#11 return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@27 - (byte) keyboard_events_size#14 ← phi( main::@27/(byte) keyboard_events_size#6 ) +keyboard_event_get: scope:[keyboard_event_get] from main::@29 + (byte) keyboard_events_size#14 ← phi( main::@29/(byte) keyboard_events_size#6 ) (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size#14 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 to:keyboard_event_get::@3 @@ -457,8 +460,8 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get return to:@return @12: scope:[] from @9 - (byte) keyboard_modifiers#45 ← phi( @9/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#57 ← phi( @9/(byte) keyboard_events_size#0 ) + (byte) keyboard_modifiers#58 ← phi( @9/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#77 ← phi( @9/(byte) keyboard_events_size#0 ) (word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) 54286 (byte*) SID_VOICE3_FREQ_LOW#0 ← ((byte*)) (word/dword/signed dword) 54286 (byte*) SID_VOICE3_FREQ_HIGH#0 ← ((byte*)) (word/dword/signed dword) 54287 @@ -489,8 +492,8 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd return to:@return @14: scope:[] from @12 - (byte) keyboard_modifiers#39 ← phi( @12/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#48 ← phi( @12/(byte) keyboard_events_size#57 ) + (byte) keyboard_modifiers#56 ← phi( @12/(byte) keyboard_modifiers#58 ) + (byte) keyboard_events_size#75 ← phi( @12/(byte) keyboard_events_size#77 ) (byte*) PLAYFIELD_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*~) $1 ← (byte*) PLAYFIELD_SCREEN#0 + (word) SPRITE_PTRS#0 (byte*) PLAYFIELD_SPRITE_PTRS#0 ← (byte*~) $1 @@ -511,8 +514,7 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte*) PLAYFIELD_SCREEN_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) 11264 kickasm(location (byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} - (byte/signed word/word/dword/signed dword~) $3 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - (byte*[$3]) screen_lines#0 ← { fill( $3, 0) } + (byte*[PLAYFIELD_LINES#0]) screen_lines#0 ← { fill( PLAYFIELD_LINES#0, 0) } to:@18 render_init: scope:[render_init] from main::@21 (byte*) render_init::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN#0 @@ -583,51 +585,54 @@ render_init::@9: scope:[render_init] from render_init::@8 call render_screen_original to:render_init::@10 render_init::@10: scope:[render_init] from render_init::@9 - (byte*~) render_init::$7 ← (byte*) PLAYFIELD_SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*~) render_init::$8 ← (byte*~) render_init::$7 + (byte/signed byte/word/signed word/dword/signed dword) 16 - (byte*) render_init::li#0 ← (byte*~) render_init::$8 - (byte/signed word/word/dword/signed dword~) render_init::$9 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte/signed byte/word/signed word/dword/signed dword~) render_init::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*~) render_init::$8 ← (byte*) PLAYFIELD_SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) render_init::$7 + (byte*~) render_init::$9 ← (byte*~) render_init::$8 + (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) render_init::li#0 ← (byte*~) render_init::$9 + (byte/signed word/word/dword/signed dword~) render_init::$10 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_init::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@10 (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@10/(byte*) render_init::li#0 ) (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@10/(byte) render_init::i#0 ) - (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - *((byte*[$3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 + (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + *((byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte) render_init::i#1 ← (byte) render_init::i#2 + rangenext(0,render_init::$9) - (bool~) render_init::$11 ← (byte) render_init::i#1 != rangelast(0,render_init::$9) - if((bool~) render_init::$11) goto render_init::@1 + (byte) render_init::i#1 ← (byte) render_init::i#2 + rangenext(0,render_init::$10) + (bool~) render_init::$12 ← (byte) render_init::i#1 != rangelast(0,render_init::$10) + if((bool~) render_init::$12) goto render_init::@1 to:render_init::@4 render_init::@4: scope:[render_init] from render_init::@1 - (byte*~) render_init::$12 ← (byte*) COLS#0 + (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte*) render_init::line#0 ← (byte*~) render_init::$12 - (byte/signed word/word/dword/signed dword~) render_init::$13 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) render_init::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte/word/signed word/dword/signed dword~) render_init::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*~) render_init::$14 ← (byte*) COLS#0 + (byte/word/signed word/dword/signed dword~) render_init::$13 + (byte*~) render_init::$15 ← (byte*~) render_init::$14 + (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) render_init::line#0 ← (byte*~) render_init::$15 + (byte/signed word/word/dword/signed dword~) render_init::$16 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_init::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::@4 render_init::@5 (byte) render_init::l#4 ← phi( render_init::@4/(byte) render_init::l#0 render_init::@5/(byte) render_init::l#1 ) (byte*) render_init::line#4 ← phi( render_init::@4/(byte*) render_init::line#0 render_init::@5/(byte*) render_init::line#1 ) - (byte/signed word/word/dword/signed dword~) render_init::$14 ← (byte) PLAYFIELD_COLS#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte/signed word/word/dword/signed dword~) render_init::$17 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_init::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 render_init::@3 (byte) render_init::l#3 ← phi( render_init::@2/(byte) render_init::l#4 render_init::@3/(byte) render_init::l#3 ) (byte) render_init::c#2 ← phi( render_init::@2/(byte) render_init::c#0 render_init::@3/(byte) render_init::c#1 ) (byte*) render_init::line#2 ← phi( render_init::@2/(byte*) render_init::line#4 render_init::@3/(byte*) render_init::line#2 ) - (byte*~) render_init::$15 ← (byte*) render_init::line#2 + (byte) render_init::c#2 - *((byte*~) render_init::$15) ← (byte) WHITE#0 - (byte) render_init::c#1 ← (byte) render_init::c#2 + rangenext(0,render_init::$14) - (bool~) render_init::$16 ← (byte) render_init::c#1 != rangelast(0,render_init::$14) - if((bool~) render_init::$16) goto render_init::@3 + (byte*~) render_init::$18 ← (byte*) render_init::line#2 + (byte) render_init::c#2 + *((byte*~) render_init::$18) ← (byte) WHITE#0 + (byte) render_init::c#1 ← (byte) render_init::c#2 + rangenext(0,render_init::$17) + (bool~) render_init::$19 ← (byte) render_init::c#1 != rangelast(0,render_init::$17) + if((bool~) render_init::$19) goto render_init::@3 to:render_init::@5 render_init::@5: scope:[render_init] from render_init::@3 (byte) render_init::l#2 ← phi( render_init::@3/(byte) render_init::l#3 ) (byte*) render_init::line#3 ← phi( render_init::@3/(byte*) render_init::line#2 ) (byte*) render_init::line#1 ← (byte*) render_init::line#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte) render_init::l#1 ← (byte) render_init::l#2 + rangenext(0,render_init::$13) - (bool~) render_init::$17 ← (byte) render_init::l#1 != rangelast(0,render_init::$13) - if((bool~) render_init::$17) goto render_init::@2 + (byte) render_init::l#1 ← (byte) render_init::l#2 + rangenext(2,render_init::$16) + (bool~) render_init::$20 ← (byte) render_init::l#1 != rangelast(2,render_init::$16) + if((bool~) render_init::$20) goto render_init::@2 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@5 return @@ -697,164 +702,411 @@ render_screen_original::@7: scope:[render_screen_original] from render_screen_o render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@24 - (byte) render_playfield::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte/signed word/word/dword/signed dword~) render_playfield::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) render_playfield::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 +render_playfield: scope:[render_playfield] from main::@19 main::@26 + (byte/signed word/word/dword/signed dword~) render_playfield::$0 ← (byte) PLAYFIELD_COLS#0 * (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_playfield::i#0 ← (byte/signed word/word/dword/signed dword~) render_playfield::$0 + (byte/signed word/word/dword/signed dword~) render_playfield::$1 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_playfield::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 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_playfield::l#2 ← phi( render_playfield/(byte) render_playfield::l#0 render_playfield::@3/(byte) render_playfield::l#1 ) - (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) render_playfield::line#0 ← *((byte*[$3]) screen_lines#0 + (byte~) render_playfield::$1) - (byte/signed word/word/dword/signed dword~) render_playfield::$2 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) render_playfield::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) + (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 (byte) render_playfield::l#4 ← phi( render_playfield::@1/(byte) render_playfield::l#2 render_playfield::@2/(byte) render_playfield::l#4 ) (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) render_playfield::c#0 render_playfield::@2/(byte) render_playfield::c#1 ) - (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - *((byte*) render_playfield::line#2) ← *((byte[$2]) playfield#0 + (byte) render_playfield::i#2) - (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 + *((byte*) render_playfield::screen_line#2) ← *((byte[$2]) 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::$2) - (bool~) render_playfield::$3 ← (byte) render_playfield::c#1 != rangelast(0,render_playfield::$2) - if((bool~) render_playfield::$3) 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_playfield::l#3 ← phi( render_playfield::@2/(byte) render_playfield::l#4 ) - (byte) render_playfield::l#1 ← (byte) render_playfield::l#3 + rangenext(0,render_playfield::$0) - (bool~) render_playfield::$4 ← (byte) render_playfield::l#1 != rangelast(0,render_playfield::$0) - if((bool~) render_playfield::$4) goto render_playfield::@1 + (byte) render_playfield::l#1 ← (byte) render_playfield::l#3 + rangenext(2,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 to:@return -render_current: scope:[render_current] from main::@25 main::@32 - (byte) current_piece_char#62 ← phi( main::@25/(byte) current_piece_char#48 main::@32/(byte) current_piece_char#61 ) - (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*) current_piece_gfx#64 main::@32/(byte*) current_piece_gfx#67 ) - (byte) current_xpos#48 ← phi( main::@25/(byte) current_xpos#66 main::@32/(byte) current_xpos#67 ) - (byte) current_ypos#10 ← phi( main::@25/(byte) current_ypos#24 main::@32/(byte) current_ypos#25 ) +render_current: scope:[render_current] from main::@27 main::@34 + (byte) current_piece_char#63 ← phi( main::@27/(byte) current_piece_char#48 main::@34/(byte) current_piece_char#62 ) + (byte*) current_piece_gfx#53 ← phi( main::@27/(byte*) current_piece_gfx#64 main::@34/(byte*) current_piece_gfx#67 ) + (byte) current_xpos#48 ← phi( main::@27/(byte) current_xpos#66 main::@34/(byte) current_xpos#67 ) + (byte) current_ypos#10 ← phi( main::@27/(byte) current_ypos#24 main::@34/(byte) current_ypos#25 ) (byte) render_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte~) render_current::$0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_current::ypos2#0 ← (byte~) render_current::$0 (byte) render_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_current::@1 -render_current::@1: scope:[render_current] from render_current render_current::@2 - (byte) current_piece_char#52 ← phi( render_current/(byte) current_piece_char#62 render_current::@2/(byte) current_piece_char#63 ) - (byte) render_current::i#5 ← phi( render_current/(byte) render_current::i#0 render_current::@2/(byte) render_current::i#8 ) - (byte*) current_piece_gfx#37 ← phi( render_current/(byte*) current_piece_gfx#53 render_current::@2/(byte*) current_piece_gfx#54 ) - (byte) current_xpos#30 ← phi( render_current/(byte) current_xpos#48 render_current::@2/(byte) current_xpos#49 ) - (byte) render_current::l#3 ← phi( render_current/(byte) render_current::l#0 render_current::@2/(byte) render_current::l#1 ) - (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) - (byte/signed word/word/dword/signed dword~) render_current::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 - (bool~) render_current::$2 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$1 - (bool~) render_current::$3 ← ! (bool~) render_current::$2 - if((bool~) render_current::$3) goto render_current::@2 - to:render_current::@6 -render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - (byte) current_piece_char#63 ← phi( render_current::@1/(byte) current_piece_char#52 render_current::@4/(byte) current_piece_char#38 ) - (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#5 render_current::@4/(byte) render_current::i#3 ) - (byte*) current_piece_gfx#54 ← phi( render_current::@1/(byte*) current_piece_gfx#37 render_current::@4/(byte*) current_piece_gfx#23 ) - (byte) current_xpos#49 ← phi( render_current::@1/(byte) current_xpos#30 render_current::@4/(byte) current_xpos#68 ) - (byte) render_current::l#2 ← phi( render_current::@1/(byte) render_current::l#3 render_current::@4/(byte) render_current::l#4 ) - (byte) render_current::ypos2#3 ← phi( render_current::@1/(byte) render_current::ypos2#2 render_current::@4/(byte) render_current::ypos2#5 ) - (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) render_current::l#1 ← (byte) render_current::l#2 + rangenext(0,3) - (bool~) render_current::$9 ← (byte) render_current::l#1 != rangelast(0,3) - if((bool~) render_current::$9) goto render_current::@1 - to:render_current::@return -render_current::@6: scope:[render_current] from render_current::@1 - (byte) current_piece_char#39 ← phi( render_current::@1/(byte) current_piece_char#52 ) - (byte) render_current::l#8 ← phi( render_current::@1/(byte) render_current::l#3 ) - (byte) render_current::i#4 ← phi( render_current::@1/(byte) render_current::i#5 ) - (byte*) current_piece_gfx#24 ← phi( render_current::@1/(byte*) current_piece_gfx#37 ) +render_current::@1: scope:[render_current] from render_current render_current::@3 + (byte) current_piece_char#52 ← phi( render_current/(byte) current_piece_char#63 render_current::@3/(byte) current_piece_char#64 ) + (byte) render_current::l#5 ← phi( render_current/(byte) render_current::l#0 render_current::@3/(byte) render_current::l#1 ) + (byte*) current_piece_gfx#37 ← phi( render_current/(byte*) current_piece_gfx#53 render_current::@3/(byte*) current_piece_gfx#54 ) + (byte) render_current::i#5 ← phi( render_current/(byte) render_current::i#0 render_current::@3/(byte) render_current::i#8 ) + (byte) current_xpos#30 ← phi( render_current/(byte) current_xpos#48 render_current::@3/(byte) current_xpos#49 ) + (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) + (bool~) render_current::$1 ← (byte) render_current::ypos2#2 > (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte/signed word/word/dword/signed dword~) render_current::$2 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 + (bool~) render_current::$3 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$2 + (bool~) render_current::$4 ← (bool~) render_current::$1 && (bool~) render_current::$3 + if((bool~) render_current::$4) goto render_current::@2 + to:render_current::@7 +render_current::@2: scope:[render_current] from render_current::@1 + (byte) current_piece_char#38 ← phi( render_current::@1/(byte) current_piece_char#52 ) + (byte) render_current::l#9 ← phi( render_current::@1/(byte) render_current::l#5 ) + (byte) render_current::i#6 ← phi( render_current::@1/(byte) render_current::i#5 ) + (byte*) current_piece_gfx#23 ← phi( render_current::@1/(byte*) current_piece_gfx#37 ) (byte) current_xpos#13 ← phi( render_current::@1/(byte) current_xpos#30 ) - (byte) render_current::ypos2#4 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) - (byte*) render_current::screen_line#0 ← *((byte*[$3]) screen_lines#0 + (byte) render_current::ypos2#4) + (byte) render_current::ypos2#3 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) + (byte*) render_current::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#3) (byte) render_current::xpos#0 ← (byte) current_xpos#13 (byte) render_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:render_current::@4 +render_current::@7: scope:[render_current] from render_current::@1 + (byte) current_piece_char#72 ← phi( render_current::@1/(byte) current_piece_char#52 ) + (byte*) current_piece_gfx#68 ← phi( render_current::@1/(byte*) current_piece_gfx#37 ) + (byte) current_xpos#69 ← phi( render_current::@1/(byte) current_xpos#30 ) + (byte) render_current::l#4 ← phi( render_current::@1/(byte) render_current::l#5 ) + (byte) render_current::ypos2#6 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) + (byte) render_current::i#3 ← phi( render_current::@1/(byte) render_current::i#5 ) + (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_current::@3 -render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - (byte) current_xpos#80 ← phi( render_current::@4/(byte) current_xpos#68 render_current::@6/(byte) current_xpos#13 ) - (byte*) render_current::screen_line#3 ← phi( render_current::@4/(byte*) render_current::screen_line#4 render_current::@6/(byte*) render_current::screen_line#0 ) - (byte) current_piece_char#27 ← phi( render_current::@4/(byte) current_piece_char#38 render_current::@6/(byte) current_piece_char#39 ) - (byte) render_current::l#5 ← phi( render_current::@4/(byte) render_current::l#4 render_current::@6/(byte) render_current::l#8 ) - (byte) render_current::ypos2#6 ← phi( render_current::@4/(byte) render_current::ypos2#5 render_current::@6/(byte) render_current::ypos2#4 ) - (byte) render_current::c#3 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte) render_current::c#0 ) - (byte) render_current::xpos#5 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) - (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#3 render_current::@6/(byte) render_current::i#4 ) - (byte*) current_piece_gfx#12 ← phi( render_current::@4/(byte*) current_piece_gfx#23 render_current::@6/(byte*) current_piece_gfx#24 ) - (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#12 + (byte) render_current::i#2) - (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) render_current::$5 ← ! (bool~) render_current::$4 - if((bool~) render_current::$5) goto render_current::@4 - to:render_current::@7 -render_current::@4: scope:[render_current] from render_current::@3 render_current::@5 render_current::@8 - (byte*) render_current::screen_line#4 ← phi( render_current::@3/(byte*) render_current::screen_line#3 render_current::@5/(byte*) render_current::screen_line#5 render_current::@8/(byte*) render_current::screen_line#1 ) - (byte) current_piece_char#38 ← phi( render_current::@3/(byte) current_piece_char#27 render_current::@5/(byte) current_piece_char#53 render_current::@8/(byte) current_piece_char#9 ) - (byte) current_xpos#68 ← phi( render_current::@3/(byte) current_xpos#80 render_current::@5/(byte) current_xpos#81 render_current::@8/(byte) current_xpos#82 ) - (byte) render_current::i#3 ← phi( render_current::@3/(byte) render_current::i#1 render_current::@5/(byte) render_current::i#6 render_current::@8/(byte) render_current::i#7 ) - (byte*) current_piece_gfx#23 ← phi( render_current::@3/(byte*) current_piece_gfx#12 render_current::@5/(byte*) current_piece_gfx#38 render_current::@8/(byte*) current_piece_gfx#39 ) - (byte) render_current::l#4 ← phi( render_current::@3/(byte) render_current::l#5 render_current::@5/(byte) render_current::l#6 render_current::@8/(byte) render_current::l#7 ) - (byte) render_current::ypos2#5 ← phi( render_current::@3/(byte) render_current::ypos2#6 render_current::@5/(byte) render_current::ypos2#7 render_current::@8/(byte) render_current::ypos2#8 ) - (byte) render_current::c#2 ← phi( render_current::@3/(byte) render_current::c#3 render_current::@5/(byte) render_current::c#4 render_current::@8/(byte) render_current::c#5 ) - (byte) render_current::xpos#2 ← phi( render_current::@3/(byte) render_current::xpos#5 render_current::@5/(byte) render_current::xpos#6 render_current::@8/(byte) render_current::xpos#4 ) +render_current::@3: scope:[render_current] from render_current::@5 render_current::@7 + (byte) current_piece_char#64 ← phi( render_current::@5/(byte) current_piece_char#39 render_current::@7/(byte) current_piece_char#72 ) + (byte*) current_piece_gfx#54 ← phi( render_current::@5/(byte*) current_piece_gfx#24 render_current::@7/(byte*) current_piece_gfx#68 ) + (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#7 render_current::@7/(byte) render_current::i#1 ) + (byte) current_xpos#49 ← phi( render_current::@5/(byte) current_xpos#68 render_current::@7/(byte) current_xpos#69 ) + (byte) render_current::l#2 ← phi( render_current::@5/(byte) render_current::l#3 render_current::@7/(byte) render_current::l#4 ) + (byte) render_current::ypos2#4 ← phi( render_current::@5/(byte) render_current::ypos2#5 render_current::@7/(byte) render_current::ypos2#6 ) + (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_current::l#1 ← (byte) render_current::l#2 + rangenext(0,3) + (bool~) render_current::$10 ← (byte) render_current::l#1 != rangelast(0,3) + if((bool~) render_current::$10) goto render_current::@1 + to:render_current::@return +render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 + (byte) current_xpos#82 ← phi( render_current::@2/(byte) current_xpos#13 render_current::@5/(byte) current_xpos#68 ) + (byte*) render_current::screen_line#3 ← phi( render_current::@2/(byte*) render_current::screen_line#0 render_current::@5/(byte*) render_current::screen_line#4 ) + (byte) current_piece_char#27 ← phi( render_current::@2/(byte) current_piece_char#38 render_current::@5/(byte) current_piece_char#39 ) + (byte) render_current::l#7 ← phi( render_current::@2/(byte) render_current::l#9 render_current::@5/(byte) render_current::l#3 ) + (byte) render_current::ypos2#8 ← phi( render_current::@2/(byte) render_current::ypos2#3 render_current::@5/(byte) render_current::ypos2#5 ) + (byte) render_current::c#4 ← phi( render_current::@2/(byte) render_current::c#0 render_current::@5/(byte) render_current::c#1 ) + (byte) render_current::xpos#5 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) + (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#6 render_current::@5/(byte) render_current::i#7 ) + (byte*) current_piece_gfx#12 ← phi( render_current::@2/(byte*) current_piece_gfx#23 render_current::@5/(byte*) current_piece_gfx#24 ) + (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#12 + (byte) render_current::i#4) + (byte) render_current::i#2 ← ++ (byte) render_current::i#4 + (bool~) render_current::$5 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) render_current::$6 ← ! (bool~) render_current::$5 + if((bool~) render_current::$6) goto render_current::@5 + to:render_current::@9 +render_current::@5: scope:[render_current] from render_current::@10 render_current::@4 render_current::@6 + (byte*) render_current::screen_line#4 ← phi( render_current::@10/(byte*) render_current::screen_line#1 render_current::@4/(byte*) render_current::screen_line#3 render_current::@6/(byte*) render_current::screen_line#5 ) + (byte) current_piece_char#39 ← phi( render_current::@10/(byte) current_piece_char#9 render_current::@4/(byte) current_piece_char#27 render_current::@6/(byte) current_piece_char#53 ) + (byte) current_xpos#68 ← phi( render_current::@10/(byte) current_xpos#81 render_current::@4/(byte) current_xpos#82 render_current::@6/(byte) current_xpos#83 ) + (byte) render_current::i#7 ← phi( render_current::@10/(byte) render_current::i#9 render_current::@4/(byte) render_current::i#2 render_current::@6/(byte) render_current::i#10 ) + (byte*) current_piece_gfx#24 ← phi( render_current::@10/(byte*) current_piece_gfx#38 render_current::@4/(byte*) current_piece_gfx#12 render_current::@6/(byte*) current_piece_gfx#39 ) + (byte) render_current::l#3 ← phi( render_current::@10/(byte) render_current::l#6 render_current::@4/(byte) render_current::l#7 render_current::@6/(byte) render_current::l#8 ) + (byte) render_current::ypos2#5 ← phi( render_current::@10/(byte) render_current::ypos2#7 render_current::@4/(byte) render_current::ypos2#8 render_current::@6/(byte) render_current::ypos2#9 ) + (byte) render_current::c#2 ← phi( render_current::@10/(byte) render_current::c#3 render_current::@4/(byte) render_current::c#4 render_current::@6/(byte) render_current::c#5 ) + (byte) render_current::xpos#2 ← phi( render_current::@10/(byte) render_current::xpos#4 render_current::@4/(byte) render_current::xpos#5 render_current::@6/(byte) render_current::xpos#6 ) (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 (byte) render_current::c#1 ← (byte) render_current::c#2 + rangenext(0,3) - (bool~) render_current::$8 ← (byte) render_current::c#1 != rangelast(0,3) - if((bool~) render_current::$8) goto render_current::@3 - to:render_current::@2 -render_current::@7: scope:[render_current] from render_current::@3 - (byte) current_xpos#88 ← phi( render_current::@3/(byte) current_xpos#80 ) - (byte) render_current::i#9 ← phi( render_current::@3/(byte) render_current::i#1 ) - (byte*) current_piece_gfx#55 ← phi( render_current::@3/(byte*) current_piece_gfx#12 ) - (byte) render_current::l#9 ← phi( render_current::@3/(byte) render_current::l#5 ) - (byte) render_current::ypos2#9 ← phi( render_current::@3/(byte) render_current::ypos2#6 ) - (byte) render_current::c#6 ← phi( render_current::@3/(byte) render_current::c#3 ) - (byte*) render_current::screen_line#2 ← phi( render_current::@3/(byte*) render_current::screen_line#3 ) - (byte) current_piece_char#18 ← phi( render_current::@3/(byte) current_piece_char#27 ) - (byte) render_current::xpos#3 ← phi( render_current::@3/(byte) render_current::xpos#5 ) - (bool~) render_current::$6 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 - (bool~) render_current::$7 ← ! (bool~) render_current::$6 - if((bool~) render_current::$7) goto render_current::@5 - to:render_current::@8 -render_current::@5: scope:[render_current] from render_current::@7 - (byte*) render_current::screen_line#5 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) - (byte) current_piece_char#53 ← phi( render_current::@7/(byte) current_piece_char#18 ) - (byte) current_xpos#81 ← phi( render_current::@7/(byte) current_xpos#88 ) - (byte) render_current::i#6 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#38 ← phi( render_current::@7/(byte*) current_piece_gfx#55 ) - (byte) render_current::l#6 ← phi( render_current::@7/(byte) render_current::l#9 ) - (byte) render_current::ypos2#7 ← phi( render_current::@7/(byte) render_current::ypos2#9 ) - (byte) render_current::c#4 ← phi( render_current::@7/(byte) render_current::c#6 ) - (byte) render_current::xpos#6 ← phi( render_current::@7/(byte) render_current::xpos#3 ) - to:render_current::@4 -render_current::@8: scope:[render_current] from render_current::@7 - (byte) current_xpos#82 ← phi( render_current::@7/(byte) current_xpos#88 ) - (byte) render_current::i#7 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#39 ← phi( render_current::@7/(byte*) current_piece_gfx#55 ) - (byte) render_current::l#7 ← phi( render_current::@7/(byte) render_current::l#9 ) - (byte) render_current::ypos2#8 ← phi( render_current::@7/(byte) render_current::ypos2#9 ) - (byte) render_current::c#5 ← phi( render_current::@7/(byte) render_current::c#6 ) - (byte) render_current::xpos#4 ← phi( render_current::@7/(byte) render_current::xpos#3 ) - (byte*) render_current::screen_line#1 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) - (byte) current_piece_char#9 ← phi( render_current::@7/(byte) current_piece_char#18 ) + (bool~) render_current::$9 ← (byte) render_current::c#1 != rangelast(0,3) + if((bool~) render_current::$9) goto render_current::@4 + to:render_current::@3 +render_current::@9: scope:[render_current] from render_current::@4 + (byte) current_xpos#90 ← phi( render_current::@4/(byte) current_xpos#82 ) + (byte) render_current::i#11 ← phi( render_current::@4/(byte) render_current::i#2 ) + (byte*) current_piece_gfx#55 ← phi( render_current::@4/(byte*) current_piece_gfx#12 ) + (byte) render_current::l#10 ← phi( render_current::@4/(byte) render_current::l#7 ) + (byte) render_current::ypos2#10 ← phi( render_current::@4/(byte) render_current::ypos2#8 ) + (byte) render_current::c#6 ← phi( render_current::@4/(byte) render_current::c#4 ) + (byte*) render_current::screen_line#2 ← phi( render_current::@4/(byte*) render_current::screen_line#3 ) + (byte) current_piece_char#18 ← phi( render_current::@4/(byte) current_piece_char#27 ) + (byte) render_current::xpos#3 ← phi( render_current::@4/(byte) render_current::xpos#5 ) + (bool~) render_current::$7 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 + (bool~) render_current::$8 ← ! (bool~) render_current::$7 + if((bool~) render_current::$8) goto render_current::@6 + to:render_current::@10 +render_current::@6: scope:[render_current] from render_current::@9 + (byte*) render_current::screen_line#5 ← phi( render_current::@9/(byte*) render_current::screen_line#2 ) + (byte) current_piece_char#53 ← phi( render_current::@9/(byte) current_piece_char#18 ) + (byte) current_xpos#83 ← phi( render_current::@9/(byte) current_xpos#90 ) + (byte) render_current::i#10 ← phi( render_current::@9/(byte) render_current::i#11 ) + (byte*) current_piece_gfx#39 ← phi( render_current::@9/(byte*) current_piece_gfx#55 ) + (byte) render_current::l#8 ← phi( render_current::@9/(byte) render_current::l#10 ) + (byte) render_current::ypos2#9 ← phi( render_current::@9/(byte) render_current::ypos2#10 ) + (byte) render_current::c#5 ← phi( render_current::@9/(byte) render_current::c#6 ) + (byte) render_current::xpos#6 ← phi( render_current::@9/(byte) render_current::xpos#3 ) + to:render_current::@5 +render_current::@10: scope:[render_current] from render_current::@9 + (byte) current_xpos#81 ← phi( render_current::@9/(byte) current_xpos#90 ) + (byte) render_current::i#9 ← phi( render_current::@9/(byte) render_current::i#11 ) + (byte*) current_piece_gfx#38 ← phi( render_current::@9/(byte*) current_piece_gfx#55 ) + (byte) render_current::l#6 ← phi( render_current::@9/(byte) render_current::l#10 ) + (byte) render_current::ypos2#7 ← phi( render_current::@9/(byte) render_current::ypos2#10 ) + (byte) render_current::c#3 ← phi( render_current::@9/(byte) render_current::c#6 ) + (byte) render_current::xpos#4 ← phi( render_current::@9/(byte) render_current::xpos#3 ) + (byte*) render_current::screen_line#1 ← phi( render_current::@9/(byte*) render_current::screen_line#2 ) + (byte) current_piece_char#9 ← phi( render_current::@9/(byte) current_piece_char#18 ) *((byte*) render_current::screen_line#1 + (byte) render_current::xpos#4) ← (byte) current_piece_char#9 - to:render_current::@4 -render_current::@return: scope:[render_current] from render_current::@2 + to:render_current::@5 +render_current::@return: scope:[render_current] from render_current::@3 return to:@return @18: scope:[] from @14 - (byte) keyboard_modifiers#33 ← phi( @14/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#39 ← phi( @14/(byte) keyboard_events_size#48 ) - (byte) current_piece_char#44 ← phi( @14/(byte) current_piece_char#0 ) - (byte) current_ypos#55 ← phi( @14/(byte) current_ypos#0 ) - (byte) current_xpos#73 ← phi( @14/(byte) current_xpos#0 ) - (byte*) current_piece_gfx#62 ← phi( @14/(byte*) current_piece_gfx#0 ) + (byte) keyboard_modifiers#54 ← phi( @14/(byte) keyboard_modifiers#56 ) + (byte) keyboard_events_size#72 ← phi( @14/(byte) keyboard_events_size#75 ) + (byte) current_piece_char#80 ← phi( @14/(byte) current_piece_char#0 ) + (byte) current_ypos#76 ← phi( @14/(byte) current_ypos#0 ) + (byte) current_xpos#102 ← phi( @14/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#92 ← phi( @14/(byte*) current_piece_gfx#0 ) + kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + to:@19 +sprites_init: scope:[sprites_init] from main::@22 + *((byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + *((byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + *((byte*) SPRITES_EXPAND_Y#0) ← *((byte*) SPRITES_MC#0) + *((byte*) SPRITES_EXPAND_X#0) ← *((byte*) SPRITES_EXPAND_Y#0) + (byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 * (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 + (byte) sprites_init::xpos#0 ← (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 + (byte) sprites_init::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sprites_init::@1 +sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 + (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte) sprites_init::xpos#0 sprites_init::@1/(byte) sprites_init::xpos#1 ) + (byte) sprites_init::s#2 ← phi( sprites_init/(byte) sprites_init::s#0 sprites_init::@1/(byte) sprites_init::s#1 ) + (byte~) sprites_init::$2 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sprites_init::s2#0 ← (byte~) sprites_init::$2 + *((byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + *((byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (byte) BLACK#0 + (byte/signed word/word/dword/signed dword~) sprites_init::$3 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) sprites_init::xpos#1 ← (byte/signed word/word/dword/signed dword~) sprites_init::$3 + (byte) sprites_init::s#1 ← (byte) sprites_init::s#2 + rangenext(0,3) + (bool~) sprites_init::$4 ← (byte) sprites_init::s#1 != rangelast(0,3) + if((bool~) sprites_init::$4) goto sprites_init::@1 + to:sprites_init::@return +sprites_init::@return: scope:[sprites_init] from sprites_init::@1 + return + to:@return +@19: scope:[] from @18 + (byte) keyboard_modifiers#52 ← phi( @18/(byte) keyboard_modifiers#54 ) + (byte) keyboard_events_size#68 ← phi( @18/(byte) keyboard_events_size#72 ) + (byte) current_piece_char#79 ← phi( @18/(byte) current_piece_char#80 ) + (byte) current_ypos#75 ← phi( @18/(byte) current_ypos#76 ) + (byte) current_xpos#101 ← phi( @18/(byte) current_xpos#102 ) + (byte*) current_piece_gfx#91 ← phi( @18/(byte*) current_piece_gfx#92 ) + (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 + to:toSpritePtr1 +toSpritePtr1: scope:[] from @19 + (byte) irq_raster_next#20 ← phi( @19/(byte) irq_raster_next#0 ) + (byte) keyboard_modifiers#49 ← phi( @19/(byte) keyboard_modifiers#52 ) + (byte) keyboard_events_size#65 ← phi( @19/(byte) keyboard_events_size#68 ) + (byte) current_piece_char#73 ← phi( @19/(byte) current_piece_char#79 ) + (byte) current_ypos#71 ← phi( @19/(byte) current_ypos#75 ) + (byte) current_xpos#97 ← phi( @19/(byte) current_xpos#101 ) + (byte*) current_piece_gfx#85 ← phi( @19/(byte*) current_piece_gfx#91 ) + (byte) irq_sprite_ypos#20 ← phi( @19/(byte) irq_sprite_ypos#0 ) + (byte*) toSpritePtr1_sprite#1 ← phi( @19/(byte*) toSpritePtr1_sprite#0 ) + (word) toSpritePtr1_$0#0 ← ((word)) (byte*) toSpritePtr1_sprite#1 + (word) toSpritePtr1_$1#0 ← (word) toSpritePtr1_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) toSpritePtr1_$2#0 ← ((byte)) (word) toSpritePtr1_$1#0 + (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 + to:toSpritePtr1_@return +toSpritePtr1_@return: scope:[] from toSpritePtr1 + (byte) irq_raster_next#19 ← phi( toSpritePtr1/(byte) irq_raster_next#20 ) + (byte) keyboard_modifiers#45 ← phi( toSpritePtr1/(byte) keyboard_modifiers#49 ) + (byte) keyboard_events_size#57 ← phi( toSpritePtr1/(byte) keyboard_events_size#65 ) + (byte) current_piece_char#65 ← phi( toSpritePtr1/(byte) current_piece_char#73 ) + (byte) current_ypos#65 ← phi( toSpritePtr1/(byte) current_ypos#71 ) + (byte) current_xpos#91 ← phi( toSpritePtr1/(byte) current_xpos#97 ) + (byte*) current_piece_gfx#78 ← phi( toSpritePtr1/(byte*) current_piece_gfx#85 ) + (byte) irq_sprite_ypos#18 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#20 ) + (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) + (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 + to:@31 +@31: scope:[] from toSpritePtr1_@return + (byte) irq_raster_next#18 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#19 ) + (byte) keyboard_modifiers#39 ← phi( toSpritePtr1_@return/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#48 ← phi( toSpritePtr1_@return/(byte) keyboard_events_size#57 ) + (byte) current_piece_char#54 ← phi( toSpritePtr1_@return/(byte) current_piece_char#65 ) + (byte) current_ypos#60 ← phi( toSpritePtr1_@return/(byte) current_ypos#65 ) + (byte) current_xpos#84 ← phi( toSpritePtr1_@return/(byte) current_xpos#91 ) + (byte*) current_piece_gfx#69 ← phi( toSpritePtr1_@return/(byte*) current_piece_gfx#78 ) + (byte) irq_sprite_ypos#17 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#18 ) + (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) + (byte~) $3 ← (byte) toSpritePtr1_return#3 + (byte) irq_sprite_ptr#0 ← (byte~) $3 + (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@21 +sprites_irq_init: scope:[sprites_irq_init] from main::@23 + asm { sei } + *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 + asm { ldaCIA1_INTERRUPT } + *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 + *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 + *((byte*) CIA1_INTERRUPT#0) ← (byte) CIA_INTERRUPT_CLEAR#0 + *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + *((byte*) RASTER#0) ← (byte) IRQ_RASTER_FIRST#0 + *((byte*) IRQ_ENABLE#0) ← (byte) IRQ_RASTER#0 + (void()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) irq() + *((void()**) HARDWARE_IRQ#0) ← (void()*~) sprites_irq_init::$0 + asm { cli } + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init + return + to:@return +irq: scope:[irq] from + (byte) irq_raster_next#13 ← phi( @30/(byte) irq_raster_next#15 ) + (byte) irq_cnt#8 ← phi( @30/(byte) irq_cnt#11 ) + (byte) irq_sprite_ptr#9 ← phi( @30/(byte) irq_sprite_ptr#12 ) + (byte) irq_sprite_ypos#4 ← phi( @30/(byte) irq_sprite_ypos#8 ) + *((byte*) BORDERCOL#0) ← (byte) DARK_GREY#0 + (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 + to:irq::@1 +irq::@1: scope:[irq] from irq irq::@1 + (byte) irq_raster_next#10 ← phi( irq/(byte) irq_raster_next#13 irq::@1/(byte) irq_raster_next#10 ) + (byte) irq_cnt#6 ← phi( irq/(byte) irq_cnt#8 irq::@1/(byte) irq_cnt#6 ) + (byte) irq_sprite_ptr#7 ← phi( irq/(byte) irq_sprite_ptr#9 irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) irq_sprite_ypos#5 ← phi( irq/(byte) irq_sprite_ypos#4 irq::@1/(byte) irq_sprite_ypos#5 ) + (bool~) irq::$0 ← *((byte*) RASTER#0) != (byte) irq_sprite_ypos#5 + if((bool~) irq::$0) goto irq::@1 + to:irq::@5 +irq::@5: scope:[irq] from irq::@1 + (byte) irq_sprite_ypos#9 ← phi( irq::@1/(byte) irq_sprite_ypos#5 ) + (byte) irq_raster_next#7 ← phi( irq::@1/(byte) irq_raster_next#10 ) + (byte) irq_cnt#4 ← phi( irq::@1/(byte) irq_cnt#6 ) + (byte) irq_sprite_ptr#4 ← phi( irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#4 + *((byte*) PLAYFIELD_SPRITE_PTRS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) irq::ptr#0 + (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 + *((byte*) PLAYFIELD_SPRITE_PTRS#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 + (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + (byte) irq_cnt#1 ← ++ (byte) irq_cnt#4 + (bool~) irq::$1 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) irq::$1) goto irq::@2 + to:irq::@6 +irq::@2: scope:[irq] from irq::@5 + (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) irq_raster_next#1 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte*) irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 + to:irq::toSpritePtr2 +irq::toSpritePtr2: scope:[irq] from irq::@2 + (byte) irq_sprite_ypos#19 ← phi( irq::@2/(byte) irq_sprite_ypos#1 ) + (byte) irq_cnt#16 ← phi( irq::@2/(byte) irq_cnt#2 ) + (byte) irq_raster_next#14 ← phi( irq::@2/(byte) irq_raster_next#1 ) + (byte*) irq::toSpritePtr2_sprite#1 ← phi( irq::@2/(byte*) irq::toSpritePtr2_sprite#0 ) + (word) irq::toSpritePtr2_$0#0 ← ((word)) (byte*) irq::toSpritePtr2_sprite#1 + (word) irq::toSpritePtr2_$1#0 ← (word) irq::toSpritePtr2_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) irq::toSpritePtr2_$2#0 ← ((byte)) (word) irq::toSpritePtr2_$1#0 + (byte) irq::toSpritePtr2_return#0 ← (byte) irq::toSpritePtr2_$2#0 + to:irq::toSpritePtr2_@return +irq::toSpritePtr2_@return: scope:[irq] from irq::toSpritePtr2 + (byte) irq_sprite_ypos#16 ← phi( irq::toSpritePtr2/(byte) irq_sprite_ypos#19 ) + (byte) irq_cnt#14 ← phi( irq::toSpritePtr2/(byte) irq_cnt#16 ) + (byte) irq_raster_next#11 ← phi( irq::toSpritePtr2/(byte) irq_raster_next#14 ) + (byte) irq::toSpritePtr2_return#2 ← phi( irq::toSpritePtr2/(byte) irq::toSpritePtr2_return#0 ) + (byte) irq::toSpritePtr2_return#1 ← (byte) irq::toSpritePtr2_return#2 + to:irq::@9 +irq::@9: scope:[irq] from irq::toSpritePtr2_@return + (byte) irq_sprite_ypos#14 ← phi( irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#16 ) + (byte) irq_cnt#13 ← phi( irq::toSpritePtr2_@return/(byte) irq_cnt#14 ) + (byte) irq_raster_next#8 ← phi( irq::toSpritePtr2_@return/(byte) irq_raster_next#11 ) + (byte) irq::toSpritePtr2_return#3 ← phi( irq::toSpritePtr2_@return/(byte) irq::toSpritePtr2_return#1 ) + (byte~) irq::$2 ← (byte) irq::toSpritePtr2_return#3 + (byte) irq_sprite_ptr#1 ← (byte~) irq::$2 + to:irq::@3 +irq::@6: scope:[irq] from irq::@5 + (byte) irq_cnt#12 ← phi( irq::@5/(byte) irq_cnt#1 ) + (byte) irq_sprite_ptr#5 ← phi( irq::@5/(byte) irq_sprite_ptr#4 ) + (byte) irq_sprite_ypos#6 ← phi( irq::@5/(byte) irq_sprite_ypos#9 ) + (byte) irq_raster_next#4 ← phi( irq::@5/(byte) irq_raster_next#7 ) + (byte) irq_raster_next#2 ← (byte) irq_raster_next#4 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#5 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:irq::@3 +irq::@3: scope:[irq] from irq::@6 irq::@9 + (byte) irq_sprite_ptr#10 ← phi( irq::@6/(byte) irq_sprite_ptr#2 irq::@9/(byte) irq_sprite_ptr#1 ) + (byte) irq_sprite_ypos#11 ← phi( irq::@6/(byte) irq_sprite_ypos#2 irq::@9/(byte) irq_sprite_ypos#14 ) + (byte) irq_cnt#9 ← phi( irq::@6/(byte) irq_cnt#12 irq::@9/(byte) irq_cnt#13 ) + (byte) irq_raster_next#5 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#8 ) + (byte) irq::raster_next#0 ← (byte) irq_raster_next#5 + (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) irq::$4 ← (byte~) irq::$3 == (byte/signed byte/word/signed word/dword/signed dword) 3 + (bool~) irq::$5 ← ! (bool~) irq::$4 + if((bool~) irq::$5) goto irq::@4 + to:irq::@8 +irq::@4: scope:[irq] from irq::@3 irq::@8 + (byte) irq_sprite_ptr#8 ← phi( irq::@3/(byte) irq_sprite_ptr#10 irq::@8/(byte) irq_sprite_ptr#11 ) + (byte) irq_sprite_ypos#10 ← phi( irq::@3/(byte) irq_sprite_ypos#11 irq::@8/(byte) irq_sprite_ypos#12 ) + (byte) irq_raster_next#9 ← phi( irq::@3/(byte) irq_raster_next#5 irq::@8/(byte) irq_raster_next#12 ) + (byte) irq_cnt#7 ← phi( irq::@3/(byte) irq_cnt#9 irq::@8/(byte) irq_cnt#10 ) + (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) + *((byte*) RASTER#0) ← (byte) irq::raster_next#2 + *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 + *((byte*) BORDERCOL#0) ← (byte) BLACK#0 + to:irq::@return +irq::@8: scope:[irq] from irq::@3 + (byte) irq_sprite_ptr#11 ← phi( irq::@3/(byte) irq_sprite_ptr#10 ) + (byte) irq_sprite_ypos#12 ← phi( irq::@3/(byte) irq_sprite_ypos#11 ) + (byte) irq_raster_next#12 ← phi( irq::@3/(byte) irq_raster_next#5 ) + (byte) irq_cnt#10 ← phi( irq::@3/(byte) irq_cnt#9 ) + (byte) irq::raster_next#3 ← phi( irq::@3/(byte) irq::raster_next#0 ) + (byte) irq::raster_next#1 ← (byte) irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:irq::@4 +irq::@return: scope:[irq] from irq::@4 + (byte) irq_sprite_ptr#6 ← phi( irq::@4/(byte) irq_sprite_ptr#8 ) + (byte) irq_sprite_ypos#7 ← phi( irq::@4/(byte) irq_sprite_ypos#10 ) + (byte) irq_raster_next#6 ← phi( irq::@4/(byte) irq_raster_next#9 ) + (byte) irq_cnt#5 ← phi( irq::@4/(byte) irq_cnt#7 ) + (byte) irq_cnt#3 ← (byte) irq_cnt#5 + (byte) irq_raster_next#3 ← (byte) irq_raster_next#6 + (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#7 + (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#6 + return + to:@return +@21: scope:[] from @31 + (byte) irq_raster_next#17 ← phi( @31/(byte) irq_raster_next#18 ) + (byte) irq_cnt#17 ← phi( @31/(byte) irq_cnt#0 ) + (byte) irq_sprite_ptr#14 ← phi( @31/(byte) irq_sprite_ptr#0 ) + (byte) keyboard_modifiers#33 ← phi( @31/(byte) keyboard_modifiers#39 ) + (byte) keyboard_events_size#39 ← phi( @31/(byte) keyboard_events_size#48 ) + (byte) current_piece_char#44 ← phi( @31/(byte) current_piece_char#54 ) + (byte) current_ypos#55 ← phi( @31/(byte) current_ypos#60 ) + (byte) current_xpos#74 ← phi( @31/(byte) current_xpos#84 ) + (byte*) current_piece_gfx#62 ← phi( @31/(byte*) current_piece_gfx#69 ) + (byte) irq_sprite_ypos#15 ← phi( @31/(byte) irq_sprite_ypos#17 ) (byte/signed byte/word/signed word/dword/signed dword~) $4 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed word/word/dword/signed dword/signed byte~) $5 ← (byte/signed byte/word/signed word/dword/signed dword~) $4 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte[$5]) PIECE_T#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } @@ -893,16 +1145,16 @@ render_current::@return: scope:[render_current] from render_current::@2 (byte) current_movedown_slow#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_movedown_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@21 -play_move_down: scope:[play_move_down] from main::@28 - (byte) current_piece_char#69 ← phi( main::@28/(byte) current_piece_char#24 ) - (byte*) current_piece_gfx#81 ← phi( main::@28/(byte*) current_piece_gfx#33 ) - (byte*) current_piece#65 ← phi( main::@28/(byte*) current_piece#27 ) - (byte) current_orientation#66 ← phi( main::@28/(byte) current_orientation#37 ) - (byte) current_xpos#89 ← phi( main::@28/(byte) current_xpos#45 ) - (byte) current_ypos#64 ← phi( main::@28/(byte) current_ypos#37 ) - (byte) play_move_down::key_event#1 ← phi( main::@28/(byte) play_move_down::key_event#0 ) - (byte) current_movedown_counter#7 ← phi( main::@28/(byte) current_movedown_counter#14 ) + to:@24 +play_move_down: scope:[play_move_down] from main::@30 + (byte) current_piece_char#74 ← phi( main::@30/(byte) current_piece_char#24 ) + (byte*) current_piece_gfx#86 ← phi( main::@30/(byte*) current_piece_gfx#33 ) + (byte*) current_piece#66 ← phi( main::@30/(byte*) current_piece#27 ) + (byte) current_orientation#66 ← phi( main::@30/(byte) current_orientation#37 ) + (byte) current_xpos#92 ← phi( main::@30/(byte) current_xpos#45 ) + (byte) current_ypos#66 ← phi( main::@30/(byte) current_ypos#37 ) + (byte) play_move_down::key_event#1 ← phi( main::@30/(byte) play_move_down::key_event#0 ) + (byte) current_movedown_counter#7 ← phi( main::@30/(byte) current_movedown_counter#14 ) (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#7 (byte) play_move_down::movedown#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 @@ -910,12 +1162,12 @@ play_move_down: scope:[play_move_down] from main::@28 if((bool~) play_move_down::$1) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - (byte) current_piece_char#64 ← phi( play_move_down/(byte) current_piece_char#69 play_move_down::@8/(byte) current_piece_char#70 ) - (byte*) current_piece_gfx#76 ← phi( play_move_down/(byte*) current_piece_gfx#81 play_move_down::@8/(byte*) current_piece_gfx#82 ) - (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#65 play_move_down::@8/(byte*) current_piece#66 ) + (byte) current_piece_char#66 ← phi( play_move_down/(byte) current_piece_char#74 play_move_down::@8/(byte) current_piece_char#75 ) + (byte*) current_piece_gfx#79 ← phi( play_move_down/(byte*) current_piece_gfx#86 play_move_down::@8/(byte*) current_piece_gfx#87 ) + (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#66 play_move_down::@8/(byte*) current_piece#67 ) (byte) current_orientation#61 ← phi( play_move_down/(byte) current_orientation#66 play_move_down::@8/(byte) current_orientation#67 ) - (byte) current_xpos#83 ← phi( play_move_down/(byte) current_xpos#89 play_move_down::@8/(byte) current_xpos#90 ) - (byte) current_ypos#60 ← phi( play_move_down/(byte) current_ypos#64 play_move_down::@8/(byte) current_ypos#65 ) + (byte) current_xpos#85 ← phi( play_move_down/(byte) current_xpos#92 play_move_down::@8/(byte) current_xpos#93 ) + (byte) current_ypos#61 ← phi( play_move_down/(byte) current_ypos#66 play_move_down::@8/(byte) current_ypos#67 ) (byte) play_move_down::movedown#12 ← phi( play_move_down/(byte) play_move_down::movedown#0 play_move_down::@8/(byte) play_move_down::movedown#1 ) (byte) current_movedown_counter#21 ← phi( play_move_down/(byte) current_movedown_counter#1 play_move_down::@8/(byte) current_movedown_counter#27 ) (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 @@ -923,12 +1175,12 @@ play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down:: (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - (byte) current_piece_char#55 ← phi( play_move_down::@1/(byte) current_piece_char#64 ) - (byte*) current_piece_gfx#69 ← phi( play_move_down::@1/(byte*) current_piece_gfx#76 ) + (byte) current_piece_char#56 ← phi( play_move_down::@1/(byte) current_piece_char#66 ) + (byte*) current_piece_gfx#71 ← phi( play_move_down::@1/(byte*) current_piece_gfx#79 ) (byte*) current_piece#54 ← phi( play_move_down::@1/(byte*) current_piece#60 ) (byte) current_orientation#52 ← phi( play_move_down::@1/(byte) current_orientation#61 ) - (byte) current_xpos#70 ← phi( play_move_down::@1/(byte) current_xpos#83 ) - (byte) current_ypos#52 ← phi( play_move_down::@1/(byte) current_ypos#60 ) + (byte) current_xpos#71 ← phi( play_move_down::@1/(byte) current_xpos#85 ) + (byte) current_ypos#52 ← phi( play_move_down::@1/(byte) current_ypos#61 ) (byte) play_move_down::movedown#10 ← phi( play_move_down::@1/(byte) play_move_down::movedown#12 ) (byte) current_movedown_counter#16 ← phi( play_move_down::@1/(byte) current_movedown_counter#21 ) (byte) keyboard_event_pressed::return#12 ← phi( play_move_down::@1/(byte) keyboard_event_pressed::return#6 ) @@ -938,22 +1190,22 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 if((bool~) play_move_down::$4) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@8: scope:[play_move_down] from play_move_down - (byte) current_piece_char#70 ← phi( play_move_down/(byte) current_piece_char#69 ) - (byte*) current_piece_gfx#82 ← phi( play_move_down/(byte*) current_piece_gfx#81 ) - (byte*) current_piece#66 ← phi( play_move_down/(byte*) current_piece#65 ) + (byte) current_piece_char#75 ← phi( play_move_down/(byte) current_piece_char#74 ) + (byte*) current_piece_gfx#87 ← phi( play_move_down/(byte*) current_piece_gfx#86 ) + (byte*) current_piece#67 ← phi( play_move_down/(byte*) current_piece#66 ) (byte) current_orientation#67 ← phi( play_move_down/(byte) current_orientation#66 ) - (byte) current_xpos#90 ← phi( play_move_down/(byte) current_xpos#89 ) - (byte) current_ypos#65 ← phi( play_move_down/(byte) current_ypos#64 ) + (byte) current_xpos#93 ← phi( play_move_down/(byte) current_xpos#92 ) + (byte) current_ypos#67 ← phi( play_move_down/(byte) current_ypos#66 ) (byte) current_movedown_counter#27 ← phi( play_move_down/(byte) current_movedown_counter#1 ) (byte) play_move_down::movedown#4 ← phi( play_move_down/(byte) play_move_down::movedown#0 ) (byte) play_move_down::movedown#1 ← ++ (byte) play_move_down::movedown#4 to:play_move_down::@1 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@3 - (byte) current_piece_char#41 ← phi( play_move_down::@10/(byte) current_piece_char#54 play_move_down::@17/(byte) current_piece_char#55 play_move_down::@3/(byte) current_piece_char#56 ) - (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#68 play_move_down::@17/(byte*) current_piece_gfx#69 play_move_down::@3/(byte*) current_piece_gfx#70 ) + (byte) current_piece_char#41 ← phi( play_move_down::@10/(byte) current_piece_char#55 play_move_down::@17/(byte) current_piece_char#56 play_move_down::@3/(byte) current_piece_char#57 ) + (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#70 play_move_down::@17/(byte*) current_piece_gfx#71 play_move_down::@3/(byte*) current_piece_gfx#72 ) (byte*) current_piece#43 ← phi( play_move_down::@10/(byte*) current_piece#53 play_move_down::@17/(byte*) current_piece#54 play_move_down::@3/(byte*) current_piece#55 ) (byte) current_orientation#42 ← phi( play_move_down::@10/(byte) current_orientation#51 play_move_down::@17/(byte) current_orientation#52 play_move_down::@3/(byte) current_orientation#53 ) - (byte) current_xpos#51 ← phi( play_move_down::@10/(byte) current_xpos#69 play_move_down::@17/(byte) current_xpos#70 play_move_down::@3/(byte) current_xpos#71 ) + (byte) current_xpos#51 ← phi( play_move_down::@10/(byte) current_xpos#70 play_move_down::@17/(byte) current_xpos#71 play_move_down::@3/(byte) current_xpos#72 ) (byte) current_ypos#41 ← phi( play_move_down::@10/(byte) current_ypos#51 play_move_down::@17/(byte) current_ypos#52 play_move_down::@3/(byte) current_ypos#53 ) (byte) play_move_down::movedown#9 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@3/(byte) play_move_down::movedown#11 ) (byte) current_movedown_counter#8 ← phi( play_move_down::@10/(byte) current_movedown_counter#15 play_move_down::@17/(byte) current_movedown_counter#16 play_move_down::@3/(byte) current_movedown_counter#17 ) @@ -962,12 +1214,12 @@ play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_d if((bool~) play_move_down::$8) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - (byte) current_piece_char#65 ← phi( play_move_down::@17/(byte) current_piece_char#55 ) - (byte*) current_piece_gfx#77 ← phi( play_move_down::@17/(byte*) current_piece_gfx#69 ) + (byte) current_piece_char#67 ← phi( play_move_down::@17/(byte) current_piece_char#56 ) + (byte*) current_piece_gfx#80 ← phi( play_move_down::@17/(byte*) current_piece_gfx#71 ) (byte*) current_piece#61 ← phi( play_move_down::@17/(byte*) current_piece#54 ) (byte) current_orientation#62 ← phi( play_move_down::@17/(byte) current_orientation#52 ) - (byte) current_xpos#84 ← phi( play_move_down::@17/(byte) current_xpos#70 ) - (byte) current_ypos#61 ← phi( play_move_down::@17/(byte) current_ypos#52 ) + (byte) current_xpos#86 ← phi( play_move_down::@17/(byte) current_xpos#71 ) + (byte) current_ypos#62 ← phi( play_move_down::@17/(byte) current_ypos#52 ) (byte) play_move_down::movedown#8 ← phi( play_move_down::@17/(byte) play_move_down::movedown#10 ) (byte) current_movedown_counter#9 ← phi( play_move_down::@17/(byte) current_movedown_counter#16 ) (bool~) play_move_down::$5 ← (byte) current_movedown_counter#9 >= (byte) current_movedown_fast#0 @@ -975,22 +1227,22 @@ play_move_down::@9: scope:[play_move_down] from play_move_down::@17 if((bool~) play_move_down::$6) goto play_move_down::@3 to:play_move_down::@10 play_move_down::@3: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_char#56 ← phi( play_move_down::@9/(byte) current_piece_char#65 ) - (byte*) current_piece_gfx#70 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte) current_piece_char#57 ← phi( play_move_down::@9/(byte) current_piece_char#67 ) + (byte*) current_piece_gfx#72 ← phi( play_move_down::@9/(byte*) current_piece_gfx#80 ) (byte*) current_piece#55 ← phi( play_move_down::@9/(byte*) current_piece#61 ) (byte) current_orientation#53 ← phi( play_move_down::@9/(byte) current_orientation#62 ) - (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#84 ) - (byte) current_ypos#53 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (byte) current_xpos#72 ← phi( play_move_down::@9/(byte) current_xpos#86 ) + (byte) current_ypos#53 ← phi( play_move_down::@9/(byte) current_ypos#62 ) (byte) play_move_down::movedown#11 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) (byte) current_movedown_counter#17 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) to:play_move_down::@2 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_char#54 ← phi( play_move_down::@9/(byte) current_piece_char#65 ) - (byte*) current_piece_gfx#68 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte) current_piece_char#55 ← phi( play_move_down::@9/(byte) current_piece_char#67 ) + (byte*) current_piece_gfx#70 ← phi( play_move_down::@9/(byte*) current_piece_gfx#80 ) (byte*) current_piece#53 ← phi( play_move_down::@9/(byte*) current_piece#61 ) (byte) current_orientation#51 ← phi( play_move_down::@9/(byte) current_orientation#62 ) - (byte) current_xpos#69 ← phi( play_move_down::@9/(byte) current_xpos#84 ) - (byte) current_ypos#51 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (byte) current_xpos#70 ← phi( play_move_down::@9/(byte) current_xpos#86 ) + (byte) current_ypos#51 ← phi( play_move_down::@9/(byte) current_ypos#62 ) (byte) current_movedown_counter#15 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) (byte) play_move_down::movedown#5 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#5 @@ -1030,8 +1282,8 @@ play_move_down::@5: scope:[play_move_down] from play_move_down::@4 (byte) play_move_down::return#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_down::@return play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - (byte) current_piece_char#57 ← phi( play_move_down::@4/(byte) current_piece_char#28 ) - (byte*) current_piece_gfx#71 ← phi( play_move_down::@4/(byte*) current_piece_gfx#40 ) + (byte) current_piece_char#58 ← phi( play_move_down::@4/(byte) current_piece_char#28 ) + (byte*) current_piece_gfx#73 ← phi( play_move_down::@4/(byte*) current_piece_gfx#40 ) (byte*) current_piece#22 ← phi( play_move_down::@4/(byte*) current_piece#30 ) (byte) current_orientation#12 ← phi( play_move_down::@4/(byte) current_orientation#26 ) (byte) current_xpos#14 ← phi( play_move_down::@4/(byte) current_xpos#31 ) @@ -1044,9 +1296,9 @@ play_move_down::@12: scope:[play_move_down] from play_move_down::@4 (byte) play_collision::return#0 ← (byte) play_collision::return#5 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - (byte) current_piece_char#42 ← phi( play_move_down::@12/(byte) current_piece_char#57 ) - (byte) current_xpos#72 ← phi( play_move_down::@12/(byte) current_xpos#14 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#71 ) + (byte) current_piece_char#42 ← phi( play_move_down::@12/(byte) current_piece_char#58 ) + (byte) current_xpos#73 ← phi( play_move_down::@12/(byte) current_xpos#14 ) + (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#73 ) (byte) current_orientation#54 ← phi( play_move_down::@12/(byte) current_orientation#12 ) (byte*) current_piece#44 ← phi( play_move_down::@12/(byte*) current_piece#22 ) (byte) current_ypos#27 ← phi( play_move_down::@12/(byte) current_ypos#11 ) @@ -1057,7 +1309,7 @@ play_move_down::@18: scope:[play_move_down] from play_move_down::@12 to:play_move_down::@13 play_move_down::@6: scope:[play_move_down] from play_move_down::@18 (byte) current_piece_char#30 ← phi( play_move_down::@18/(byte) current_piece_char#42 ) - (byte) current_xpos#53 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_xpos#53 ← phi( play_move_down::@18/(byte) current_xpos#73 ) (byte*) current_piece_gfx#42 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) (byte) current_orientation#44 ← phi( play_move_down::@18/(byte) current_orientation#54 ) (byte*) current_piece#32 ← phi( play_move_down::@18/(byte*) current_piece#44 ) @@ -1069,7 +1321,7 @@ play_move_down::@13: scope:[play_move_down] from play_move_down::@18 (byte*) current_piece_gfx#59 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) (byte) current_orientation#55 ← phi( play_move_down::@18/(byte) current_orientation#54 ) (byte*) current_piece#45 ← phi( play_move_down::@18/(byte*) current_piece#44 ) - (byte) current_xpos#59 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_xpos#59 ← phi( play_move_down::@18/(byte) current_xpos#73 ) (byte) current_ypos#35 ← phi( play_move_down::@18/(byte) current_ypos#27 ) call play_lock_current to:play_move_down::@19 @@ -1134,12 +1386,12 @@ play_move_down::@return: scope:[play_move_down] from play_move_down::@5 play_mo (byte) current_piece_char#2 ← (byte) current_piece_char#11 return to:@return -play_move_leftright: scope:[play_move_leftright] from main::@29 - (byte*) current_piece#33 ← phi( main::@29/(byte*) current_piece#6 ) - (byte) current_orientation#30 ← phi( main::@29/(byte) current_orientation#8 ) - (byte) current_ypos#31 ← phi( main::@29/(byte) current_ypos#7 ) - (byte) current_xpos#35 ← phi( main::@29/(byte) current_xpos#9 ) - (byte) play_move_leftright::key_event#1 ← phi( main::@29/(byte) play_move_leftright::key_event#0 ) +play_move_leftright: scope:[play_move_leftright] from main::@31 + (byte*) current_piece#33 ← phi( main::@31/(byte*) current_piece#6 ) + (byte) current_orientation#30 ← phi( main::@31/(byte) current_orientation#8 ) + (byte) current_ypos#31 ← phi( main::@31/(byte) current_ypos#7 ) + (byte) current_xpos#35 ← phi( main::@31/(byte) current_xpos#9 ) + (byte) play_move_leftright::key_event#1 ← phi( main::@31/(byte) play_move_leftright::key_event#0 ) (bool~) play_move_leftright::$0 ← (byte) play_move_leftright::key_event#1 == (byte) KEY_COMMA#0 if((bool~) play_move_leftright::$0) goto play_move_leftright::@1 to:play_move_leftright::@6 @@ -1223,19 +1475,19 @@ play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright: (byte) current_xpos#5 ← -- (byte) current_xpos#21 (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_leftright::@return -play_move_rotate: scope:[play_move_rotate] from main::@30 - (byte*) current_piece_gfx#60 ← phi( main::@30/(byte*) current_piece_gfx#34 ) - (byte*) current_piece#46 ← phi( main::@30/(byte*) current_piece#56 ) - (byte) current_ypos#43 ← phi( main::@30/(byte) current_ypos#54 ) - (byte) current_xpos#57 ← phi( main::@30/(byte) current_xpos#10 ) - (byte) current_orientation#32 ← phi( main::@30/(byte) current_orientation#38 ) - (byte) play_move_rotate::key_event#1 ← phi( main::@30/(byte) play_move_rotate::key_event#0 ) +play_move_rotate: scope:[play_move_rotate] from main::@32 + (byte*) current_piece_gfx#60 ← phi( main::@32/(byte*) current_piece_gfx#34 ) + (byte*) current_piece#46 ← phi( main::@32/(byte*) current_piece#56 ) + (byte) current_ypos#43 ← phi( main::@32/(byte) current_ypos#54 ) + (byte) current_xpos#57 ← phi( main::@32/(byte) current_xpos#10 ) + (byte) current_orientation#32 ← phi( main::@32/(byte) current_orientation#38 ) + (byte) play_move_rotate::key_event#1 ← phi( main::@32/(byte) play_move_rotate::key_event#0 ) (byte) play_move_rotate::orientation#0 ← (byte/word/signed word/dword/signed dword) 128 (bool~) play_move_rotate::$0 ← (byte) play_move_rotate::key_event#1 == (byte) KEY_Z#0 if((bool~) play_move_rotate::$0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece_gfx#72 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) + (byte*) current_piece_gfx#74 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) (byte*) current_piece#35 ← phi( play_move_rotate/(byte*) current_piece#46 ) (byte) current_ypos#33 ← phi( play_move_rotate/(byte) current_ypos#43 ) (byte) current_xpos#40 ← phi( play_move_rotate/(byte) current_xpos#57 ) @@ -1255,7 +1507,7 @@ play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate if((bool~) play_move_rotate::$1) goto play_move_rotate::@2 to:play_move_rotate::@7 play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - (byte*) current_piece_gfx#73 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#43 ) + (byte*) current_piece_gfx#75 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#43 ) (byte*) current_piece#36 ← phi( play_move_rotate::@6/(byte*) current_piece#47 ) (byte) current_ypos#34 ← phi( play_move_rotate::@6/(byte) current_ypos#44 ) (byte) current_xpos#41 ← phi( play_move_rotate::@6/(byte) current_xpos#58 ) @@ -1279,7 +1531,7 @@ play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 return to:@return play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - (byte*) current_piece_gfx#61 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#72 play_move_rotate::@2/(byte*) current_piece_gfx#73 ) + (byte*) current_piece_gfx#61 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#74 play_move_rotate::@2/(byte*) current_piece_gfx#75 ) (byte) current_orientation#56 ← phi( play_move_rotate::@1/(byte) current_orientation#17 play_move_rotate::@2/(byte) current_orientation#18 ) (byte*) current_piece#25 ← phi( play_move_rotate::@1/(byte*) current_piece#35 play_move_rotate::@2/(byte*) current_piece#36 ) (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) @@ -1315,22 +1567,26 @@ play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 (byte*) current_piece_gfx#4 ← (byte*~) play_move_rotate::$9 (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return -@21: scope:[] from @18 - (byte) current_movedown_counter#26 ← phi( @18/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#32 ← phi( @18/(byte) keyboard_modifiers#33 ) - (byte) keyboard_events_size#35 ← phi( @18/(byte) keyboard_events_size#39 ) - (byte) current_piece_char#37 ← phi( @18/(byte) current_piece_char#44 ) - (byte) current_ypos#50 ← phi( @18/(byte) current_ypos#55 ) - (byte) current_xpos#65 ← phi( @18/(byte) current_xpos#73 ) - (byte*) current_piece_gfx#52 ← phi( @18/(byte*) current_piece_gfx#62 ) - (byte) current_orientation#50 ← phi( @18/(byte) current_orientation#0 ) - (byte*) current_piece#41 ← phi( @18/(byte*) current_piece#0 ) +@24: scope:[] from @21 + (byte) irq_raster_next#16 ← phi( @21/(byte) irq_raster_next#17 ) + (byte) irq_cnt#15 ← phi( @21/(byte) irq_cnt#17 ) + (byte) irq_sprite_ptr#13 ← phi( @21/(byte) irq_sprite_ptr#14 ) + (byte) current_movedown_counter#26 ← phi( @21/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#32 ← phi( @21/(byte) keyboard_modifiers#33 ) + (byte) keyboard_events_size#35 ← phi( @21/(byte) keyboard_events_size#39 ) + (byte) current_piece_char#37 ← phi( @21/(byte) current_piece_char#44 ) + (byte) current_ypos#50 ← phi( @21/(byte) current_ypos#55 ) + (byte) current_xpos#65 ← phi( @21/(byte) current_xpos#74 ) + (byte*) current_piece_gfx#52 ← phi( @21/(byte*) current_piece_gfx#62 ) + (byte) current_orientation#50 ← phi( @21/(byte) current_orientation#0 ) + (byte*) current_piece#41 ← phi( @21/(byte*) current_piece#0 ) + (byte) irq_sprite_ypos#13 ← phi( @21/(byte) irq_sprite_ypos#15 ) (byte) COLLISION_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) COLLISION_PLAYFIELD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) COLLISION_BOTTOM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) COLLISION_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@27 + to:@30 play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) @@ -1498,7 +1754,7 @@ play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lo (byte) play_lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@3 - (byte) current_xpos#74 ← phi( play_lock_current::@1/(byte) current_xpos#23 play_lock_current::@3/(byte) current_xpos#60 ) + (byte) current_xpos#75 ← phi( play_lock_current::@1/(byte) current_xpos#23 play_lock_current::@3/(byte) current_xpos#60 ) (byte) play_lock_current::l#4 ← phi( play_lock_current::@1/(byte) play_lock_current::l#6 play_lock_current::@3/(byte) play_lock_current::l#3 ) (byte) play_lock_current::ypos2#5 ← phi( play_lock_current::@1/(byte) play_lock_current::ypos2#2 play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) (byte*) play_lock_current::playfield_line#2 ← phi( play_lock_current::@1/(byte*) play_lock_current::playfield_line#0 play_lock_current::@3/(byte*) play_lock_current::playfield_line#3 ) @@ -1513,7 +1769,7 @@ play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 pla if((bool~) play_lock_current::$2) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - (byte) current_xpos#60 ← phi( play_lock_current::@2/(byte) current_xpos#74 play_lock_current::@4/(byte) current_xpos#75 ) + (byte) current_xpos#60 ← phi( play_lock_current::@2/(byte) current_xpos#75 play_lock_current::@4/(byte) current_xpos#76 ) (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#32 ← phi( play_lock_current::@2/(byte) current_piece_char#22 play_lock_current::@4/(byte) current_piece_char#12 ) (byte) play_lock_current::l#3 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 play_lock_current::@4/(byte) play_lock_current::l#5 ) @@ -1528,7 +1784,7 @@ play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 pla if((bool~) play_lock_current::$3) goto play_lock_current::@2 to:play_lock_current::@5 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - (byte) current_xpos#75 ← phi( play_lock_current::@2/(byte) current_xpos#74 ) + (byte) current_xpos#76 ← phi( play_lock_current::@2/(byte) current_xpos#75 ) (byte) play_lock_current::l#5 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 ) (byte) play_lock_current::ypos2#6 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 ) (byte) play_lock_current::i#6 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 ) @@ -1554,7 +1810,7 @@ play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 return to:@return -play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 +play_spawn_current: scope:[play_spawn_current] from main::@25 play_move_down::@20 (byte) play_spawn_current::piece_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 @@ -1686,7 +1942,7 @@ play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 return to:@return -play_init: scope:[play_init] from main::@22 +play_init: scope:[play_init] from main::@24 (byte) play_init::idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) play_init::pli#0 ← (byte[$2]) playfield#0 (byte/signed word/word/dword/signed dword~) play_init::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -1712,65 +1968,89 @@ play_init::@2: scope:[play_init] from play_init::@1 play_init::@return: scope:[play_init] from play_init::@2 return to:@return -main: scope:[main] from @27 - (byte) current_movedown_counter#45 ← phi( @27/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#52 ← phi( @27/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#70 ← phi( @27/(byte) keyboard_events_size#28 ) - (byte) current_piece_char#58 ← phi( @27/(byte) current_piece_char#26 ) - (byte) current_ypos#62 ← phi( @27/(byte) current_ypos#39 ) - (byte) current_xpos#85 ← phi( @27/(byte) current_xpos#47 ) - (byte*) current_piece_gfx#74 ← phi( @27/(byte*) current_piece_gfx#36 ) - (byte) current_orientation#63 ← phi( @27/(byte) current_orientation#40 ) - (byte*) current_piece#57 ← phi( @27/(byte*) current_piece#29 ) +main: scope:[main] from @30 + (byte) current_movedown_counter#47 ← phi( @30/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#59 ← phi( @30/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#78 ← phi( @30/(byte) keyboard_events_size#28 ) + (byte) current_piece_char#76 ← phi( @30/(byte) current_piece_char#26 ) + (byte) current_ypos#72 ← phi( @30/(byte) current_ypos#39 ) + (byte) current_xpos#98 ← phi( @30/(byte) current_xpos#47 ) + (byte*) current_piece_gfx#88 ← phi( @30/(byte*) current_piece_gfx#36 ) + (byte) current_orientation#72 ← phi( @30/(byte) current_orientation#40 ) + (byte*) current_piece#68 ← phi( @30/(byte*) current_piece#29 ) call sid_rnd_init to:main::@21 main::@21: scope:[main] from main - (byte) current_movedown_counter#44 ← phi( main/(byte) current_movedown_counter#45 ) - (byte) keyboard_modifiers#51 ← phi( main/(byte) keyboard_modifiers#52 ) - (byte) keyboard_events_size#67 ← phi( main/(byte) keyboard_events_size#70 ) - (byte) current_piece_char#47 ← phi( main/(byte) current_piece_char#58 ) - (byte) current_ypos#56 ← phi( main/(byte) current_ypos#62 ) - (byte) current_xpos#76 ← phi( main/(byte) current_xpos#85 ) - (byte*) current_piece_gfx#63 ← phi( main/(byte*) current_piece_gfx#74 ) - (byte) current_orientation#57 ← phi( main/(byte) current_orientation#63 ) - (byte*) current_piece#48 ← phi( main/(byte*) current_piece#57 ) + (byte) current_movedown_counter#46 ← phi( main/(byte) current_movedown_counter#47 ) + (byte) keyboard_modifiers#57 ← phi( main/(byte) keyboard_modifiers#59 ) + (byte) keyboard_events_size#76 ← phi( main/(byte) keyboard_events_size#78 ) + (byte) current_piece_char#68 ← phi( main/(byte) current_piece_char#76 ) + (byte) current_ypos#68 ← phi( main/(byte) current_ypos#72 ) + (byte) current_xpos#94 ← phi( main/(byte) current_xpos#98 ) + (byte*) current_piece_gfx#81 ← phi( main/(byte*) current_piece_gfx#88 ) + (byte) current_orientation#68 ← phi( main/(byte) current_orientation#72 ) + (byte*) current_piece#62 ← phi( main/(byte*) current_piece#68 ) asm { sei } call render_init to:main::@22 main::@22: scope:[main] from main::@21 - (byte) current_movedown_counter#41 ← phi( main::@21/(byte) current_movedown_counter#44 ) - (byte) keyboard_modifiers#49 ← phi( main::@21/(byte) keyboard_modifiers#51 ) - (byte) keyboard_events_size#65 ← phi( main::@21/(byte) keyboard_events_size#67 ) - (byte) current_piece_char#33 ← phi( main::@21/(byte) current_piece_char#47 ) - (byte) current_ypos#45 ← phi( main::@21/(byte) current_ypos#56 ) - (byte) current_xpos#61 ← phi( main::@21/(byte) current_xpos#76 ) - (byte*) current_piece_gfx#48 ← phi( main::@21/(byte*) current_piece_gfx#63 ) - (byte) current_orientation#46 ← phi( main::@21/(byte) current_orientation#57 ) - (byte*) current_piece#37 ← phi( main::@21/(byte*) current_piece#48 ) - call play_init + (byte) current_movedown_counter#45 ← phi( main::@21/(byte) current_movedown_counter#46 ) + (byte) keyboard_modifiers#55 ← phi( main::@21/(byte) keyboard_modifiers#57 ) + (byte) keyboard_events_size#73 ← phi( main::@21/(byte) keyboard_events_size#76 ) + (byte) current_piece_char#59 ← phi( main::@21/(byte) current_piece_char#68 ) + (byte) current_ypos#63 ← phi( main::@21/(byte) current_ypos#68 ) + (byte) current_xpos#87 ← phi( main::@21/(byte) current_xpos#94 ) + (byte*) current_piece_gfx#76 ← phi( main::@21/(byte*) current_piece_gfx#81 ) + (byte) current_orientation#63 ← phi( main::@21/(byte) current_orientation#68 ) + (byte*) current_piece#57 ← phi( main::@21/(byte*) current_piece#62 ) + call sprites_init to:main::@23 main::@23: scope:[main] from main::@22 - (byte) current_movedown_counter#37 ← phi( main::@22/(byte) current_movedown_counter#41 ) - (byte) keyboard_modifiers#46 ← phi( main::@22/(byte) keyboard_modifiers#49 ) - (byte) keyboard_events_size#58 ← phi( main::@22/(byte) keyboard_events_size#65 ) - (byte) current_piece_char#23 ← phi( main::@22/(byte) current_piece_char#33 ) - (byte) current_ypos#36 ← phi( main::@22/(byte) current_ypos#45 ) - (byte) current_xpos#44 ← phi( main::@22/(byte) current_xpos#61 ) - (byte*) current_piece_gfx#32 ← phi( main::@22/(byte*) current_piece_gfx#48 ) - (byte) current_orientation#36 ← phi( main::@22/(byte) current_orientation#46 ) - (byte*) current_piece#26 ← phi( main::@22/(byte*) current_piece#37 ) - call play_spawn_current + (byte) current_movedown_counter#44 ← phi( main::@22/(byte) current_movedown_counter#45 ) + (byte) keyboard_modifiers#53 ← phi( main::@22/(byte) keyboard_modifiers#55 ) + (byte) keyboard_events_size#69 ← phi( main::@22/(byte) keyboard_events_size#73 ) + (byte) current_piece_char#47 ← phi( main::@22/(byte) current_piece_char#59 ) + (byte) current_ypos#56 ← phi( main::@22/(byte) current_ypos#63 ) + (byte) current_xpos#77 ← phi( main::@22/(byte) current_xpos#87 ) + (byte*) current_piece_gfx#63 ← phi( main::@22/(byte*) current_piece_gfx#76 ) + (byte) current_orientation#57 ← phi( main::@22/(byte) current_orientation#63 ) + (byte*) current_piece#48 ← phi( main::@22/(byte*) current_piece#57 ) + call sprites_irq_init to:main::@24 main::@24: scope:[main] from main::@23 - (byte) current_movedown_counter#33 ← phi( main::@23/(byte) current_movedown_counter#37 ) - (byte) keyboard_modifiers#40 ← phi( main::@23/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#49 ← phi( main::@23/(byte) keyboard_events_size#58 ) - (byte) current_piece_char#14 ← phi( main::@23/(byte) current_piece_char#4 ) - (byte) current_ypos#20 ← phi( main::@23/(byte) current_ypos#5 ) - (byte) current_xpos#25 ← phi( main::@23/(byte) current_xpos#7 ) - (byte*) current_piece_gfx#18 ← phi( main::@23/(byte*) current_piece_gfx#6 ) - (byte) current_orientation#21 ← phi( main::@23/(byte) current_orientation#6 ) - (byte*) current_piece#14 ← phi( main::@23/(byte*) current_piece#4 ) + (byte) current_movedown_counter#41 ← phi( main::@23/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#50 ← phi( main::@23/(byte) keyboard_modifiers#53 ) + (byte) keyboard_events_size#66 ← phi( main::@23/(byte) keyboard_events_size#69 ) + (byte) current_piece_char#33 ← phi( main::@23/(byte) current_piece_char#47 ) + (byte) current_ypos#45 ← phi( main::@23/(byte) current_ypos#56 ) + (byte) current_xpos#61 ← phi( main::@23/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#48 ← phi( main::@23/(byte*) current_piece_gfx#63 ) + (byte) current_orientation#46 ← phi( main::@23/(byte) current_orientation#57 ) + (byte*) current_piece#37 ← phi( main::@23/(byte*) current_piece#48 ) + call play_init + to:main::@25 +main::@25: scope:[main] from main::@24 + (byte) current_movedown_counter#37 ← phi( main::@24/(byte) current_movedown_counter#41 ) + (byte) keyboard_modifiers#46 ← phi( main::@24/(byte) keyboard_modifiers#50 ) + (byte) keyboard_events_size#58 ← phi( main::@24/(byte) keyboard_events_size#66 ) + (byte) current_piece_char#23 ← phi( main::@24/(byte) current_piece_char#33 ) + (byte) current_ypos#36 ← phi( main::@24/(byte) current_ypos#45 ) + (byte) current_xpos#44 ← phi( main::@24/(byte) current_xpos#61 ) + (byte*) current_piece_gfx#32 ← phi( main::@24/(byte*) current_piece_gfx#48 ) + (byte) current_orientation#36 ← phi( main::@24/(byte) current_orientation#46 ) + (byte*) current_piece#26 ← phi( main::@24/(byte*) current_piece#37 ) + call play_spawn_current + to:main::@26 +main::@26: scope:[main] from main::@25 + (byte) current_movedown_counter#33 ← phi( main::@25/(byte) current_movedown_counter#37 ) + (byte) keyboard_modifiers#40 ← phi( main::@25/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#49 ← phi( main::@25/(byte) keyboard_events_size#58 ) + (byte) current_piece_char#14 ← phi( main::@25/(byte) current_piece_char#4 ) + (byte) current_ypos#20 ← phi( main::@25/(byte) current_ypos#5 ) + (byte) current_xpos#25 ← phi( main::@25/(byte) current_xpos#7 ) + (byte*) current_piece_gfx#18 ← phi( main::@25/(byte*) current_piece_gfx#6 ) + (byte) current_orientation#21 ← phi( main::@25/(byte) current_orientation#6 ) + (byte*) current_piece#14 ← phi( main::@25/(byte*) current_piece#4 ) (byte*) current_piece#5 ← (byte*) current_piece#14 (byte) current_orientation#7 ← (byte) current_orientation#21 (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 @@ -1778,117 +2058,117 @@ main::@24: scope:[main] from main::@23 (byte) current_ypos#6 ← (byte) current_ypos#20 (byte) current_piece_char#5 ← (byte) current_piece_char#14 call render_playfield - to:main::@25 -main::@25: scope:[main] from main::@24 - (byte) current_movedown_counter#29 ← phi( main::@24/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#34 ← phi( main::@24/(byte) keyboard_modifiers#40 ) - (byte) keyboard_events_size#40 ← phi( main::@24/(byte) keyboard_events_size#49 ) - (byte) current_piece_char#48 ← phi( main::@24/(byte) current_piece_char#5 ) - (byte*) current_piece_gfx#64 ← phi( main::@24/(byte*) current_piece_gfx#7 ) - (byte) current_orientation#58 ← phi( main::@24/(byte) current_orientation#7 ) - (byte*) current_piece#49 ← phi( main::@24/(byte*) current_piece#5 ) - (byte) current_xpos#66 ← phi( main::@24/(byte) current_xpos#8 ) - (byte) current_ypos#24 ← phi( main::@24/(byte) current_ypos#6 ) + to:main::@27 +main::@27: scope:[main] from main::@26 + (byte) current_movedown_counter#29 ← phi( main::@26/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#34 ← phi( main::@26/(byte) keyboard_modifiers#40 ) + (byte) keyboard_events_size#40 ← phi( main::@26/(byte) keyboard_events_size#49 ) + (byte) current_piece_char#48 ← phi( main::@26/(byte) current_piece_char#5 ) + (byte*) current_piece_gfx#64 ← phi( main::@26/(byte*) current_piece_gfx#7 ) + (byte) current_orientation#58 ← phi( main::@26/(byte) current_orientation#7 ) + (byte*) current_piece#49 ← phi( main::@26/(byte*) current_piece#5 ) + (byte) current_xpos#66 ← phi( main::@26/(byte) current_xpos#8 ) + (byte) current_ypos#24 ← phi( main::@26/(byte) current_ypos#6 ) call render_current - to:main::@26 -main::@26: scope:[main] from main::@25 - (byte) current_movedown_counter#24 ← phi( main::@25/(byte) current_movedown_counter#29 ) - (byte) keyboard_modifiers#30 ← phi( main::@25/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#33 ← phi( main::@25/(byte) keyboard_events_size#40 ) - (byte) current_piece_char#35 ← phi( main::@25/(byte) current_piece_char#48 ) - (byte) current_ypos#47 ← phi( main::@25/(byte) current_ypos#24 ) - (byte) current_xpos#63 ← phi( main::@25/(byte) current_xpos#66 ) - (byte*) current_piece_gfx#50 ← phi( main::@25/(byte*) current_piece_gfx#64 ) - (byte) current_orientation#48 ← phi( main::@25/(byte) current_orientation#58 ) - (byte*) current_piece#39 ← phi( main::@25/(byte*) current_piece#49 ) + to:main::@28 +main::@28: scope:[main] from main::@27 + (byte) current_movedown_counter#24 ← phi( main::@27/(byte) current_movedown_counter#29 ) + (byte) keyboard_modifiers#30 ← phi( main::@27/(byte) keyboard_modifiers#34 ) + (byte) keyboard_events_size#33 ← phi( main::@27/(byte) keyboard_events_size#40 ) + (byte) current_piece_char#35 ← phi( main::@27/(byte) current_piece_char#48 ) + (byte) current_ypos#47 ← phi( main::@27/(byte) current_ypos#24 ) + (byte) current_xpos#63 ← phi( main::@27/(byte) current_xpos#66 ) + (byte*) current_piece_gfx#50 ← phi( main::@27/(byte*) current_piece_gfx#64 ) + (byte) current_orientation#48 ← phi( main::@27/(byte) current_orientation#58 ) + (byte*) current_piece#39 ← phi( main::@27/(byte*) current_piece#49 ) to:main::@1 -main::@1: scope:[main] from main::@10 main::@26 - (byte) current_movedown_counter#19 ← phi( main::@10/(byte) current_movedown_counter#23 main::@26/(byte) current_movedown_counter#24 ) - (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@26/(byte) keyboard_modifiers#30 ) - (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@26/(byte) keyboard_events_size#33 ) - (byte) current_piece_char#25 ← phi( main::@10/(byte) current_piece_char#34 main::@26/(byte) current_piece_char#35 ) - (byte) current_ypos#38 ← phi( main::@10/(byte) current_ypos#46 main::@26/(byte) current_ypos#47 ) - (byte) current_xpos#46 ← phi( main::@10/(byte) current_xpos#62 main::@26/(byte) current_xpos#63 ) - (byte*) current_piece_gfx#35 ← phi( main::@10/(byte*) current_piece_gfx#49 main::@26/(byte*) current_piece_gfx#50 ) - (byte) current_orientation#39 ← phi( main::@10/(byte) current_orientation#47 main::@26/(byte) current_orientation#48 ) - (byte*) current_piece#28 ← phi( main::@10/(byte*) current_piece#38 main::@26/(byte*) current_piece#39 ) +main::@1: scope:[main] from main::@10 main::@28 + (byte) current_movedown_counter#19 ← phi( main::@10/(byte) current_movedown_counter#23 main::@28/(byte) current_movedown_counter#24 ) + (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@28/(byte) keyboard_modifiers#30 ) + (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@28/(byte) keyboard_events_size#33 ) + (byte) current_piece_char#25 ← phi( main::@10/(byte) current_piece_char#34 main::@28/(byte) current_piece_char#35 ) + (byte) current_ypos#38 ← phi( main::@10/(byte) current_ypos#46 main::@28/(byte) current_ypos#47 ) + (byte) current_xpos#46 ← phi( main::@10/(byte) current_xpos#62 main::@28/(byte) current_xpos#63 ) + (byte*) current_piece_gfx#35 ← phi( main::@10/(byte*) current_piece_gfx#49 main::@28/(byte*) current_piece_gfx#50 ) + (byte) current_orientation#39 ← phi( main::@10/(byte) current_orientation#47 main::@28/(byte) current_orientation#48 ) + (byte*) current_piece#28 ← phi( main::@10/(byte*) current_piece#38 main::@28/(byte*) current_piece#39 ) if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) current_piece_char#71 ← phi( main::@1/(byte) current_piece_char#25 ) - (byte) current_xpos#93 ← phi( main::@1/(byte) current_xpos#46 ) - (byte*) current_piece_gfx#83 ← phi( main::@1/(byte*) current_piece_gfx#35 ) - (byte) current_orientation#71 ← phi( main::@1/(byte) current_orientation#39 ) - (byte*) current_piece#67 ← phi( main::@1/(byte*) current_piece#28 ) - (byte) current_ypos#68 ← phi( main::@1/(byte) current_ypos#38 ) + (byte) current_piece_char#77 ← phi( main::@1/(byte) current_piece_char#25 ) + (byte) current_xpos#99 ← phi( main::@1/(byte) current_xpos#46 ) + (byte*) current_piece_gfx#89 ← phi( main::@1/(byte*) current_piece_gfx#35 ) + (byte) current_orientation#73 ← phi( main::@1/(byte) current_orientation#39 ) + (byte*) current_piece#69 ← phi( main::@1/(byte*) current_piece#28 ) + (byte) current_ypos#73 ← phi( main::@1/(byte) current_ypos#38 ) (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#19 ) (byte) keyboard_modifiers#41 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#50 ← phi( main::@1/(byte) keyboard_events_size#27 ) to:main::@4 main::@4: scope:[main] from main::@2 main::@5 - (byte) current_piece_char#66 ← phi( main::@2/(byte) current_piece_char#71 main::@5/(byte) current_piece_char#72 ) - (byte) current_xpos#91 ← phi( main::@2/(byte) current_xpos#93 main::@5/(byte) current_xpos#94 ) - (byte*) current_piece_gfx#78 ← phi( main::@2/(byte*) current_piece_gfx#83 main::@5/(byte*) current_piece_gfx#84 ) - (byte) current_orientation#68 ← phi( main::@2/(byte) current_orientation#71 main::@5/(byte) current_orientation#72 ) - (byte*) current_piece#62 ← phi( main::@2/(byte*) current_piece#67 main::@5/(byte*) current_piece#68 ) - (byte) current_ypos#66 ← phi( main::@2/(byte) current_ypos#68 main::@5/(byte) current_ypos#69 ) + (byte) current_piece_char#69 ← phi( main::@2/(byte) current_piece_char#77 main::@5/(byte) current_piece_char#78 ) + (byte) current_xpos#95 ← phi( main::@2/(byte) current_xpos#99 main::@5/(byte) current_xpos#100 ) + (byte*) current_piece_gfx#82 ← phi( main::@2/(byte*) current_piece_gfx#89 main::@5/(byte*) current_piece_gfx#90 ) + (byte) current_orientation#69 ← phi( main::@2/(byte) current_orientation#73 main::@5/(byte) current_orientation#74 ) + (byte*) current_piece#63 ← phi( main::@2/(byte*) current_piece#69 main::@5/(byte*) current_piece#70 ) + (byte) current_ypos#69 ← phi( main::@2/(byte) current_ypos#73 main::@5/(byte) current_ypos#74 ) (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) (byte) keyboard_modifiers#35 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) (byte) keyboard_events_size#41 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) - (bool~) main::$6 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 - if((bool~) main::$6) goto main::@5 + (bool~) main::$8 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 + if((bool~) main::$8) goto main::@5 to:main::@7 main::@5: scope:[main] from main::@4 - (byte) current_piece_char#72 ← phi( main::@4/(byte) current_piece_char#66 ) - (byte) current_xpos#94 ← phi( main::@4/(byte) current_xpos#91 ) - (byte*) current_piece_gfx#84 ← phi( main::@4/(byte*) current_piece_gfx#78 ) - (byte) current_orientation#72 ← phi( main::@4/(byte) current_orientation#68 ) - (byte*) current_piece#68 ← phi( main::@4/(byte*) current_piece#62 ) - (byte) current_ypos#69 ← phi( main::@4/(byte) current_ypos#66 ) + (byte) current_piece_char#78 ← phi( main::@4/(byte) current_piece_char#69 ) + (byte) current_xpos#100 ← phi( main::@4/(byte) current_xpos#95 ) + (byte*) current_piece_gfx#90 ← phi( main::@4/(byte*) current_piece_gfx#82 ) + (byte) current_orientation#74 ← phi( main::@4/(byte) current_orientation#69 ) + (byte*) current_piece#70 ← phi( main::@4/(byte*) current_piece#63 ) + (byte) current_ypos#74 ← phi( main::@4/(byte) current_ypos#69 ) (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#38 ) (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#35 ) (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#41 ) to:main::@4 main::@7: scope:[main] from main::@4 main::@8 - (byte) current_piece_char#59 ← phi( main::@4/(byte) current_piece_char#66 main::@8/(byte) current_piece_char#67 ) - (byte) current_xpos#86 ← phi( main::@4/(byte) current_xpos#91 main::@8/(byte) current_xpos#92 ) - (byte*) current_piece_gfx#75 ← phi( main::@4/(byte*) current_piece_gfx#78 main::@8/(byte*) current_piece_gfx#79 ) - (byte) current_orientation#64 ← phi( main::@4/(byte) current_orientation#68 main::@8/(byte) current_orientation#69 ) - (byte*) current_piece#58 ← phi( main::@4/(byte*) current_piece#62 main::@8/(byte*) current_piece#63 ) - (byte) current_ypos#63 ← phi( main::@4/(byte) current_ypos#66 main::@8/(byte) current_ypos#67 ) + (byte) current_piece_char#60 ← phi( main::@4/(byte) current_piece_char#69 main::@8/(byte) current_piece_char#70 ) + (byte) current_xpos#88 ← phi( main::@4/(byte) current_xpos#95 main::@8/(byte) current_xpos#96 ) + (byte*) current_piece_gfx#77 ← phi( main::@4/(byte*) current_piece_gfx#82 main::@8/(byte*) current_piece_gfx#83 ) + (byte) current_orientation#64 ← phi( main::@4/(byte) current_orientation#69 main::@8/(byte) current_orientation#70 ) + (byte*) current_piece#58 ← phi( main::@4/(byte*) current_piece#63 main::@8/(byte*) current_piece#64 ) + (byte) current_ypos#64 ← phi( main::@4/(byte) current_ypos#69 main::@8/(byte) current_ypos#70 ) (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#38 main::@8/(byte) current_movedown_counter#39 ) (byte) keyboard_modifiers#31 ← phi( main::@4/(byte) keyboard_modifiers#35 main::@8/(byte) keyboard_modifiers#36 ) (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#41 main::@8/(byte) keyboard_events_size#42 ) - (bool~) main::$7 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 - if((bool~) main::$7) goto main::@8 + (bool~) main::$9 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 + if((bool~) main::$9) goto main::@8 to:main::@9 main::@8: scope:[main] from main::@7 - (byte) current_piece_char#67 ← phi( main::@7/(byte) current_piece_char#59 ) - (byte) current_xpos#92 ← phi( main::@7/(byte) current_xpos#86 ) - (byte*) current_piece_gfx#79 ← phi( main::@7/(byte*) current_piece_gfx#75 ) - (byte) current_orientation#69 ← phi( main::@7/(byte) current_orientation#64 ) - (byte*) current_piece#63 ← phi( main::@7/(byte*) current_piece#58 ) - (byte) current_ypos#67 ← phi( main::@7/(byte) current_ypos#63 ) + (byte) current_piece_char#70 ← phi( main::@7/(byte) current_piece_char#60 ) + (byte) current_xpos#96 ← phi( main::@7/(byte) current_xpos#88 ) + (byte*) current_piece_gfx#83 ← phi( main::@7/(byte*) current_piece_gfx#77 ) + (byte) current_orientation#70 ← phi( main::@7/(byte) current_orientation#64 ) + (byte*) current_piece#64 ← phi( main::@7/(byte*) current_piece#58 ) + (byte) current_ypos#70 ← phi( main::@7/(byte) current_ypos#64 ) (byte) current_movedown_counter#39 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#36 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#42 ← phi( main::@7/(byte) keyboard_events_size#34 ) to:main::@7 main::@9: scope:[main] from main::@7 - (byte) current_piece_char#49 ← phi( main::@7/(byte) current_piece_char#59 ) - (byte) current_xpos#77 ← phi( main::@7/(byte) current_xpos#86 ) - (byte*) current_piece_gfx#65 ← phi( main::@7/(byte*) current_piece_gfx#75 ) + (byte) current_piece_char#49 ← phi( main::@7/(byte) current_piece_char#60 ) + (byte) current_xpos#78 ← phi( main::@7/(byte) current_xpos#88 ) + (byte*) current_piece_gfx#65 ← phi( main::@7/(byte*) current_piece_gfx#77 ) (byte) current_orientation#59 ← phi( main::@7/(byte) current_orientation#64 ) (byte*) current_piece#50 ← phi( main::@7/(byte*) current_piece#58 ) - (byte) current_ypos#57 ← phi( main::@7/(byte) current_ypos#63 ) + (byte) current_ypos#57 ← phi( main::@7/(byte) current_ypos#64 ) (byte) current_movedown_counter#30 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#23 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#26 ← phi( main::@7/(byte) keyboard_events_size#34 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call keyboard_event_scan - to:main::@27 -main::@27: scope:[main] from main::@9 + to:main::@29 +main::@29: scope:[main] from main::@9 (byte) current_piece_char#36 ← phi( main::@9/(byte) current_piece_char#49 ) - (byte) current_xpos#64 ← phi( main::@9/(byte) current_xpos#77 ) + (byte) current_xpos#64 ← phi( main::@9/(byte) current_xpos#78 ) (byte*) current_piece_gfx#51 ← phi( main::@9/(byte*) current_piece_gfx#65 ) (byte) current_orientation#49 ← phi( main::@9/(byte) current_orientation#59 ) (byte*) current_piece#40 ← phi( main::@9/(byte*) current_piece#50 ) @@ -1900,40 +2180,40 @@ main::@27: scope:[main] from main::@9 (byte) keyboard_modifiers#7 ← (byte) keyboard_modifiers#15 call keyboard_event_get (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@28 -main::@28: scope:[main] from main::@27 - (byte) keyboard_modifiers#50 ← phi( main::@27/(byte) keyboard_modifiers#7 ) - (byte) current_piece_char#24 ← phi( main::@27/(byte) current_piece_char#36 ) - (byte) current_xpos#45 ← phi( main::@27/(byte) current_xpos#64 ) - (byte*) current_piece_gfx#33 ← phi( main::@27/(byte*) current_piece_gfx#51 ) - (byte) current_orientation#37 ← phi( main::@27/(byte) current_orientation#49 ) - (byte*) current_piece#27 ← phi( main::@27/(byte*) current_piece#40 ) - (byte) current_ypos#37 ← phi( main::@27/(byte) current_ypos#48 ) - (byte) current_movedown_counter#14 ← phi( main::@27/(byte) current_movedown_counter#25 ) - (byte) keyboard_events_size#18 ← phi( main::@27/(byte) keyboard_events_size#5 ) - (byte) keyboard_event_get::return#5 ← phi( main::@27/(byte) keyboard_event_get::return#3 ) - (byte~) main::$9 ← (byte) keyboard_event_get::return#5 + to:main::@30 +main::@30: scope:[main] from main::@29 + (byte) keyboard_modifiers#51 ← phi( main::@29/(byte) keyboard_modifiers#7 ) + (byte) current_piece_char#24 ← phi( main::@29/(byte) current_piece_char#36 ) + (byte) current_xpos#45 ← phi( main::@29/(byte) current_xpos#64 ) + (byte*) current_piece_gfx#33 ← phi( main::@29/(byte*) current_piece_gfx#51 ) + (byte) current_orientation#37 ← phi( main::@29/(byte) current_orientation#49 ) + (byte*) current_piece#27 ← phi( main::@29/(byte*) current_piece#40 ) + (byte) current_ypos#37 ← phi( main::@29/(byte) current_ypos#48 ) + (byte) current_movedown_counter#14 ← phi( main::@29/(byte) current_movedown_counter#25 ) + (byte) keyboard_events_size#18 ← phi( main::@29/(byte) keyboard_events_size#5 ) + (byte) keyboard_event_get::return#5 ← phi( main::@29/(byte) keyboard_event_get::return#3 ) + (byte~) main::$11 ← (byte) keyboard_event_get::return#5 (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 - (byte) main::key_event#0 ← (byte~) main::$9 + (byte) main::key_event#0 ← (byte~) main::$11 (byte) main::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 call play_move_down (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 - to:main::@29 -main::@29: scope:[main] from main::@28 - (byte) keyboard_modifiers#47 ← phi( main::@28/(byte) keyboard_modifiers#50 ) - (byte) keyboard_events_size#59 ← phi( main::@28/(byte) keyboard_events_size#7 ) - (byte) main::key_event#1 ← phi( main::@28/(byte) main::key_event#0 ) - (byte) main::render#4 ← phi( main::@28/(byte) main::render#0 ) - (byte) current_piece_char#15 ← phi( main::@28/(byte) current_piece_char#2 ) - (byte) current_xpos#26 ← phi( main::@28/(byte) current_xpos#2 ) - (byte*) current_piece_gfx#19 ← phi( main::@28/(byte*) current_piece_gfx#2 ) - (byte) current_orientation#22 ← phi( main::@28/(byte) current_orientation#2 ) - (byte*) current_piece#15 ← phi( main::@28/(byte*) current_piece#2 ) - (byte) current_ypos#21 ← phi( main::@28/(byte) current_ypos#3 ) - (byte) current_movedown_counter#11 ← phi( main::@28/(byte) current_movedown_counter#3 ) - (byte) play_move_down::return#5 ← phi( main::@28/(byte) play_move_down::return#3 ) - (byte~) main::$10 ← (byte) play_move_down::return#5 + to:main::@31 +main::@31: scope:[main] from main::@30 + (byte) keyboard_modifiers#47 ← phi( main::@30/(byte) keyboard_modifiers#51 ) + (byte) keyboard_events_size#59 ← phi( main::@30/(byte) keyboard_events_size#7 ) + (byte) main::key_event#1 ← phi( main::@30/(byte) main::key_event#0 ) + (byte) main::render#4 ← phi( main::@30/(byte) main::render#0 ) + (byte) current_piece_char#15 ← phi( main::@30/(byte) current_piece_char#2 ) + (byte) current_xpos#26 ← phi( main::@30/(byte) current_xpos#2 ) + (byte*) current_piece_gfx#19 ← phi( main::@30/(byte*) current_piece_gfx#2 ) + (byte) current_orientation#22 ← phi( main::@30/(byte) current_orientation#2 ) + (byte*) current_piece#15 ← phi( main::@30/(byte*) current_piece#2 ) + (byte) current_ypos#21 ← phi( main::@30/(byte) current_ypos#3 ) + (byte) current_movedown_counter#11 ← phi( main::@30/(byte) current_movedown_counter#3 ) + (byte) play_move_down::return#5 ← phi( main::@30/(byte) play_move_down::return#3 ) + (byte~) main::$12 ← (byte) play_move_down::return#5 (byte) current_movedown_counter#4 ← (byte) current_movedown_counter#11 (byte) current_ypos#7 ← (byte) current_ypos#21 (byte*) current_piece#6 ← (byte*) current_piece#15 @@ -1941,97 +2221,97 @@ main::@29: scope:[main] from main::@28 (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#19 (byte) current_xpos#9 ← (byte) current_xpos#26 (byte) current_piece_char#6 ← (byte) current_piece_char#15 - (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$10 + (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$12 (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#1 call play_move_leftright (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - to:main::@30 -main::@30: scope:[main] from main::@29 - (byte) current_movedown_counter#35 ← phi( main::@29/(byte) current_movedown_counter#4 ) - (byte) keyboard_modifiers#43 ← phi( main::@29/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#52 ← phi( main::@29/(byte) keyboard_events_size#59 ) - (byte) current_piece_char#60 ← phi( main::@29/(byte) current_piece_char#6 ) - (byte*) current_piece#56 ← phi( main::@29/(byte*) current_piece#6 ) - (byte) current_ypos#54 ← phi( main::@29/(byte) current_ypos#7 ) - (byte*) current_piece_gfx#34 ← phi( main::@29/(byte*) current_piece_gfx#8 ) - (byte) current_orientation#38 ← phi( main::@29/(byte) current_orientation#8 ) - (byte) main::key_event#2 ← phi( main::@29/(byte) main::key_event#1 ) - (byte) main::render#5 ← phi( main::@29/(byte) main::render#1 ) - (byte) current_xpos#27 ← phi( main::@29/(byte) current_xpos#4 ) - (byte) play_move_leftright::return#6 ← phi( main::@29/(byte) play_move_leftright::return#4 ) - (byte~) main::$11 ← (byte) play_move_leftright::return#6 + to:main::@32 +main::@32: scope:[main] from main::@31 + (byte) current_movedown_counter#35 ← phi( main::@31/(byte) current_movedown_counter#4 ) + (byte) keyboard_modifiers#43 ← phi( main::@31/(byte) keyboard_modifiers#47 ) + (byte) keyboard_events_size#52 ← phi( main::@31/(byte) keyboard_events_size#59 ) + (byte) current_piece_char#61 ← phi( main::@31/(byte) current_piece_char#6 ) + (byte*) current_piece#56 ← phi( main::@31/(byte*) current_piece#6 ) + (byte) current_ypos#54 ← phi( main::@31/(byte) current_ypos#7 ) + (byte*) current_piece_gfx#34 ← phi( main::@31/(byte*) current_piece_gfx#8 ) + (byte) current_orientation#38 ← phi( main::@31/(byte) current_orientation#8 ) + (byte) main::key_event#2 ← phi( main::@31/(byte) main::key_event#1 ) + (byte) main::render#5 ← phi( main::@31/(byte) main::render#1 ) + (byte) current_xpos#27 ← phi( main::@31/(byte) current_xpos#4 ) + (byte) play_move_leftright::return#6 ← phi( main::@31/(byte) play_move_leftright::return#4 ) + (byte~) main::$13 ← (byte) play_move_leftright::return#6 (byte) current_xpos#10 ← (byte) current_xpos#27 - (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$11 + (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$13 (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#2 call play_move_rotate (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - to:main::@31 -main::@31: scope:[main] from main::@30 - (byte) current_movedown_counter#31 ← phi( main::@30/(byte) current_movedown_counter#35 ) - (byte) keyboard_modifiers#37 ← phi( main::@30/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@30/(byte) keyboard_events_size#52 ) - (byte) current_piece_char#50 ← phi( main::@30/(byte) current_piece_char#60 ) - (byte) current_ypos#58 ← phi( main::@30/(byte) current_ypos#54 ) - (byte) current_xpos#78 ← phi( main::@30/(byte) current_xpos#10 ) - (byte*) current_piece#51 ← phi( main::@30/(byte*) current_piece#56 ) - (byte) main::render#6 ← phi( main::@30/(byte) main::render#2 ) - (byte*) current_piece_gfx#20 ← phi( main::@30/(byte*) current_piece_gfx#3 ) - (byte) current_orientation#23 ← phi( main::@30/(byte) current_orientation#3 ) - (byte) play_move_rotate::return#6 ← phi( main::@30/(byte) play_move_rotate::return#4 ) - (byte~) main::$12 ← (byte) play_move_rotate::return#6 + to:main::@33 +main::@33: scope:[main] from main::@32 + (byte) current_movedown_counter#31 ← phi( main::@32/(byte) current_movedown_counter#35 ) + (byte) keyboard_modifiers#37 ← phi( main::@32/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#43 ← phi( main::@32/(byte) keyboard_events_size#52 ) + (byte) current_piece_char#50 ← phi( main::@32/(byte) current_piece_char#61 ) + (byte) current_ypos#58 ← phi( main::@32/(byte) current_ypos#54 ) + (byte) current_xpos#79 ← phi( main::@32/(byte) current_xpos#10 ) + (byte*) current_piece#51 ← phi( main::@32/(byte*) current_piece#56 ) + (byte) main::render#6 ← phi( main::@32/(byte) main::render#2 ) + (byte*) current_piece_gfx#20 ← phi( main::@32/(byte*) current_piece_gfx#3 ) + (byte) current_orientation#23 ← phi( main::@32/(byte) current_orientation#3 ) + (byte) play_move_rotate::return#6 ← phi( main::@32/(byte) play_move_rotate::return#4 ) + (byte~) main::$14 ← (byte) play_move_rotate::return#6 (byte) current_orientation#9 ← (byte) current_orientation#23 (byte*) current_piece_gfx#9 ← (byte*) current_piece_gfx#20 - (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$12 - (bool~) main::$13 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) main::$14 ← ! (bool~) main::$13 - if((bool~) main::$14) goto main::@10 + (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$14 + (bool~) main::$15 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) main::$16 ← ! (bool~) main::$15 + if((bool~) main::$16) goto main::@10 to:main::@19 -main::@10: scope:[main] from main::@31 main::@33 - (byte) current_movedown_counter#23 ← phi( main::@31/(byte) current_movedown_counter#31 main::@33/(byte) current_movedown_counter#32 ) - (byte) keyboard_modifiers#29 ← phi( main::@31/(byte) keyboard_modifiers#37 main::@33/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#32 ← phi( main::@31/(byte) keyboard_events_size#43 main::@33/(byte) keyboard_events_size#44 ) - (byte) current_piece_char#34 ← phi( main::@31/(byte) current_piece_char#50 main::@33/(byte) current_piece_char#51 ) - (byte) current_ypos#46 ← phi( main::@31/(byte) current_ypos#58 main::@33/(byte) current_ypos#59 ) - (byte) current_xpos#62 ← phi( main::@31/(byte) current_xpos#78 main::@33/(byte) current_xpos#79 ) - (byte*) current_piece_gfx#49 ← phi( main::@31/(byte*) current_piece_gfx#9 main::@33/(byte*) current_piece_gfx#66 ) - (byte) current_orientation#47 ← phi( main::@31/(byte) current_orientation#9 main::@33/(byte) current_orientation#60 ) - (byte*) current_piece#38 ← phi( main::@31/(byte*) current_piece#51 main::@33/(byte*) current_piece#52 ) +main::@10: scope:[main] from main::@33 main::@35 + (byte) current_movedown_counter#23 ← phi( main::@33/(byte) current_movedown_counter#31 main::@35/(byte) current_movedown_counter#32 ) + (byte) keyboard_modifiers#29 ← phi( main::@33/(byte) keyboard_modifiers#37 main::@35/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#32 ← phi( main::@33/(byte) keyboard_events_size#43 main::@35/(byte) keyboard_events_size#44 ) + (byte) current_piece_char#34 ← phi( main::@33/(byte) current_piece_char#50 main::@35/(byte) current_piece_char#51 ) + (byte) current_ypos#46 ← phi( main::@33/(byte) current_ypos#58 main::@35/(byte) current_ypos#59 ) + (byte) current_xpos#62 ← phi( main::@33/(byte) current_xpos#79 main::@35/(byte) current_xpos#80 ) + (byte*) current_piece_gfx#49 ← phi( main::@33/(byte*) current_piece_gfx#9 main::@35/(byte*) current_piece_gfx#66 ) + (byte) current_orientation#47 ← phi( main::@33/(byte) current_orientation#9 main::@35/(byte) current_orientation#60 ) + (byte*) current_piece#38 ← phi( main::@33/(byte*) current_piece#51 main::@35/(byte*) current_piece#52 ) *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) to:main::@1 -main::@19: scope:[main] from main::@31 - (byte) current_movedown_counter#40 ← phi( main::@31/(byte) current_movedown_counter#31 ) - (byte) keyboard_modifiers#48 ← phi( main::@31/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#60 ← phi( main::@31/(byte) keyboard_events_size#43 ) - (byte) current_piece_char#68 ← phi( main::@31/(byte) current_piece_char#50 ) - (byte) current_orientation#70 ← phi( main::@31/(byte) current_orientation#9 ) - (byte*) current_piece#64 ← phi( main::@31/(byte*) current_piece#51 ) - (byte*) current_piece_gfx#80 ← phi( main::@31/(byte*) current_piece_gfx#9 ) - (byte) current_xpos#87 ← phi( main::@31/(byte) current_xpos#78 ) - (byte) current_ypos#49 ← phi( main::@31/(byte) current_ypos#58 ) +main::@19: scope:[main] from main::@33 + (byte) current_movedown_counter#40 ← phi( main::@33/(byte) current_movedown_counter#31 ) + (byte) keyboard_modifiers#48 ← phi( main::@33/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#60 ← phi( main::@33/(byte) keyboard_events_size#43 ) + (byte) current_piece_char#71 ← phi( main::@33/(byte) current_piece_char#50 ) + (byte) current_orientation#71 ← phi( main::@33/(byte) current_orientation#9 ) + (byte*) current_piece#65 ← phi( main::@33/(byte*) current_piece#51 ) + (byte*) current_piece_gfx#84 ← phi( main::@33/(byte*) current_piece_gfx#9 ) + (byte) current_xpos#89 ← phi( main::@33/(byte) current_xpos#79 ) + (byte) current_ypos#49 ← phi( main::@33/(byte) current_ypos#58 ) call render_playfield - to:main::@32 -main::@32: scope:[main] from main::@19 + to:main::@34 +main::@34: scope:[main] from main::@19 (byte) current_movedown_counter#36 ← phi( main::@19/(byte) current_movedown_counter#40 ) (byte) keyboard_modifiers#44 ← phi( main::@19/(byte) keyboard_modifiers#48 ) (byte) keyboard_events_size#53 ← phi( main::@19/(byte) keyboard_events_size#60 ) - (byte) current_piece_char#61 ← phi( main::@19/(byte) current_piece_char#68 ) - (byte) current_orientation#65 ← phi( main::@19/(byte) current_orientation#70 ) - (byte*) current_piece#59 ← phi( main::@19/(byte*) current_piece#64 ) - (byte*) current_piece_gfx#67 ← phi( main::@19/(byte*) current_piece_gfx#80 ) - (byte) current_xpos#67 ← phi( main::@19/(byte) current_xpos#87 ) + (byte) current_piece_char#62 ← phi( main::@19/(byte) current_piece_char#71 ) + (byte) current_orientation#65 ← phi( main::@19/(byte) current_orientation#71 ) + (byte*) current_piece#59 ← phi( main::@19/(byte*) current_piece#65 ) + (byte*) current_piece_gfx#67 ← phi( main::@19/(byte*) current_piece_gfx#84 ) + (byte) current_xpos#67 ← phi( main::@19/(byte) current_xpos#89 ) (byte) current_ypos#25 ← phi( main::@19/(byte) current_ypos#49 ) call render_current - to:main::@33 -main::@33: scope:[main] from main::@32 - (byte) current_movedown_counter#32 ← phi( main::@32/(byte) current_movedown_counter#36 ) - (byte) keyboard_modifiers#38 ← phi( main::@32/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#44 ← phi( main::@32/(byte) keyboard_events_size#53 ) - (byte) current_piece_char#51 ← phi( main::@32/(byte) current_piece_char#61 ) - (byte) current_ypos#59 ← phi( main::@32/(byte) current_ypos#25 ) - (byte) current_xpos#79 ← phi( main::@32/(byte) current_xpos#67 ) - (byte*) current_piece_gfx#66 ← phi( main::@32/(byte*) current_piece_gfx#67 ) - (byte) current_orientation#60 ← phi( main::@32/(byte) current_orientation#65 ) - (byte*) current_piece#52 ← phi( main::@32/(byte*) current_piece#59 ) + to:main::@35 +main::@35: scope:[main] from main::@34 + (byte) current_movedown_counter#32 ← phi( main::@34/(byte) current_movedown_counter#36 ) + (byte) keyboard_modifiers#38 ← phi( main::@34/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#44 ← phi( main::@34/(byte) keyboard_events_size#53 ) + (byte) current_piece_char#51 ← phi( main::@34/(byte) current_piece_char#62 ) + (byte) current_ypos#59 ← phi( main::@34/(byte) current_ypos#25 ) + (byte) current_xpos#80 ← phi( main::@34/(byte) current_xpos#67 ) + (byte*) current_piece_gfx#66 ← phi( main::@34/(byte*) current_piece_gfx#67 ) + (byte) current_orientation#60 ← phi( main::@34/(byte) current_orientation#65 ) + (byte*) current_piece#52 ← phi( main::@34/(byte*) current_piece#59 ) to:main::@10 main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#12 ← phi( main::@1/(byte) current_movedown_counter#19 ) @@ -2054,28 +2334,32 @@ main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 return to:@return -@27: scope:[] from @21 - (byte) current_movedown_counter#20 ← phi( @21/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @21/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @21/(byte) keyboard_events_size#35 ) - (byte) current_piece_char#26 ← phi( @21/(byte) current_piece_char#37 ) - (byte) current_ypos#39 ← phi( @21/(byte) current_ypos#50 ) - (byte) current_xpos#47 ← phi( @21/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#36 ← phi( @21/(byte*) current_piece_gfx#52 ) - (byte) current_orientation#40 ← phi( @21/(byte) current_orientation#50 ) - (byte*) current_piece#29 ← phi( @21/(byte*) current_piece#41 ) +@30: scope:[] from @24 + (byte) irq_raster_next#15 ← phi( @24/(byte) irq_raster_next#16 ) + (byte) irq_cnt#11 ← phi( @24/(byte) irq_cnt#15 ) + (byte) irq_sprite_ptr#12 ← phi( @24/(byte) irq_sprite_ptr#13 ) + (byte) current_movedown_counter#20 ← phi( @24/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @24/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @24/(byte) keyboard_events_size#35 ) + (byte) current_piece_char#26 ← phi( @24/(byte) current_piece_char#37 ) + (byte) current_ypos#39 ← phi( @24/(byte) current_ypos#50 ) + (byte) current_xpos#47 ← phi( @24/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#36 ← phi( @24/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @24/(byte) current_orientation#50 ) + (byte*) current_piece#29 ← phi( @24/(byte*) current_piece#41 ) + (byte) irq_sprite_ypos#8 ← phi( @24/(byte) irq_sprite_ypos#13 ) call main - to:@28 -@28: scope:[] from @27 - (byte) current_movedown_counter#13 ← phi( @27/(byte) current_movedown_counter#5 ) - (byte) keyboard_modifiers#17 ← phi( @27/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @27/(byte) keyboard_events_size#8 ) - (byte) current_piece_char#17 ← phi( @27/(byte) current_piece_char#7 ) - (byte) current_ypos#23 ← phi( @27/(byte) current_ypos#8 ) - (byte) current_xpos#29 ← phi( @27/(byte) current_xpos#11 ) - (byte*) current_piece_gfx#22 ← phi( @27/(byte*) current_piece_gfx#10 ) - (byte) current_orientation#25 ← phi( @27/(byte) current_orientation#10 ) - (byte*) current_piece#17 ← phi( @27/(byte*) current_piece#7 ) + to:@32 +@32: scope:[] from @30 + (byte) current_movedown_counter#13 ← phi( @30/(byte) current_movedown_counter#5 ) + (byte) keyboard_modifiers#17 ← phi( @30/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @30/(byte) keyboard_events_size#8 ) + (byte) current_piece_char#17 ← phi( @30/(byte) current_piece_char#7 ) + (byte) current_ypos#23 ← phi( @30/(byte) current_ypos#8 ) + (byte) current_xpos#29 ← phi( @30/(byte) current_xpos#11 ) + (byte*) current_piece_gfx#22 ← phi( @30/(byte*) current_piece_gfx#10 ) + (byte) current_orientation#25 ← phi( @30/(byte) current_orientation#10 ) + (byte*) current_piece#17 ← phi( @30/(byte*) current_piece#7 ) (byte*) current_piece#8 ← (byte*) current_piece#17 (byte) current_orientation#11 ← (byte) current_orientation#25 (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 @@ -2086,7 +2370,7 @@ main::@return: scope:[main] from main::@1 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 to:@end -@end: scope:[] from @28 +@end: scope:[] from @32 SYMBOL TABLE SSA (byte~) $0 @@ -2108,7 +2392,7 @@ SYMBOL TABLE SSA (word~) $23 (word~) $24 (byte/signed word/word/dword/signed dword~) $25 -(byte/signed word/word/dword/signed dword~) $3 +(byte~) $3 (byte/signed byte/word/signed word/dword/signed dword~) $4 (byte/signed word/word/dword/signed dword/signed byte~) $5 (byte/signed byte/word/signed word/dword/signed dword~) $6 @@ -2118,9 +2402,12 @@ SYMBOL TABLE SSA (label) @12 (label) @14 (label) @18 +(label) @19 (label) @21 -(label) @27 -(label) @28 +(label) @24 +(label) @30 +(label) @31 +(label) @32 (label) @5 (label) @9 (label) @begin @@ -2205,6 +2492,8 @@ SYMBOL TABLE SSA (byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 +(byte) IRQ_RASTER_FIRST +(byte) IRQ_RASTER_FIRST#0 (byte*) IRQ_STATUS (byte*) IRQ_STATUS#0 (void()**) KERNEL_IRQ @@ -2533,6 +2822,8 @@ SYMBOL TABLE SSA (byte) current_movedown_counter#43 (byte) current_movedown_counter#44 (byte) current_movedown_counter#45 +(byte) current_movedown_counter#46 +(byte) current_movedown_counter#47 (byte) current_movedown_counter#5 (byte) current_movedown_counter#6 (byte) current_movedown_counter#7 @@ -2614,6 +2905,8 @@ SYMBOL TABLE SSA (byte) current_orientation#70 (byte) current_orientation#71 (byte) current_orientation#72 +(byte) current_orientation#73 +(byte) current_orientation#74 (byte) current_orientation#8 (byte) current_orientation#9 (byte*) current_piece @@ -2683,7 +2976,9 @@ SYMBOL TABLE SSA (byte*) current_piece#66 (byte*) current_piece#67 (byte*) current_piece#68 +(byte*) current_piece#69 (byte*) current_piece#7 +(byte*) current_piece#70 (byte*) current_piece#8 (byte*) current_piece#9 (byte) current_piece_char @@ -2758,7 +3053,15 @@ SYMBOL TABLE SSA (byte) current_piece_char#70 (byte) current_piece_char#71 (byte) current_piece_char#72 +(byte) current_piece_char#73 +(byte) current_piece_char#74 +(byte) current_piece_char#75 +(byte) current_piece_char#76 +(byte) current_piece_char#77 +(byte) current_piece_char#78 +(byte) current_piece_char#79 (byte) current_piece_char#8 +(byte) current_piece_char#80 (byte) current_piece_char#9 (byte*) current_piece_gfx (byte*) current_piece_gfx#0 @@ -2845,11 +3148,22 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#84 +(byte*) current_piece_gfx#85 +(byte*) current_piece_gfx#86 +(byte*) current_piece_gfx#87 +(byte*) current_piece_gfx#88 +(byte*) current_piece_gfx#89 (byte*) current_piece_gfx#9 +(byte*) current_piece_gfx#90 +(byte*) current_piece_gfx#91 +(byte*) current_piece_gfx#92 (byte) current_xpos (byte) current_xpos#0 (byte) current_xpos#1 (byte) current_xpos#10 +(byte) current_xpos#100 +(byte) current_xpos#101 +(byte) current_xpos#102 (byte) current_xpos#11 (byte) current_xpos#12 (byte) current_xpos#13 @@ -2942,6 +3256,11 @@ SYMBOL TABLE SSA (byte) current_xpos#92 (byte) current_xpos#93 (byte) current_xpos#94 +(byte) current_xpos#95 +(byte) current_xpos#96 +(byte) current_xpos#97 +(byte) current_xpos#98 +(byte) current_xpos#99 (byte) current_ypos (byte) current_ypos#0 (byte) current_ypos#1 @@ -3011,6 +3330,13 @@ SYMBOL TABLE SSA (byte) current_ypos#68 (byte) current_ypos#69 (byte) current_ypos#7 +(byte) current_ypos#70 +(byte) current_ypos#71 +(byte) current_ypos#72 +(byte) current_ypos#73 +(byte) current_ypos#74 +(byte) current_ypos#75 +(byte) current_ypos#76 (byte) current_ypos#8 (byte) current_ypos#9 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) @@ -3035,6 +3361,128 @@ SYMBOL TABLE SSA (byte) fill::val#0 (byte) fill::val#1 (byte) fill::val#2 +interrupt(HARDWARE_CLOBBER)(void()) irq() +(bool~) irq::$0 +(bool~) irq::$1 +(byte~) irq::$2 +(byte~) irq::$3 +(bool~) irq::$4 +(bool~) irq::$5 +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@4 +(label) irq::@5 +(label) irq::@6 +(label) irq::@8 +(label) irq::@9 +(label) irq::@return +(byte) irq::ptr +(byte) irq::ptr#0 +(byte) irq::ptr#1 +(byte) irq::ptr#2 +(byte) irq::raster_next +(byte) irq::raster_next#0 +(byte) irq::raster_next#1 +(byte) irq::raster_next#2 +(byte) irq::raster_next#3 +(label) irq::toSpritePtr2 +(word~) irq::toSpritePtr2_$0 +(word) irq::toSpritePtr2_$0#0 +(word~) irq::toSpritePtr2_$1 +(word) irq::toSpritePtr2_$1#0 +(byte~) irq::toSpritePtr2_$2 +(byte) irq::toSpritePtr2_$2#0 +(label) irq::toSpritePtr2_@return +(byte) irq::toSpritePtr2_return +(byte) irq::toSpritePtr2_return#0 +(byte) irq::toSpritePtr2_return#1 +(byte) irq::toSpritePtr2_return#2 +(byte) irq::toSpritePtr2_return#3 +(byte*) irq::toSpritePtr2_sprite +(byte*) irq::toSpritePtr2_sprite#0 +(byte*) irq::toSpritePtr2_sprite#1 +(byte) irq::ypos +(byte) irq::ypos#0 +(byte) irq_cnt +(byte) irq_cnt#0 +(byte) irq_cnt#1 +(byte) irq_cnt#10 +(byte) irq_cnt#11 +(byte) irq_cnt#12 +(byte) irq_cnt#13 +(byte) irq_cnt#14 +(byte) irq_cnt#15 +(byte) irq_cnt#16 +(byte) irq_cnt#17 +(byte) irq_cnt#2 +(byte) irq_cnt#3 +(byte) irq_cnt#4 +(byte) irq_cnt#5 +(byte) irq_cnt#6 +(byte) irq_cnt#7 +(byte) irq_cnt#8 +(byte) irq_cnt#9 +(byte) irq_raster_next +(byte) irq_raster_next#0 +(byte) irq_raster_next#1 +(byte) irq_raster_next#10 +(byte) irq_raster_next#11 +(byte) irq_raster_next#12 +(byte) irq_raster_next#13 +(byte) irq_raster_next#14 +(byte) irq_raster_next#15 +(byte) irq_raster_next#16 +(byte) irq_raster_next#17 +(byte) irq_raster_next#18 +(byte) irq_raster_next#19 +(byte) irq_raster_next#2 +(byte) irq_raster_next#20 +(byte) irq_raster_next#3 +(byte) irq_raster_next#4 +(byte) irq_raster_next#5 +(byte) irq_raster_next#6 +(byte) irq_raster_next#7 +(byte) irq_raster_next#8 +(byte) irq_raster_next#9 +(byte) irq_sprite_ptr +(byte) irq_sprite_ptr#0 +(byte) irq_sprite_ptr#1 +(byte) irq_sprite_ptr#10 +(byte) irq_sprite_ptr#11 +(byte) irq_sprite_ptr#12 +(byte) irq_sprite_ptr#13 +(byte) irq_sprite_ptr#14 +(byte) irq_sprite_ptr#2 +(byte) irq_sprite_ptr#3 +(byte) irq_sprite_ptr#4 +(byte) irq_sprite_ptr#5 +(byte) irq_sprite_ptr#6 +(byte) irq_sprite_ptr#7 +(byte) irq_sprite_ptr#8 +(byte) irq_sprite_ptr#9 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 +(byte) irq_sprite_ypos#1 +(byte) irq_sprite_ypos#10 +(byte) irq_sprite_ypos#11 +(byte) irq_sprite_ypos#12 +(byte) irq_sprite_ypos#13 +(byte) irq_sprite_ypos#14 +(byte) irq_sprite_ypos#15 +(byte) irq_sprite_ypos#16 +(byte) irq_sprite_ypos#17 +(byte) irq_sprite_ypos#18 +(byte) irq_sprite_ypos#19 +(byte) irq_sprite_ypos#2 +(byte) irq_sprite_ypos#20 +(byte) irq_sprite_ypos#3 +(byte) irq_sprite_ypos#4 +(byte) irq_sprite_ypos#5 +(byte) irq_sprite_ypos#6 +(byte) irq_sprite_ypos#7 +(byte) irq_sprite_ypos#8 +(byte) irq_sprite_ypos#9 (byte[]) keyboard_char_keycodes (byte[]) keyboard_char_keycodes#0 (byte()) keyboard_event_get() @@ -3264,6 +3712,13 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#7 (byte) keyboard_events_size#70 (byte) keyboard_events_size#71 +(byte) keyboard_events_size#72 +(byte) keyboard_events_size#73 +(byte) keyboard_events_size#74 +(byte) keyboard_events_size#75 +(byte) keyboard_events_size#76 +(byte) keyboard_events_size#77 +(byte) keyboard_events_size#78 (byte) keyboard_events_size#8 (byte) keyboard_events_size#9 (byte[8]) keyboard_matrix_col_bitmask @@ -3334,6 +3789,13 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#52 +(byte) keyboard_modifiers#53 +(byte) keyboard_modifiers#54 +(byte) keyboard_modifiers#55 +(byte) keyboard_modifiers#56 +(byte) keyboard_modifiers#57 +(byte) keyboard_modifiers#58 +(byte) keyboard_modifiers#59 (byte) keyboard_modifiers#6 (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#8 @@ -3341,14 +3803,14 @@ SYMBOL TABLE SSA (byte[8]) keyboard_scan_values (byte[8]) keyboard_scan_values#0 (void()) main() -(byte~) main::$10 (byte~) main::$11 (byte~) main::$12 -(bool~) main::$13 -(bool~) main::$14 -(bool~) main::$6 -(bool~) main::$7 -(byte~) main::$9 +(byte~) main::$13 +(byte~) main::$14 +(bool~) main::$15 +(bool~) main::$16 +(bool~) main::$8 +(bool~) main::$9 (label) main::@1 (label) main::@10 (label) main::@19 @@ -3366,6 +3828,8 @@ SYMBOL TABLE SSA (label) main::@31 (label) main::@32 (label) main::@33 +(label) main::@34 +(label) main::@35 (label) main::@4 (label) main::@5 (label) main::@7 @@ -3840,8 +4304,9 @@ SYMBOL TABLE SSA (byte[$25]) playfield_lines_idx#0 (void()) render_current() (byte~) render_current::$0 -(byte/signed word/word/dword/signed dword~) render_current::$1 -(bool~) render_current::$2 +(bool~) render_current::$1 +(bool~) render_current::$10 +(byte/signed word/word/dword/signed dword~) render_current::$2 (bool~) render_current::$3 (bool~) render_current::$4 (bool~) render_current::$5 @@ -3850,13 +4315,14 @@ SYMBOL TABLE SSA (bool~) render_current::$8 (bool~) render_current::$9 (label) render_current::@1 +(label) render_current::@10 (label) render_current::@2 (label) render_current::@3 (label) render_current::@4 (label) render_current::@5 (label) render_current::@6 (label) render_current::@7 -(label) render_current::@8 +(label) render_current::@9 (label) render_current::@return (byte) render_current::c (byte) render_current::c#0 @@ -3871,6 +4337,8 @@ SYMBOL TABLE SSA (byte) render_current::i (byte) render_current::i#0 (byte) render_current::i#1 +(byte) render_current::i#10 +(byte) render_current::i#11 (byte) render_current::i#2 (byte) render_current::i#3 (byte) render_current::i#4 @@ -3882,6 +4350,7 @@ SYMBOL TABLE SSA (byte) render_current::l (byte) render_current::l#0 (byte) render_current::l#1 +(byte) render_current::l#10 (byte) render_current::l#2 (byte) render_current::l#3 (byte) render_current::l#4 @@ -3908,6 +4377,7 @@ SYMBOL TABLE SSA (byte) render_current::ypos2 (byte) render_current::ypos2#0 (byte) render_current::ypos2#1 +(byte) render_current::ypos2#10 (byte) render_current::ypos2#2 (byte) render_current::ypos2#3 (byte) render_current::ypos2#4 @@ -3918,20 +4388,23 @@ SYMBOL TABLE SSA (byte) render_current::ypos2#9 (void()) render_init() (byte~) render_init::$1 -(byte~) render_init::$10 -(bool~) render_init::$11 -(byte*~) render_init::$12 -(byte/signed word/word/dword/signed dword~) render_init::$13 -(byte/signed word/word/dword/signed dword~) render_init::$14 +(byte/signed word/word/dword/signed dword~) render_init::$10 +(byte~) render_init::$11 +(bool~) render_init::$12 +(byte/word/signed word/dword/signed dword~) render_init::$13 +(byte*~) render_init::$14 (byte*~) render_init::$15 -(bool~) render_init::$16 -(bool~) render_init::$17 +(byte/signed word/word/dword/signed dword~) render_init::$16 +(byte/signed word/word/dword/signed dword~) render_init::$17 +(byte*~) render_init::$18 +(bool~) render_init::$19 (byte~) render_init::$2 +(bool~) render_init::$20 (byte~) render_init::$3 (byte/word/dword~) render_init::$4 -(byte*~) render_init::$7 +(byte/signed byte/word/signed word/dword/signed dword~) render_init::$7 (byte*~) render_init::$8 -(byte/signed word/word/dword/signed dword~) render_init::$9 +(byte*~) render_init::$9 (label) render_init::@1 (label) render_init::@10 (label) render_init::@2 @@ -4024,10 +4497,11 @@ SYMBOL TABLE SSA (byte) render_init::vicSelectGfxBank1_toDd001_return#3 (void()) render_playfield() (byte/signed word/word/dword/signed dword~) render_playfield::$0 -(byte~) render_playfield::$1 -(byte/signed word/word/dword/signed dword~) render_playfield::$2 -(bool~) render_playfield::$3 +(byte/signed word/word/dword/signed dword~) render_playfield::$1 +(byte~) render_playfield::$2 +(byte/signed word/word/dword/signed dword~) render_playfield::$3 (bool~) render_playfield::$4 +(bool~) render_playfield::$5 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -4048,10 +4522,10 @@ SYMBOL TABLE SSA (byte) render_playfield::l#2 (byte) render_playfield::l#3 (byte) render_playfield::l#4 -(byte*) render_playfield::line -(byte*) render_playfield::line#0 -(byte*) render_playfield::line#1 -(byte*) render_playfield::line#2 +(byte*) render_playfield::screen_line +(byte*) render_playfield::screen_line#0 +(byte*) render_playfield::screen_line#1 +(byte*) render_playfield::screen_line#2 (void()) render_screen_original((byte*) render_screen_original::screen) (byte/signed byte/word/signed word/dword/signed dword~) render_screen_original::$0 (byte*~) render_screen_original::$1 @@ -4108,8 +4582,8 @@ SYMBOL TABLE SSA (byte) render_screen_original::y#4 (byte) render_screen_original::y#5 (byte) render_screen_original::y#6 -(byte*[$3]) screen_lines -(byte*[$3]) screen_lines#0 +(byte*[PLAYFIELD_LINES#0]) screen_lines +(byte*[PLAYFIELD_LINES#0]) screen_lines#0 (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return @@ -4120,6 +4594,43 @@ SYMBOL TABLE SSA (byte) sid_rnd::return#4 (void()) sid_rnd_init() (label) sid_rnd_init::@return +(void()) sprites_init() +(byte/signed byte/word/signed word/dword/signed dword~) sprites_init::$0 +(byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 +(byte~) sprites_init::$2 +(byte/signed word/word/dword/signed dword~) sprites_init::$3 +(bool~) sprites_init::$4 +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#0 +(byte) sprites_init::s#1 +(byte) sprites_init::s#2 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#0 +(byte) sprites_init::xpos#1 +(byte) sprites_init::xpos#2 +(void()) sprites_irq_init() +(void()*~) sprites_irq_init::$0 +(label) sprites_irq_init::@return +(label) toSpritePtr1 +(word~) toSpritePtr1_$0 +(word) toSpritePtr1_$0#0 +(word~) toSpritePtr1_$1 +(word) toSpritePtr1_$1#0 +(byte~) toSpritePtr1_$2 +(byte) toSpritePtr1_$2#0 +(label) toSpritePtr1_@return +(byte) toSpritePtr1_return +(byte) toSpritePtr1_return#0 +(byte) toSpritePtr1_return#1 +(byte) toSpritePtr1_return#2 +(byte) toSpritePtr1_return#3 +(byte*) toSpritePtr1_sprite +(byte*) toSpritePtr1_sprite#0 +(byte*) toSpritePtr1_sprite#1 Inversing boolean not (bool~) keyboard_event_scan::$6 ← (byte~) keyboard_event_scan::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$8 ← (byte) keyboard_events_size#10 == (byte/signed byte/word/signed word/dword/signed dword) 8 from (bool~) keyboard_event_scan::$7 ← (byte) keyboard_events_size#10 != (byte/signed byte/word/signed word/dword/signed dword) 8 @@ -4127,9 +4638,9 @@ Inversing boolean not (bool~) keyboard_event_scan::$16 ← (byte~) keyboard_even Inversing boolean not (bool~) keyboard_event_scan::$20 ← (byte~) keyboard_event_scan::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$19 ← (byte~) keyboard_event_scan::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$24 ← (byte~) keyboard_event_scan::$22 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$23 ← (byte~) keyboard_event_scan::$22 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$28 ← (byte~) keyboard_event_scan::$26 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$27 ← (byte~) keyboard_event_scan::$26 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) render_current::$3 ← (byte) render_current::ypos2#2 >= (byte/signed word/word/dword/signed dword~) render_current::$1 from (bool~) render_current::$2 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$1 -Inversing boolean not (bool~) render_current::$5 ← (byte) render_current::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) render_current::$7 ← (byte) render_current::xpos#3 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_current::$6 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 +Inversing boolean not (bool~) render_current::$6 ← (byte) render_current::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_current::$5 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) render_current::$8 ← (byte) render_current::xpos#3 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_current::$7 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 +Inversing boolean not (bool~) irq::$5 ← (byte~) irq::$3 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) irq::$4 ← (byte~) irq::$3 == (byte/signed byte/word/signed word/dword/signed dword) 3 Inversing boolean not (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 Inversing boolean not (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#8 < (byte) current_movedown_slow#0 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (byte) current_movedown_slow#0 @@ -4147,8 +4658,11 @@ Inversing boolean not (bool~) play_collision::$13 ← *((byte*) play_collision:: Inversing boolean not (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#16 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#16 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_remove_lines::$7 ← (byte) play_remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_remove_lines::$10 ← (byte) play_remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 -Inversing boolean not (bool~) main::$14 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$13 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) main::$16 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$15 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Alias (byte*) fill::end#0 = (byte*~) fill::$0 Alias (byte*) fill::addr#0 = (byte*) fill::start#1 Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 @@ -4169,12 +4683,12 @@ Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_s Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#9 Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2 Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#62 -Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#71 (byte) keyboard_events_size#69 (byte) keyboard_events_size#68 +Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#74 (byte) keyboard_events_size#71 (byte) keyboard_events_size#70 Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#7 Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#18 (byte) keyboard_modifiers#10 Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#8 Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#19 (byte) keyboard_modifiers#26 -Alias (byte) keyboard_events_size#63 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#66 +Alias (byte) keyboard_events_size#63 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#67 Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$17 Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#9 Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#20 (byte) keyboard_modifiers#27 @@ -4191,8 +4705,8 @@ Alias (byte) keyboard_event_pressed::return#11 = (byte) keyboard_event_pressed:: Alias (byte) keyboard_events_size#14 = (byte) keyboard_events_size#25 (byte) keyboard_events_size#15 Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#4 Alias (byte) keyboard_events_size#16 = (byte) keyboard_events_size#5 -Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#57 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 +Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#75 (byte) keyboard_events_size#72 (byte) keyboard_events_size#68 (byte) keyboard_events_size#65 (byte) keyboard_events_size#57 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 +Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#58 (byte) keyboard_modifiers#56 (byte) keyboard_modifiers#54 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS#0 = (byte*~) $1 Alias (byte*) render_init::vicSelectGfxBank1_gfx#0 = (byte*) render_init::vicSelectGfxBank1_gfx#1 (byte*) render_init::vicSelectGfxBank1_toDd001_gfx#0 (byte*) render_init::vicSelectGfxBank1_toDd001_gfx#1 @@ -4200,8 +4714,8 @@ Alias (byte) render_init::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) Alias (byte*) render_init::toD0181_screen#0 = (byte*) render_init::toD0181_screen#1 Alias (byte*) render_init::toD0181_gfx#0 = (byte*) render_init::toD0181_gfx#1 Alias (byte) render_init::toD0181_return#0 = (byte) render_init::toD0181_$8#0 (byte) render_init::toD0181_return#2 (byte) render_init::toD0181_return#1 (byte) render_init::toD0181_return#3 (byte~) render_init::$1 -Alias (byte*) render_init::li#0 = (byte*~) render_init::$8 -Alias (byte*) render_init::line#0 = (byte*~) render_init::$12 +Alias (byte*) render_init::li#0 = (byte*~) render_init::$9 +Alias (byte*) render_init::line#0 = (byte*~) render_init::$15 Alias (byte*) render_init::line#2 = (byte*) render_init::line#3 Alias (byte) render_init::l#2 = (byte) render_init::l#3 Alias (byte*) render_screen_original::orig#0 = (byte*~) render_screen_original::$1 @@ -4209,45 +4723,70 @@ Alias (byte) render_screen_original::y#2 = (byte) render_screen_original::y#3 Alias (byte) render_screen_original::SPACE#2 = (byte) render_screen_original::SPACE#5 Alias (byte*) render_screen_original::screen#3 = (byte*) render_screen_original::screen#9 Alias (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#6 +Alias (byte) render_playfield::i#0 = (byte/signed word/word/dword/signed dword~) render_playfield::$0 Alias (byte) render_playfield::l#3 = (byte) render_playfield::l#4 Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 Alias (byte) render_current::ypos2#0 = (byte~) render_current::$0 -Alias (byte) render_current::ypos2#2 = (byte) render_current::ypos2#4 -Alias (byte) current_xpos#13 = (byte) current_xpos#30 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#37 -Alias (byte) render_current::i#4 = (byte) render_current::i#5 -Alias (byte) render_current::l#3 = (byte) render_current::l#8 -Alias (byte) current_piece_char#39 = (byte) current_piece_char#52 +Alias (byte) render_current::ypos2#2 = (byte) render_current::ypos2#3 (byte) render_current::ypos2#6 +Alias (byte) current_xpos#13 = (byte) current_xpos#30 (byte) current_xpos#69 +Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#37 (byte*) current_piece_gfx#68 +Alias (byte) render_current::i#3 = (byte) render_current::i#6 (byte) render_current::i#5 +Alias (byte) render_current::l#4 = (byte) render_current::l#9 (byte) render_current::l#5 +Alias (byte) current_piece_char#38 = (byte) current_piece_char#52 (byte) current_piece_char#72 Alias (byte) render_current::xpos#3 = (byte) render_current::xpos#5 (byte) render_current::xpos#6 (byte) render_current::xpos#4 Alias (byte) current_piece_char#18 = (byte) current_piece_char#27 (byte) current_piece_char#53 (byte) current_piece_char#9 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#2 (byte*) render_current::screen_line#3 (byte*) render_current::screen_line#5 Alias (byte) render_current::c#3 = (byte) render_current::c#6 (byte) render_current::c#4 (byte) render_current::c#5 -Alias (byte) render_current::ypos2#6 = (byte) render_current::ypos2#9 (byte) render_current::ypos2#7 (byte) render_current::ypos2#8 -Alias (byte) render_current::l#5 = (byte) render_current::l#9 (byte) render_current::l#6 (byte) render_current::l#7 -Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#38 (byte*) current_piece_gfx#39 -Alias (byte) render_current::i#1 = (byte) render_current::i#9 (byte) render_current::i#6 (byte) render_current::i#7 -Alias (byte) current_xpos#80 = (byte) current_xpos#88 (byte) current_xpos#81 (byte) current_xpos#82 -Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 -Alias (byte) current_xpos#0 = (byte) current_xpos#73 (byte) current_xpos#65 (byte) current_xpos#47 -Alias (byte) current_ypos#0 = (byte) current_ypos#55 (byte) current_ypos#50 (byte) current_ypos#39 -Alias (byte) current_piece_char#0 = (byte) current_piece_char#44 (byte) current_piece_char#37 (byte) current_piece_char#26 +Alias (byte) render_current::ypos2#10 = (byte) render_current::ypos2#8 (byte) render_current::ypos2#9 (byte) render_current::ypos2#7 +Alias (byte) render_current::l#10 = (byte) render_current::l#7 (byte) render_current::l#8 (byte) render_current::l#6 +Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#39 (byte*) current_piece_gfx#38 +Alias (byte) render_current::i#10 = (byte) render_current::i#11 (byte) render_current::i#2 (byte) render_current::i#9 +Alias (byte) current_xpos#81 = (byte) current_xpos#90 (byte) current_xpos#82 (byte) current_xpos#83 +Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 +Alias (byte) current_xpos#0 = (byte) current_xpos#102 (byte) current_xpos#101 (byte) current_xpos#97 (byte) current_xpos#91 (byte) current_xpos#84 (byte) current_xpos#74 (byte) current_xpos#65 (byte) current_xpos#47 +Alias (byte) current_ypos#0 = (byte) current_ypos#76 (byte) current_ypos#75 (byte) current_ypos#71 (byte) current_ypos#65 (byte) current_ypos#60 (byte) current_ypos#55 (byte) current_ypos#50 (byte) current_ypos#39 +Alias (byte) current_piece_char#0 = (byte) current_piece_char#80 (byte) current_piece_char#79 (byte) current_piece_char#73 (byte) current_piece_char#65 (byte) current_piece_char#54 (byte) current_piece_char#44 (byte) current_piece_char#37 (byte) current_piece_char#26 +Alias (byte) sprites_init::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 +Alias (byte) sprites_init::s2#0 = (byte~) sprites_init::$2 +Alias (byte) sprites_init::xpos#1 = (byte/signed word/word/dword/signed dword~) sprites_init::$3 +Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 +Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#13 (byte) irq_sprite_ypos#8 +Alias (byte) irq_sprite_ptr#4 = (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#5 +Alias (byte) irq_cnt#4 = (byte) irq_cnt#6 +Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#7 (byte) irq_raster_next#4 +Alias (byte) irq_sprite_ypos#5 = (byte) irq_sprite_ypos#9 (byte) irq_sprite_ypos#6 +Alias (byte*) irq::toSpritePtr2_sprite#0 = (byte*) irq::toSpritePtr2_sprite#1 +Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#14 (byte) irq_raster_next#11 (byte) irq_raster_next#8 +Alias (byte) irq_cnt#13 = (byte) irq_cnt#16 (byte) irq_cnt#2 (byte) irq_cnt#14 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#14 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#12 +Alias (byte) irq::raster_next#0 = (byte) irq::raster_next#3 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#9 +Alias (byte) irq_raster_next#12 = (byte) irq_raster_next#5 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#12 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#11 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#7 +Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#9 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#7 (byte) irq_sprite_ypos#3 +Alias (byte) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#8 +Alias (byte) irq_cnt#0 = (byte) irq_cnt#17 (byte) irq_cnt#15 (byte) irq_cnt#11 Alias (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#6 Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#16 (byte) current_movedown_counter#21 (byte) current_movedown_counter#9 (byte) current_movedown_counter#17 Alias (byte) play_move_down::movedown#10 = (byte) play_move_down::movedown#12 (byte) play_move_down::movedown#8 (byte) play_move_down::movedown#11 (byte) play_move_down::movedown#5 -Alias (byte) current_ypos#51 = (byte) current_ypos#52 (byte) current_ypos#60 (byte) current_ypos#61 (byte) current_ypos#53 -Alias (byte) current_xpos#69 = (byte) current_xpos#70 (byte) current_xpos#83 (byte) current_xpos#84 (byte) current_xpos#71 +Alias (byte) current_ypos#51 = (byte) current_ypos#52 (byte) current_ypos#61 (byte) current_ypos#62 (byte) current_ypos#53 +Alias (byte) current_xpos#70 = (byte) current_xpos#71 (byte) current_xpos#85 (byte) current_xpos#86 (byte) current_xpos#72 Alias (byte) current_orientation#51 = (byte) current_orientation#52 (byte) current_orientation#61 (byte) current_orientation#62 (byte) current_orientation#53 Alias (byte*) current_piece#53 = (byte*) current_piece#54 (byte*) current_piece#60 (byte*) current_piece#61 (byte*) current_piece#55 -Alias (byte*) current_piece_gfx#68 = (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#70 -Alias (byte) current_piece_char#54 = (byte) current_piece_char#55 (byte) current_piece_char#64 (byte) current_piece_char#65 (byte) current_piece_char#56 +Alias (byte*) current_piece_gfx#70 = (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#72 +Alias (byte) current_piece_char#55 = (byte) current_piece_char#56 (byte) current_piece_char#66 (byte) current_piece_char#67 (byte) current_piece_char#57 Alias (byte) play_move_down::movedown#0 = (byte) play_move_down::movedown#4 Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#27 -Alias (byte) current_ypos#64 = (byte) current_ypos#65 -Alias (byte) current_xpos#89 = (byte) current_xpos#90 +Alias (byte) current_ypos#66 = (byte) current_ypos#67 +Alias (byte) current_xpos#92 = (byte) current_xpos#93 Alias (byte) current_orientation#66 = (byte) current_orientation#67 -Alias (byte*) current_piece#65 = (byte*) current_piece#66 -Alias (byte*) current_piece_gfx#81 = (byte*) current_piece_gfx#82 -Alias (byte) current_piece_char#69 = (byte) current_piece_char#70 +Alias (byte*) current_piece#66 = (byte*) current_piece#67 +Alias (byte*) current_piece_gfx#86 = (byte*) current_piece_gfx#87 +Alias (byte) current_piece_char#74 = (byte) current_piece_char#75 Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 Alias (byte) current_ypos#40 = (byte) current_ypos#41 Alias (byte) current_xpos#50 = (byte) current_xpos#51 @@ -4260,9 +4799,9 @@ Alias (byte) current_movedown_counter#18 = (byte) current_movedown_counter#22 Alias (byte) current_ypos#11 = (byte) current_ypos#29 (byte) current_ypos#26 (byte) current_ypos#27 (byte) current_ypos#12 (byte) current_ypos#35 (byte) current_ypos#42 (byte) current_ypos#28 Alias (byte*) current_piece#18 = (byte*) current_piece#19 (byte*) current_piece#30 (byte*) current_piece#22 (byte*) current_piece#44 (byte*) current_piece#32 (byte*) current_piece#45 (byte*) current_piece#31 Alias (byte) current_orientation#12 = (byte) current_orientation#28 (byte) current_orientation#26 (byte) current_orientation#54 (byte) current_orientation#44 (byte) current_orientation#55 (byte) current_orientation#43 (byte) current_orientation#27 -Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#40 (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#41 -Alias (byte) current_xpos#14 = (byte) current_xpos#33 (byte) current_xpos#31 (byte) current_xpos#72 (byte) current_xpos#53 (byte) current_xpos#59 (byte) current_xpos#52 (byte) current_xpos#32 -Alias (byte) current_piece_char#19 = (byte) current_piece_char#20 (byte) current_piece_char#28 (byte) current_piece_char#57 (byte) current_piece_char#42 (byte) current_piece_char#30 (byte) current_piece_char#43 (byte) current_piece_char#29 +Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#40 (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#41 +Alias (byte) current_xpos#14 = (byte) current_xpos#33 (byte) current_xpos#31 (byte) current_xpos#73 (byte) current_xpos#53 (byte) current_xpos#59 (byte) current_xpos#52 (byte) current_xpos#32 +Alias (byte) current_piece_char#19 = (byte) current_piece_char#20 (byte) current_piece_char#28 (byte) current_piece_char#58 (byte) current_piece_char#42 (byte) current_piece_char#30 (byte) current_piece_char#43 (byte) current_piece_char#29 Alias (byte) play_collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_move_down::$11 Alias (byte) play_collision::return#0 = (byte) play_collision::return#10 Alias (byte*) current_piece#1 = (byte*) current_piece#9 @@ -4294,7 +4833,7 @@ Alias (byte) current_orientation#17 = (byte) current_orientation#32 (byte) curre Alias (byte) current_xpos#40 = (byte) current_xpos#57 (byte) current_xpos#58 (byte) current_xpos#41 Alias (byte) current_ypos#33 = (byte) current_ypos#43 (byte) current_ypos#44 (byte) current_ypos#34 Alias (byte*) current_piece#35 = (byte*) current_piece#46 (byte*) current_piece#47 (byte*) current_piece#36 -Alias (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#73 +Alias (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#75 Alias (byte) play_move_rotate::orientation#1 = (byte/word/dword~) play_move_rotate::$5 Alias (byte) play_move_rotate::key_event#1 = (byte) play_move_rotate::key_event#2 Alias (byte) play_move_rotate::orientation#2 = (byte/word/dword~) play_move_rotate::$3 @@ -4336,7 +4875,7 @@ Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#47 Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#6 Alias (byte) play_lock_current::ypos2#5 = (byte) play_lock_current::ypos2#6 Alias (byte) play_lock_current::l#4 = (byte) play_lock_current::l#5 -Alias (byte) current_xpos#74 = (byte) current_xpos#75 +Alias (byte) current_xpos#75 = (byte) current_xpos#76 Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#4 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#3 Alias (byte) current_xpos#43 = (byte) current_xpos#60 @@ -4365,15 +4904,15 @@ Alias (byte) play_remove_lines::w#1 = (byte) play_remove_lines::w#10 (byte) play Alias (byte) play_remove_lines::r#4 = (byte) play_remove_lines::r#8 (byte) play_remove_lines::r#7 Alias (byte) play_remove_lines::w#2 = (byte~) play_remove_lines::$11 Alias (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#7 -Alias (byte*) current_piece#26 = (byte*) current_piece#48 (byte*) current_piece#57 (byte*) current_piece#37 -Alias (byte) current_orientation#36 = (byte) current_orientation#57 (byte) current_orientation#63 (byte) current_orientation#46 -Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#48 -Alias (byte) current_xpos#44 = (byte) current_xpos#76 (byte) current_xpos#85 (byte) current_xpos#61 -Alias (byte) current_ypos#36 = (byte) current_ypos#56 (byte) current_ypos#62 (byte) current_ypos#45 -Alias (byte) current_piece_char#23 = (byte) current_piece_char#47 (byte) current_piece_char#58 (byte) current_piece_char#33 -Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#70 (byte) keyboard_events_size#65 (byte) keyboard_events_size#58 (byte) keyboard_events_size#49 (byte) keyboard_events_size#40 -Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#34 -Alias (byte) current_movedown_counter#24 = (byte) current_movedown_counter#44 (byte) current_movedown_counter#45 (byte) current_movedown_counter#41 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#29 +Alias (byte*) current_piece#26 = (byte*) current_piece#62 (byte*) current_piece#68 (byte*) current_piece#57 (byte*) current_piece#48 (byte*) current_piece#37 +Alias (byte) current_orientation#36 = (byte) current_orientation#68 (byte) current_orientation#72 (byte) current_orientation#63 (byte) current_orientation#57 (byte) current_orientation#46 +Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#88 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#48 +Alias (byte) current_xpos#44 = (byte) current_xpos#94 (byte) current_xpos#98 (byte) current_xpos#87 (byte) current_xpos#77 (byte) current_xpos#61 +Alias (byte) current_ypos#36 = (byte) current_ypos#68 (byte) current_ypos#72 (byte) current_ypos#63 (byte) current_ypos#56 (byte) current_ypos#45 +Alias (byte) current_piece_char#23 = (byte) current_piece_char#68 (byte) current_piece_char#76 (byte) current_piece_char#59 (byte) current_piece_char#47 (byte) current_piece_char#33 +Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#76 (byte) keyboard_events_size#78 (byte) keyboard_events_size#73 (byte) keyboard_events_size#69 (byte) keyboard_events_size#66 (byte) keyboard_events_size#58 (byte) keyboard_events_size#49 (byte) keyboard_events_size#40 +Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#59 (byte) keyboard_modifiers#55 (byte) keyboard_modifiers#53 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#34 +Alias (byte) current_movedown_counter#24 = (byte) current_movedown_counter#46 (byte) current_movedown_counter#47 (byte) current_movedown_counter#45 (byte) current_movedown_counter#44 (byte) current_movedown_counter#41 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#29 Alias (byte*) current_piece#14 = (byte*) current_piece#5 (byte*) current_piece#49 (byte*) current_piece#39 Alias (byte) current_orientation#21 = (byte) current_orientation#7 (byte) current_orientation#58 (byte) current_orientation#48 Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#50 @@ -4383,51 +4922,51 @@ Alias (byte) current_piece_char#14 = (byte) current_piece_char#5 (byte) current_ Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#19 (byte) current_movedown_counter#5 -Alias (byte) current_ypos#22 = (byte) current_ypos#68 (byte) current_ypos#38 (byte) current_ypos#8 -Alias (byte*) current_piece#16 = (byte*) current_piece#67 (byte*) current_piece#28 (byte*) current_piece#7 -Alias (byte) current_orientation#10 = (byte) current_orientation#71 (byte) current_orientation#39 (byte) current_orientation#24 -Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#21 -Alias (byte) current_xpos#11 = (byte) current_xpos#93 (byte) current_xpos#46 (byte) current_xpos#28 -Alias (byte) current_piece_char#16 = (byte) current_piece_char#71 (byte) current_piece_char#25 (byte) current_piece_char#7 +Alias (byte) current_ypos#22 = (byte) current_ypos#73 (byte) current_ypos#38 (byte) current_ypos#8 +Alias (byte*) current_piece#16 = (byte*) current_piece#69 (byte*) current_piece#28 (byte*) current_piece#7 +Alias (byte) current_orientation#10 = (byte) current_orientation#73 (byte) current_orientation#39 (byte) current_orientation#24 +Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#21 +Alias (byte) current_xpos#11 = (byte) current_xpos#99 (byte) current_xpos#46 (byte) current_xpos#28 +Alias (byte) current_piece_char#16 = (byte) current_piece_char#77 (byte) current_piece_char#25 (byte) current_piece_char#7 Alias (byte) keyboard_events_size#41 = (byte) keyboard_events_size#51 Alias (byte) keyboard_modifiers#35 = (byte) keyboard_modifiers#42 Alias (byte) current_movedown_counter#38 = (byte) current_movedown_counter#43 -Alias (byte) current_ypos#66 = (byte) current_ypos#69 -Alias (byte*) current_piece#62 = (byte*) current_piece#68 -Alias (byte) current_orientation#68 = (byte) current_orientation#72 -Alias (byte*) current_piece_gfx#78 = (byte*) current_piece_gfx#84 -Alias (byte) current_xpos#91 = (byte) current_xpos#94 -Alias (byte) current_piece_char#66 = (byte) current_piece_char#72 +Alias (byte) current_ypos#69 = (byte) current_ypos#74 +Alias (byte*) current_piece#63 = (byte*) current_piece#70 +Alias (byte) current_orientation#69 = (byte) current_orientation#74 +Alias (byte*) current_piece_gfx#82 = (byte*) current_piece_gfx#90 +Alias (byte) current_xpos#100 = (byte) current_xpos#95 +Alias (byte) current_piece_char#69 = (byte) current_piece_char#78 Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#42 (byte) keyboard_events_size#34 Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#31 Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#39 (byte) current_movedown_counter#34 (byte) current_movedown_counter#30 (byte) current_movedown_counter#25 -Alias (byte) current_ypos#37 = (byte) current_ypos#67 (byte) current_ypos#63 (byte) current_ypos#57 (byte) current_ypos#48 -Alias (byte*) current_piece#27 = (byte*) current_piece#63 (byte*) current_piece#58 (byte*) current_piece#50 (byte*) current_piece#40 -Alias (byte) current_orientation#37 = (byte) current_orientation#69 (byte) current_orientation#64 (byte) current_orientation#59 (byte) current_orientation#49 -Alias (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#51 -Alias (byte) current_xpos#45 = (byte) current_xpos#92 (byte) current_xpos#86 (byte) current_xpos#77 (byte) current_xpos#64 -Alias (byte) current_piece_char#24 = (byte) current_piece_char#67 (byte) current_piece_char#59 (byte) current_piece_char#49 (byte) current_piece_char#36 +Alias (byte) current_ypos#37 = (byte) current_ypos#70 (byte) current_ypos#64 (byte) current_ypos#57 (byte) current_ypos#48 +Alias (byte*) current_piece#27 = (byte*) current_piece#64 (byte*) current_piece#58 (byte*) current_piece#50 (byte*) current_piece#40 +Alias (byte) current_orientation#37 = (byte) current_orientation#70 (byte) current_orientation#64 (byte) current_orientation#59 (byte) current_orientation#49 +Alias (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#51 +Alias (byte) current_xpos#45 = (byte) current_xpos#96 (byte) current_xpos#88 (byte) current_xpos#78 (byte) current_xpos#64 +Alias (byte) current_piece_char#24 = (byte) current_piece_char#70 (byte) current_piece_char#60 (byte) current_piece_char#49 (byte) current_piece_char#36 Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#6 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 +Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#5 Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#59 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 (byte) keyboard_events_size#60 (byte) keyboard_events_size#53 (byte) keyboard_events_size#44 -Alias (byte) main::key_event#0 = (byte~) main::$9 (byte) main::key_event#1 (byte) main::key_event#2 +Alias (byte) main::key_event#0 = (byte~) main::$11 (byte) main::key_event#1 (byte) main::key_event#2 Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 Alias (byte) main::render#0 = (byte) main::render#4 Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#4 (byte) current_movedown_counter#35 (byte) current_movedown_counter#31 (byte) current_movedown_counter#40 (byte) current_movedown_counter#36 (byte) current_movedown_counter#32 Alias (byte) current_ypos#21 = (byte) current_ypos#7 (byte) current_ypos#54 (byte) current_ypos#58 (byte) current_ypos#49 (byte) current_ypos#25 (byte) current_ypos#59 -Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#56 (byte*) current_piece#51 (byte*) current_piece#64 (byte*) current_piece#59 (byte*) current_piece#52 +Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#56 (byte*) current_piece#51 (byte*) current_piece#65 (byte*) current_piece#59 (byte*) current_piece#52 Alias (byte) current_orientation#22 = (byte) current_orientation#8 (byte) current_orientation#38 Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#34 Alias (byte) current_xpos#26 = (byte) current_xpos#9 -Alias (byte) current_piece_char#15 = (byte) current_piece_char#6 (byte) current_piece_char#60 (byte) current_piece_char#50 (byte) current_piece_char#68 (byte) current_piece_char#61 (byte) current_piece_char#51 +Alias (byte) current_piece_char#15 = (byte) current_piece_char#6 (byte) current_piece_char#61 (byte) current_piece_char#50 (byte) current_piece_char#71 (byte) current_piece_char#62 (byte) current_piece_char#51 Alias (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#6 Alias (byte) main::render#1 = (byte) main::render#5 -Alias (byte) current_xpos#10 = (byte) current_xpos#27 (byte) current_xpos#78 (byte) current_xpos#87 (byte) current_xpos#67 (byte) current_xpos#79 +Alias (byte) current_xpos#10 = (byte) current_xpos#27 (byte) current_xpos#79 (byte) current_xpos#89 (byte) current_xpos#67 (byte) current_xpos#80 Alias (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#6 Alias (byte) main::render#2 = (byte) main::render#6 -Alias (byte) current_orientation#23 = (byte) current_orientation#9 (byte) current_orientation#70 (byte) current_orientation#65 (byte) current_orientation#60 -Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#9 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#66 +Alias (byte) current_orientation#23 = (byte) current_orientation#9 (byte) current_orientation#71 (byte) current_orientation#65 (byte) current_orientation#60 +Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#9 (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#66 Alias (byte*) current_piece#17 = (byte*) current_piece#8 Alias (byte) current_orientation#11 = (byte) current_orientation#25 Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#22 @@ -4438,6 +4977,9 @@ Alias (byte) keyboard_events_size#20 = (byte) keyboard_events_size#9 Alias (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#9 Alias (byte) current_movedown_counter#13 = (byte) current_movedown_counter#6 Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#4 Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 @@ -4445,20 +4987,24 @@ Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#55 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 Alias (byte) render_current::xpos#2 = (byte) render_current::xpos#3 Alias (byte) render_current::c#2 = (byte) render_current::c#3 -Alias (byte) render_current::ypos2#5 = (byte) render_current::ypos2#6 -Alias (byte) render_current::l#4 = (byte) render_current::l#5 -Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#23 -Alias (byte) render_current::i#1 = (byte) render_current::i#3 -Alias (byte) current_xpos#68 = (byte) current_xpos#80 -Alias (byte) current_piece_char#18 = (byte) current_piece_char#38 +Alias (byte) render_current::ypos2#10 = (byte) render_current::ypos2#5 +Alias (byte) render_current::l#10 = (byte) render_current::l#3 +Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#24 +Alias (byte) render_current::i#10 = (byte) render_current::i#7 +Alias (byte) current_xpos#68 = (byte) current_xpos#81 +Alias (byte) current_piece_char#18 = (byte) current_piece_char#39 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#3 +Alias (byte) irq_raster_next#12 = (byte) irq_raster_next#3 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#11 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#3 Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#15 (byte) current_movedown_counter#28 (byte) current_movedown_counter#18 -Alias (byte) current_ypos#11 = (byte) current_ypos#51 (byte) current_ypos#64 (byte) current_ypos#40 -Alias (byte) current_xpos#14 = (byte) current_xpos#69 (byte) current_xpos#89 (byte) current_xpos#50 +Alias (byte) current_ypos#11 = (byte) current_ypos#51 (byte) current_ypos#66 (byte) current_ypos#40 +Alias (byte) current_xpos#14 = (byte) current_xpos#70 (byte) current_xpos#92 (byte) current_xpos#50 Alias (byte) current_orientation#12 = (byte) current_orientation#51 (byte) current_orientation#66 (byte) current_orientation#41 -Alias (byte*) current_piece#18 = (byte*) current_piece#53 (byte*) current_piece#65 (byte*) current_piece#42 -Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#56 -Alias (byte) current_piece_char#19 = (byte) current_piece_char#54 (byte) current_piece_char#69 (byte) current_piece_char#40 +Alias (byte*) current_piece#18 = (byte*) current_piece#53 (byte*) current_piece#66 (byte*) current_piece#42 +Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#86 (byte*) current_piece_gfx#56 +Alias (byte) current_piece_char#19 = (byte) current_piece_char#55 (byte) current_piece_char#74 (byte) current_piece_char#40 Alias (byte) current_xpos#17 = (byte) current_xpos#38 Alias (byte) current_xpos#22 = (byte) current_xpos#40 Alias (byte) current_ypos#17 = (byte) current_ypos#33 @@ -4481,7 +5027,7 @@ Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#5 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#4 Alias (byte) current_piece_char#12 = (byte) current_piece_char#32 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#3 -Alias (byte) current_xpos#43 = (byte) current_xpos#74 +Alias (byte) current_xpos#43 = (byte) current_xpos#75 Alias (byte) play_remove_lines::c#0 = (byte) play_remove_lines::c#1 Alias (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#8 Alias (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#3 @@ -4497,6 +5043,9 @@ Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#32 Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#29 Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#23 Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Self Phi Eliminated (byte) fill::val#1 Self Phi Eliminated (byte*) fill::end#1 Self Phi Eliminated (byte) keyboard_event_scan::row_scan#1 @@ -4513,11 +5062,15 @@ Self Phi Eliminated (byte) render_screen_original::y#2 Self Phi Eliminated (byte*) render_screen_original::orig#5 Self Phi Eliminated (byte) render_playfield::l#3 Self Phi Eliminated (byte*) current_piece_gfx#12 -Self Phi Eliminated (byte) render_current::ypos2#5 -Self Phi Eliminated (byte) render_current::l#4 +Self Phi Eliminated (byte) render_current::ypos2#10 +Self Phi Eliminated (byte) render_current::l#10 Self Phi Eliminated (byte) current_piece_char#18 Self Phi Eliminated (byte*) render_current::screen_line#1 Self Phi Eliminated (byte) current_xpos#68 +Self Phi Eliminated (byte) irq_sprite_ypos#5 +Self Phi Eliminated (byte) irq_sprite_ptr#4 +Self Phi Eliminated (byte) irq_cnt#4 +Self Phi Eliminated (byte) irq_raster_next#10 Self Phi Eliminated (byte*) play_collision::piece_gfx#1 Self Phi Eliminated (byte) play_collision::ypos2#10 Self Phi Eliminated (byte) play_collision::l#10 @@ -4533,12 +5086,12 @@ Self Phi Eliminated (byte) play_remove_lines::y#2 Self Phi Eliminated (byte) keyboard_events_size#41 Self Phi Eliminated (byte) keyboard_modifiers#35 Self Phi Eliminated (byte) current_movedown_counter#38 -Self Phi Eliminated (byte) current_ypos#66 -Self Phi Eliminated (byte*) current_piece#62 -Self Phi Eliminated (byte) current_orientation#68 -Self Phi Eliminated (byte*) current_piece_gfx#78 -Self Phi Eliminated (byte) current_xpos#91 -Self Phi Eliminated (byte) current_piece_char#66 +Self Phi Eliminated (byte) current_ypos#69 +Self Phi Eliminated (byte*) current_piece#63 +Self Phi Eliminated (byte) current_orientation#69 +Self Phi Eliminated (byte*) current_piece_gfx#82 +Self Phi Eliminated (byte) current_xpos#100 +Self Phi Eliminated (byte) current_piece_char#69 Self Phi Eliminated (byte) keyboard_events_size#26 Self Phi Eliminated (byte) keyboard_modifiers#23 Self Phi Eliminated (byte) current_movedown_counter#14 @@ -4571,12 +5124,29 @@ Redundant Phi (byte) render_screen_original::SPACE#2 (byte) render_screen_origin Redundant Phi (byte) render_screen_original::y#2 (byte) render_screen_original::y#4 Redundant Phi (byte*) render_screen_original::orig#5 (byte*) render_screen_original::orig#1 Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 -Redundant Phi (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#24 -Redundant Phi (byte) render_current::ypos2#5 (byte) render_current::ypos2#2 -Redundant Phi (byte) render_current::l#4 (byte) render_current::l#3 -Redundant Phi (byte) current_piece_char#18 (byte) current_piece_char#39 +Redundant Phi (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#23 +Redundant Phi (byte) render_current::ypos2#10 (byte) render_current::ypos2#2 +Redundant Phi (byte) render_current::l#10 (byte) render_current::l#4 +Redundant Phi (byte) current_piece_char#18 (byte) current_piece_char#38 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 Redundant Phi (byte) current_xpos#68 (byte) current_xpos#13 +Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#0 +Redundant Phi (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#0 +Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#20 +Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 +Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 +Redundant Phi (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#0 +Redundant Phi (byte) irq_sprite_ptr#9 (byte) irq_sprite_ptr#12 +Redundant Phi (byte) irq_cnt#8 (byte) irq_cnt#0 +Redundant Phi (byte) irq_raster_next#13 (byte) irq_raster_next#15 +Redundant Phi (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#4 +Redundant Phi (byte) irq_sprite_ptr#4 (byte) irq_sprite_ptr#9 +Redundant Phi (byte) irq_cnt#4 (byte) irq_cnt#8 +Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#13 +Redundant Phi (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#0 +Redundant Phi (byte) irq::toSpritePtr2_return#3 (byte) irq::toSpritePtr2_return#1 +Redundant Phi (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#0 +Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 Redundant Phi (byte) current_movedown_counter#7 (byte) current_movedown_counter#14 Redundant Phi (byte) play_move_down::key_event#1 (byte) play_move_down::key_event#0 Redundant Phi (byte) current_ypos#11 (byte) current_ypos#37 @@ -4602,6 +5172,8 @@ Redundant Phi (byte) current_xpos#22 (byte) current_xpos#10 Redundant Phi (byte) current_ypos#17 (byte) current_ypos#21 Redundant Phi (byte*) current_piece#11 (byte*) current_piece#15 Redundant Phi (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#19 +Redundant Phi (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#14 +Redundant Phi (byte) irq_raster_next#16 (byte) irq_raster_next#17 Redundant Phi (byte*) play_collision::piece_gfx#1 (byte*) play_collision::piece_gfx#2 Redundant Phi (byte) play_collision::ypos2#10 (byte) play_collision::ypos2#2 Redundant Phi (byte) play_collision::l#10 (byte) play_collision::l#6 @@ -4636,21 +5208,21 @@ Redundant Phi (byte) current_piece_char#14 (byte) current_piece_char#13 Redundant Phi (byte) keyboard_events_size#41 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#38 (byte) current_movedown_counter#12 -Redundant Phi (byte) current_ypos#66 (byte) current_ypos#22 -Redundant Phi (byte*) current_piece#62 (byte*) current_piece#16 -Redundant Phi (byte) current_orientation#68 (byte) current_orientation#10 -Redundant Phi (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#10 -Redundant Phi (byte) current_xpos#91 (byte) current_xpos#11 -Redundant Phi (byte) current_piece_char#66 (byte) current_piece_char#16 +Redundant Phi (byte) current_ypos#69 (byte) current_ypos#22 +Redundant Phi (byte*) current_piece#63 (byte*) current_piece#16 +Redundant Phi (byte) current_orientation#69 (byte) current_orientation#10 +Redundant Phi (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#10 +Redundant Phi (byte) current_xpos#100 (byte) current_xpos#11 +Redundant Phi (byte) current_piece_char#69 (byte) current_piece_char#16 Redundant Phi (byte) keyboard_events_size#26 (byte) keyboard_events_size#41 Redundant Phi (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#35 Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#38 -Redundant Phi (byte) current_ypos#37 (byte) current_ypos#66 -Redundant Phi (byte*) current_piece#27 (byte*) current_piece#62 -Redundant Phi (byte) current_orientation#37 (byte) current_orientation#68 -Redundant Phi (byte*) current_piece_gfx#33 (byte*) current_piece_gfx#78 -Redundant Phi (byte) current_xpos#45 (byte) current_xpos#91 -Redundant Phi (byte) current_piece_char#24 (byte) current_piece_char#66 +Redundant Phi (byte) current_ypos#37 (byte) current_ypos#69 +Redundant Phi (byte*) current_piece#27 (byte*) current_piece#63 +Redundant Phi (byte) current_orientation#37 (byte) current_orientation#69 +Redundant Phi (byte*) current_piece_gfx#33 (byte*) current_piece_gfx#82 +Redundant Phi (byte) current_xpos#45 (byte) current_xpos#100 +Redundant Phi (byte) current_piece_char#24 (byte) current_piece_char#69 Redundant Phi (byte) keyboard_events_size#17 (byte) keyboard_events_size#13 Redundant Phi (byte) keyboard_modifiers#15 (byte) keyboard_modifiers#14 Redundant Phi (byte) keyboard_events_size#18 (byte) keyboard_events_size#16 @@ -4664,6 +5236,8 @@ Redundant Phi (byte) current_piece_char#15 (byte) current_piece_char#11 Redundant Phi (byte) current_xpos#10 (byte) current_xpos#20 Redundant Phi (byte) current_orientation#23 (byte) current_orientation#19 Redundant Phi (byte*) current_piece_gfx#20 (byte*) current_piece_gfx#15 +Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#13 +Redundant Phi (byte) irq_raster_next#15 (byte) irq_raster_next#16 Redundant Phi (byte*) current_piece#17 (byte*) current_piece#16 Redundant Phi (byte) current_orientation#11 (byte) current_orientation#10 Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#10 @@ -4675,11 +5249,11 @@ Redundant Phi (byte) keyboard_modifiers#17 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#12 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 -Redundant Phi (byte) render_current::ypos2#3 (byte) render_current::ypos2#2 -Redundant Phi (byte) render_current::l#2 (byte) render_current::l#3 +Redundant Phi (byte) render_current::ypos2#4 (byte) render_current::ypos2#2 +Redundant Phi (byte) render_current::l#2 (byte) render_current::l#4 Redundant Phi (byte) current_xpos#49 (byte) current_xpos#13 -Redundant Phi (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#24 -Redundant Phi (byte) current_piece_char#63 (byte) current_piece_char#39 +Redundant Phi (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#23 +Redundant Phi (byte) current_piece_char#64 (byte) current_piece_char#38 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 Simple Condition (bool~) keyboard_event_scan::$1 if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 @@ -4693,20 +5267,23 @@ Simple Condition (bool~) keyboard_event_scan::$20 if((byte~) keyboard_event_scan Simple Condition (bool~) keyboard_event_scan::$24 if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 Simple Condition (bool~) keyboard_event_scan::$28 if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@12 Simple Condition (bool~) keyboard_event_get::$0 if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 -Simple Condition (bool~) render_init::$11 if((byte) render_init::i#1!=rangelast(0,render_init::$9)) goto render_init::@1 -Simple Condition (bool~) render_init::$16 if((byte) render_init::c#1!=rangelast(0,render_init::$14)) goto render_init::@3 -Simple Condition (bool~) render_init::$17 if((byte) render_init::l#1!=rangelast(0,render_init::$13)) goto render_init::@2 +Simple Condition (bool~) render_init::$12 if((byte) render_init::i#1!=rangelast(0,render_init::$10)) goto render_init::@1 +Simple Condition (bool~) render_init::$19 if((byte) render_init::c#1!=rangelast(0,render_init::$17)) goto render_init::@3 +Simple Condition (bool~) render_init::$20 if((byte) render_init::l#1!=rangelast(2,render_init::$16)) goto render_init::@2 Simple Condition (bool~) render_screen_original::$2 if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 Simple Condition (bool~) render_screen_original::$4 if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 Simple Condition (bool~) render_screen_original::$5 if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 Simple Condition (bool~) render_screen_original::$6 if((byte) render_screen_original::y#1!=rangelast(0,24)) goto render_screen_original::@1 -Simple Condition (bool~) render_playfield::$3 if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$2)) goto render_playfield::@2 -Simple Condition (bool~) render_playfield::$4 if((byte) render_playfield::l#1!=rangelast(0,render_playfield::$0)) goto render_playfield::@1 -Simple Condition (bool~) render_current::$3 if((byte) render_current::ypos2#2>=(byte/signed word/word/dword/signed dword~) render_current::$1) goto render_current::@2 -Simple Condition (bool~) render_current::$9 if((byte) render_current::l#1!=rangelast(0,3)) goto render_current::@1 -Simple Condition (bool~) render_current::$5 if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -Simple Condition (bool~) render_current::$8 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@3 -Simple Condition (bool~) render_current::$7 if((byte) render_current::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_current::@5 +Simple Condition (bool~) render_playfield::$4 if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$3)) goto render_playfield::@2 +Simple Condition (bool~) render_playfield::$5 if((byte) render_playfield::l#1!=rangelast(2,render_playfield::$1)) goto render_playfield::@1 +Simple Condition (bool~) render_current::$10 if((byte) render_current::l#1!=rangelast(0,3)) goto render_current::@1 +Simple Condition (bool~) render_current::$6 if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 +Simple Condition (bool~) render_current::$9 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@4 +Simple Condition (bool~) render_current::$8 if((byte) render_current::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_current::@6 +Simple Condition (bool~) sprites_init::$4 if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 +Simple Condition (bool~) irq::$0 if(*((byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 +Simple Condition (bool~) irq::$1 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 +Simple Condition (bool~) irq::$5 if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 Simple Condition (bool~) play_move_down::$1 if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 Simple Condition (bool~) play_move_down::$4 if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#1<(byte) current_movedown_slow#0) goto play_move_down::@4 @@ -4737,10 +5314,12 @@ Simple Condition (bool~) play_remove_lines::$10 if((byte) play_remove_lines::ful Simple Condition (bool~) play_remove_lines::$12 if((byte) play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 Simple Condition (bool~) play_remove_lines::$13 if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 Simple Condition (bool~) play_init::$2 if((byte) play_init::j#1!=rangelast(0,play_init::$0)) goto play_init::@1 -Simple Condition (bool~) main::$6 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -Simple Condition (bool~) main::$7 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 -Simple Condition (bool~) main::$14 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 +Simple Condition (bool~) main::$8 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 +Simple Condition (bool~) main::$9 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 +Simple Condition (bool~) main::$16 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 Successful SSA optimization Pass2ConditionalJumpSimplification +Rewriting && if()-condition to two if()s (bool~) render_current::$4 ← (bool~) render_current::$1 && (bool~) render_current::$3 +Successful SSA optimization Pass2ConditionalAndOrRewriting Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 @@ -4924,19 +5503,24 @@ Constant (const byte) current_ypos#0 = 0 Constant (const byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH#0 = 32 Constant (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 = ((byte*))11264 Constant (const word) fill::size#0 = 1000 +Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$7 = 2*40 Constant (const byte) render_init::i#0 = 0 -Constant (const byte) render_init::l#0 = 0 +Constant (const byte/word/signed word/dword/signed dword) render_init::$13 = 4*40 +Constant (const byte) render_init::l#0 = 2 Constant (const byte) render_init::c#0 = 0 Constant (const byte) render_screen_original::SPACE#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_screen_original::$0 = 32*2 Constant (const byte) render_screen_original::y#0 = 0 Constant (const byte) render_screen_original::x#0 = 0 -Constant (const byte) render_playfield::i#0 = 0 -Constant (const byte) render_playfield::l#0 = 0 +Constant (const byte) render_playfield::l#0 = 2 Constant (const byte) render_playfield::c#0 = 0 Constant (const byte) render_current::i#0 = 0 Constant (const byte) render_current::l#0 = 0 Constant (const byte) render_current::c#0 = 0 +Constant (const byte/signed byte/word/signed word/dword/signed dword) sprites_init::$0 = 15*8 +Constant (const byte) sprites_init::s#0 = 0 +Constant (const byte) IRQ_RASTER_FIRST#0 = 49 +Constant (const void()*) sprites_irq_init::$0 = &irq Constant (const byte/signed byte/word/signed word/dword/signed dword) $4 = 4*4 Constant (const byte[$5]) PIECE_T#0 = { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } Constant (const byte/signed byte/word/signed word/dword/signed dword) $6 = 4*4 @@ -5000,7 +5584,7 @@ Constant (const byte) keyboard_event_pressed::keycode#2 = KEY_CTRL#0 Constant (const byte) keyboard_event_pressed::keycode#3 = KEY_COMMODORE#0 Constant (const byte*) PLAYFIELD_SPRITE_PTRS#0 = PLAYFIELD_SCREEN#0+SPRITE_PTRS#0 Constant (const byte) $2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 -Constant (const byte/signed word/word/dword/signed dword) $3 = PLAYFIELD_LINES#0+3 +Constant (const byte*[PLAYFIELD_LINES#0]) screen_lines#0 = { fill( PLAYFIELD_LINES#0, 0) } Constant (const byte*) render_init::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN#0 Constant (const byte*) render_init::toD0181_screen#0 = PLAYFIELD_SCREEN#0 Constant (const byte*) render_init::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 @@ -5008,15 +5592,19 @@ Constant (const byte) render_init::$2 = VIC_ECM#0|VIC_DEN#0 Constant (const byte*) fill::start#0 = COLS#0 Constant (const byte) fill::val#0 = DARK_GREY#0 Constant (const byte*) render_screen_original::screen#0 = PLAYFIELD_SCREEN#0 -Constant (const byte*) render_init::$7 = PLAYFIELD_SCREEN#0+40 -Constant (const byte/signed word/word/dword/signed dword) render_init::$9 = PLAYFIELD_LINES#0+2 -Constant (const byte*) render_init::line#0 = COLS#0+15 -Constant (const byte/signed word/word/dword/signed dword) render_init::$13 = PLAYFIELD_LINES#0+1 -Constant (const byte/signed word/word/dword/signed dword) render_init::$14 = PLAYFIELD_COLS#0+1 +Constant (const byte*) render_init::$8 = PLAYFIELD_SCREEN#0+render_init::$7 +Constant (const byte/signed word/word/dword/signed dword) render_init::$10 = PLAYFIELD_LINES#0-1 +Constant (const byte*) render_init::$14 = COLS#0+render_init::$13 +Constant (const byte/signed word/word/dword/signed dword) render_init::$16 = PLAYFIELD_LINES#0-1 +Constant (const byte/signed word/word/dword/signed dword) render_init::$17 = PLAYFIELD_COLS#0-1 Constant (const byte*) render_screen_original::orig#0 = PLAYFIELD_SCREEN_ORIGINAL#0+render_screen_original::$0 -Constant (const byte/signed word/word/dword/signed dword) render_playfield::$0 = PLAYFIELD_LINES#0-1 -Constant (const byte/signed word/word/dword/signed dword) render_playfield::$2 = PLAYFIELD_COLS#0-1 -Constant (const byte/signed word/word/dword/signed dword) render_current::$1 = 2*PLAYFIELD_LINES#0 +Constant (const byte) 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::$3 = PLAYFIELD_COLS#0-1 +Constant (const byte/signed word/word/dword/signed dword) render_current::$2 = 2*PLAYFIELD_LINES#0 +Constant (const byte) sprites_init::xpos#0 = 24+sprites_init::$0 +Constant (const word) toSpritePtr1_$0#0 = ((word))PLAYFIELD_SPRITES#0 +Constant (const byte*) irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 Constant (const byte/signed word/word/dword/signed dword/signed byte) $5 = $4*4 Constant (const byte/signed word/word/dword/signed dword/signed byte) $7 = $6*4 Constant (const byte/signed word/word/dword/signed dword/signed byte) $9 = $8*4 @@ -5050,12 +5638,14 @@ Constant (const byte) play_init::$3 = PLAYFIELD_COLS#0*PLAYFIELD_LINES#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) fill::end#0 = fill::start#0+fill::size#0 Constant (const byte[$2]) playfield#0 = { fill( $2, 0) } -Constant (const byte*[$3]) screen_lines#0 = { fill( $3, 0) } Constant (const word) render_init::vicSelectGfxBank1_toDd001_$0#0 = ((word))render_init::vicSelectGfxBank1_gfx#0 Constant (const word) render_init::toD0181_$0#0 = ((word))render_init::toD0181_screen#0 Constant (const word) render_init::toD0181_$4#0 = ((word))render_init::toD0181_gfx#0 Constant (const byte) render_init::$3 = render_init::$2|VIC_RSEL#0 -Constant (const byte*) render_init::li#0 = render_init::$7+16 +Constant (const byte*) render_init::li#0 = render_init::$8+16 +Constant (const byte*) render_init::line#0 = render_init::$14+16 +Constant (const word) toSpritePtr1_$1#0 = toSpritePtr1_$0#0>>6 +Constant (const word) irq::toSpritePtr2_$0#0 = ((word))irq::toSpritePtr2_sprite#0 Constant (const word[]) PIECES#0 = { $18, $19, $20, $21, $22, $23, $24 } Constant (const byte[$25]) playfield_lines_idx#0 = { fill( $25, 0) } Constant (const byte) play_remove_lines::r#0 = play_remove_lines::$0-1 @@ -5065,18 +5655,36 @@ Constant (const byte) render_init::vicSelectGfxBank1_toDd001_$1#0 = >render_init Constant (const word) render_init::toD0181_$1#0 = render_init::toD0181_$0#0&16383 Constant (const byte) render_init::toD0181_$5#0 = >render_init::toD0181_$4#0 Constant (const byte/word/dword) render_init::$4 = render_init::$3|3 +Constant (const byte) toSpritePtr1_$2#0 = ((byte))toSpritePtr1_$1#0 +Constant (const word) irq::toSpritePtr2_$1#0 = irq::toSpritePtr2_$0#0>>6 Constant (const byte*) play_init::pli#0 = playfield#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_init::vicSelectGfxBank1_toDd001_$2#0 = render_init::vicSelectGfxBank1_toDd001_$1#0>>6 Constant (const word) render_init::toD0181_$2#0 = render_init::toD0181_$1#0<<2 Constant (const byte) render_init::toD0181_$6#0 = render_init::toD0181_$5#0>>2 +Constant (const byte) toSpritePtr1_return#0 = toSpritePtr1_$2#0 +Constant (const byte) irq::toSpritePtr2_$2#0 = ((byte))irq::toSpritePtr2_$1#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 = 3^render_init::vicSelectGfxBank1_toDd001_$2#0 Constant (const byte) render_init::toD0181_$3#0 = >render_init::toD0181_$2#0 Constant (const byte) render_init::toD0181_$7#0 = render_init::toD0181_$6#0&15 +Constant (const byte) toSpritePtr1_return#1 = toSpritePtr1_return#0 +Constant (const byte) irq::toSpritePtr2_return#0 = irq::toSpritePtr2_$2#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_init::toD0181_return#0 = render_init::toD0181_$3#0|render_init::toD0181_$7#0 +Constant (const byte) $3 = toSpritePtr1_return#1 +Constant (const byte) irq::toSpritePtr2_return#1 = irq::toSpritePtr2_return#0 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) irq::$2 = irq::toSpritePtr2_return#1 +Successful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(SPRITES_YPOS#0+0) +Consolidated array index constant in *(SPRITES_YPOS#0+2) +Consolidated array index constant in *(SPRITES_YPOS#0+4) +Consolidated array index constant in *(SPRITES_YPOS#0+6) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS#0+0) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS#0+1) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS#0+2) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS#0+3) Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@2 @@ -5092,21 +5700,23 @@ Resolved ranged comparison value if(keyboard_event_scan::row#1!=rangelast(0,7)) Resolved ranged next value keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ Resolved ranged comparison value if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@4 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value render_init::i#1 ← ++ render_init::i#2 to ++ -Resolved ranged comparison value if(render_init::i#1!=rangelast(0,render_init::$9)) goto render_init::@1 to (const byte/signed word/word/dword/signed dword) render_init::$9+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged comparison value if(render_init::i#1!=rangelast(0,render_init::$10)) goto render_init::@1 to (const byte/signed word/word/dword/signed dword) render_init::$10+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_init::c#1 ← ++ render_init::c#2 to ++ -Resolved ranged comparison value if(render_init::c#1!=rangelast(0,render_init::$14)) goto render_init::@3 to (const byte/signed word/word/dword/signed dword) render_init::$14+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged comparison value if(render_init::c#1!=rangelast(0,render_init::$17)) goto render_init::@3 to (const byte/signed word/word/dword/signed dword) render_init::$17+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_init::l#1 ← ++ render_init::l#4 to ++ -Resolved ranged comparison value if(render_init::l#1!=rangelast(0,render_init::$13)) goto render_init::@2 to (const byte/signed word/word/dword/signed dword) render_init::$13+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged comparison value if(render_init::l#1!=rangelast(2,render_init::$16)) goto render_init::@2 to (const byte/signed word/word/dword/signed dword) render_init::$16+(byte/signed byte/word/signed word/dword/signed dword) 1 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,24)) goto render_screen_original::@1 to (byte/signed byte/word/signed word/dword/signed dword) 25 Resolved ranged next value render_playfield::c#1 ← ++ render_playfield::c#2 to ++ -Resolved ranged comparison value if(render_playfield::c#1!=rangelast(0,render_playfield::$2)) goto render_playfield::@2 to (const byte/signed word/word/dword/signed dword) render_playfield::$2+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged 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(0,render_playfield::$0)) goto render_playfield::@1 to (const byte/signed word/word/dword/signed dword) render_playfield::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value render_current::l#1 ← ++ render_current::l#3 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_current::l#1 ← ++ render_current::l#4 to ++ Resolved ranged comparison value if(render_current::l#1!=rangelast(0,3)) goto render_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value render_current::c#1 ← ++ render_current::c#2 to ++ -Resolved ranged comparison value if(render_current::c#1!=rangelast(0,3)) goto render_current::@3 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged comparison value if(render_current::c#1!=rangelast(0,3)) goto render_current::@4 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value sprites_init::s#1 ← ++ sprites_init::s#2 to ++ +Resolved ranged comparison value if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value play_collision::c#1 ← ++ play_collision::c#2 to ++ Resolved ranged comparison value if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value play_collision::l#1 ← ++ play_collision::l#6 to ++ @@ -5133,8 +5743,10 @@ Culled Empty Block (label) render_init::@7 Culled Empty Block (label) render_init::toD0181_@return Culled Empty Block (label) render_init::@10 Culled Empty Block (label) render_init::@4 -Culled Empty Block (label) render_current::@5 -Culled Empty Block (label) @18 +Culled Empty Block (label) render_current::@6 +Culled Empty Block (label) toSpritePtr1_@return +Culled Empty Block (label) irq::toSpritePtr2_@return +Culled Empty Block (label) @21 Culled Empty Block (label) play_move_down::@3 Culled Empty Block (label) play_move_down::@5 Culled Empty Block (label) play_move_down::@21 @@ -5144,24 +5756,24 @@ Culled Empty Block (label) play_move_leftright::@4 Culled Empty Block (label) play_move_leftright::@5 Culled Empty Block (label) play_move_rotate::@7 Culled Empty Block (label) play_move_rotate::@5 -Culled Empty Block (label) @21 +Culled Empty Block (label) @24 Culled Empty Block (label) play_collision::@9 Culled Empty Block (label) play_collision::@11 Culled Empty Block (label) play_collision::@13 Culled Empty Block (label) play_collision::@7 Culled Empty Block (label) play_collision::@15 Culled Empty Block (label) play_collision::@18 -Culled Empty Block (label) main::@26 +Culled Empty Block (label) main::@28 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@8 -Culled Empty Block (label) main::@33 -Culled Empty Block (label) @28 +Culled Empty Block (label) main::@35 +Culled Empty Block (label) @32 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (byte) render_screen_original::SPACE#3 Self Phi Eliminated (byte) current_xpos#13 -Self Phi Eliminated (byte*) current_piece_gfx#24 -Self Phi Eliminated (byte) current_piece_char#39 +Self Phi Eliminated (byte*) current_piece_gfx#23 +Self Phi Eliminated (byte) current_piece_char#38 Self Phi Eliminated (byte) play_collision::col#0 Self Phi Eliminated (byte*) play_collision::piece_gfx#2 Self Phi Eliminated (byte) current_xpos#23 @@ -5170,14 +5782,17 @@ Self Phi Eliminated (byte) current_piece_char#31 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) render_screen_original::SPACE#3 (const byte) render_screen_original::SPACE#0 Redundant Phi (byte) current_xpos#13 (byte) current_xpos#48 -Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#53 -Redundant Phi (byte) current_piece_char#39 (byte) current_piece_char#62 +Redundant Phi (byte*) current_piece_gfx#23 (byte*) current_piece_gfx#53 +Redundant Phi (byte) current_piece_char#38 (byte) current_piece_char#63 Redundant Phi (byte) play_collision::col#0 (byte) play_collision::xpos#5 Redundant Phi (byte*) play_collision::piece_gfx#2 (byte*) play_collision::piece_gfx#0 Redundant Phi (byte) current_xpos#23 (byte) current_xpos#11 Redundant Phi (byte*) current_piece_gfx#30 (byte*) current_piece_gfx#10 Redundant Phi (byte) current_piece_char#31 (byte) current_piece_char#16 Successful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) render_current::$1 if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 +Simple Condition (bool~) render_current::$3 if((byte) render_current::ypos2#2<(const byte/signed word/word/dword/signed dword) render_current::$2) goto render_current::@2 +Successful SSA optimization Pass2ConditionalJumpSimplification Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0 Inlining constant with var siblings (const byte) keyboard_event_scan::row#0 Inlining constant with var siblings (const byte) keyboard_event_scan::col#0 @@ -5190,18 +5805,21 @@ Inlining constant with var siblings (const byte) keyboard_event_get::return#0 Inlining constant with var siblings (const byte) render_init::i#0 Inlining constant with var siblings (const byte) render_init::l#0 Inlining constant with var siblings (const byte) render_init::c#0 -Inlining constant with var siblings (const byte*) render_init::line#0 Inlining constant with var siblings (const byte*) render_init::li#0 +Inlining constant with var siblings (const byte*) render_init::line#0 Inlining constant with var siblings (const byte) render_screen_original::y#0 Inlining constant with var siblings (const byte) render_screen_original::x#0 Inlining constant with var siblings (const byte*) render_screen_original::screen#0 Inlining constant with var siblings (const byte*) render_screen_original::orig#0 -Inlining constant with var siblings (const byte) render_playfield::i#0 Inlining constant with var siblings (const byte) render_playfield::l#0 Inlining constant with var siblings (const byte) render_playfield::c#0 +Inlining constant with var siblings (const byte) render_playfield::i#0 Inlining constant with var siblings (const byte) render_current::i#0 Inlining constant with var siblings (const byte) render_current::l#0 Inlining constant with var siblings (const byte) render_current::c#0 +Inlining constant with var siblings (const byte) sprites_init::s#0 +Inlining constant with var siblings (const byte) sprites_init::xpos#0 +Inlining constant with different constant siblings (const byte) irq::toSpritePtr2_return#1 Inlining constant with var siblings (const byte) play_move_down::movedown#0 Inlining constant with var siblings (const byte) play_move_down::return#0 Inlining constant with var siblings (const byte) play_move_down::return#1 @@ -5242,6 +5860,7 @@ Inlining constant with var siblings (const byte) current_orientation#20 Inlining constant with var siblings (const byte) current_xpos#24 Inlining constant with var siblings (const byte) current_ypos#19 Inlining constant with var siblings (const byte) keyboard_modifiers#2 +Inlining constant with different constant siblings (const byte) toSpritePtr1_return#1 Constant inlined play_remove_lines::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined play_move_rotate::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5254,25 +5873,31 @@ Constant inlined current_movedown_counter#0 = (byte/signed byte/word/signed word Constant inlined current_movedown_counter#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined fill::start#0 = (const byte*) COLS#0 Constant inlined render_screen_original::screen#0 = (const byte*) PLAYFIELD_SCREEN#0 -Constant inlined render_init::li#0 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 +Constant inlined irq::toSpritePtr2_return#1 = (const byte) irq::toSpritePtr2_return#0 +Constant inlined render_init::li#0 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined render_screen_original::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383 -Constant inlined render_playfield::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +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_init::$14 = (const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined render_init::$13 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined render_init::$14 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 +Constant inlined render_init::$13 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined render_init::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined render_init::$10 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_remove_lines::$0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined play_remove_lines::$2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined play_collision::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::$4 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_screen_original::$0 = (byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined toSpritePtr1_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined render_init::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 -Constant inlined render_init::$9 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined render_init::$17 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined render_init::$16 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined irq::toSpritePtr2_$2#0 = (const byte) irq::toSpritePtr2_return#0 Constant inlined render_init::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined play_lock_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined render_init::$7 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 +Constant inlined render_init::$7 = (byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 +Constant inlined render_init::$8 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined $10 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $11 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $12 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 @@ -5288,7 +5913,7 @@ Constant inlined $16 = (byte/signed byte/word/signed word/dword/signed dword) 4* Constant inlined $17 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $18 = ((word))(const byte[4*4*4]) PIECE_T#0 Constant inlined $19 = ((word))(const byte[4*4*4]) PIECE_S#0 -Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_init::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 Constant inlined render_screen_original::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined $20 = ((word))(const byte[4*4*4]) PIECE_Z#0 @@ -5298,6 +5923,7 @@ Constant inlined $22 = ((word))(const byte[4*4*4]) PIECE_O#0 Constant inlined render_init::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined $23 = ((word))(const byte[4*4*4]) PIECE_I#0 Constant inlined $24 = ((word))(const byte[4*4*4]) PIECE_L#0 +Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() Constant inlined $25 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0 Constant inlined keyboard_event_pressed::keycode#2 = (const byte) KEY_CTRL#0 @@ -5305,16 +5931,19 @@ Constant inlined render_init::i#0 = (byte/signed byte/word/signed word/dword/sig Constant inlined keyboard_event_pressed::keycode#1 = (const byte) KEY_RSHIFT#0 Constant inlined render_screen_original::orig#0 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined keyboard_event_pressed::keycode#0 = (const byte) KEY_LSHIFT#0 -Constant inlined render_current::$1 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined play_collision::return#7 = (const byte) COLLISION_RIGHT#0 Constant inlined play_init::$3 = (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 Constant inlined play_collision::return#6 = (const byte) COLLISION_LEFT#0 +Constant inlined render_current::$2 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined play_collision::return#4 = (const byte) COLLISION_BOTTOM#0 Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_move_down::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_SCREEN#0 Constant inlined play_collision::return#9 = (const byte) COLLISION_NONE#0 Constant inlined play_collision::return#8 = (const byte) COLLISION_PLAYFIELD#0 +Constant inlined toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 +Constant inlined toSpritePtr1_return#1 = (const byte) toSpritePtr1_return#0 +Constant inlined irq::$2 = (const byte) irq::toSpritePtr2_return#0 Constant inlined play_init::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 @@ -5322,11 +5951,12 @@ Constant inlined play_remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 Constant inlined render_init::toD0181_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined keyboard_modifiers#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined $2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 -Constant inlined $3 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined $3 = (const byte) toSpritePtr1_return#0 Constant inlined play_lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined $4 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined render_init::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined render_init::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined $5 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $6 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $7 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 @@ -5336,13 +5966,16 @@ Constant inlined render_playfield::c#0 = (byte/signed byte/word/signed word/dwor Constant inlined play_spawn_current::piece_idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined play_remove_lines::full#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::full#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined sprites_init::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined render_init::line#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 +Constant inlined render_init::line#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined play_collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_leftright::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined sprites_init::$0 = (byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined current_orientation#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined irq::toSpritePtr2_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 Constant inlined fill::val#0 = (const byte) DARK_GREY#0 Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 @@ -5353,9 +5986,10 @@ Constant inlined play_init::j#0 = (byte/signed byte/word/signed word/dword/signe Constant inlined render_init::toD0181_$6#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined play_lock_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_scan::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined render_playfield::$2 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined render_playfield::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined render_playfield::$1 = (const byte) PLAYFIELD_LINES#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 irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SPRITES#0 Constant inlined play_init::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined current_xpos#24 = (byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined current_ypos#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5363,14 +5997,17 @@ Constant inlined render_init::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const by Constant inlined render_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined toSpritePtr1_$2#0 = (const byte) toSpritePtr1_return#0 Constant inlined keyboard_event_get::return#0 = (byte/word/signed word/dword/signed dword) 255 +Constant inlined irq::toSpritePtr2_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Successful SSA optimization Pass2ConstantInlining +Simplifying constant plus zero SPRITES_YPOS#0+0 +Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS#0+0 Simplifying constant integer increment ++0 Successful SSA optimization Pass2ConstantSimplification -Added new block during phi lifting render_current::@11(between render_current::@2 and render_current::@1) -Added new block during phi lifting render_current::@12(between render_current::@4 and render_current::@3) -Added new block during phi lifting render_current::@13(between render_current::@1 and render_current::@2) -Added new block during phi lifting render_current::@14(between render_current::@4 and render_current::@2) +Added new block during phi lifting render_current::@14(between render_current::@3 and render_current::@1) +Added new block during phi lifting render_current::@15(between render_current::@5 and render_current::@3) +Added new block during phi lifting render_current::@16(between render_current::@5 and render_current::@4) Added new block during phi lifting render_playfield::@5(between render_playfield::@3 and render_playfield::@1) Added new block during phi lifting render_playfield::@6(between render_playfield::@2 and render_playfield::@2) Added new block during phi lifting play_move_rotate::@15(between play_move_rotate::@14 and play_move_rotate::@return) @@ -5408,6 +6045,7 @@ Fixing phi predecessor for keyboard_event_scan::col#2 to new block ( keyboard_ev Added new block during phi lifting keyboard_event_scan::@35(between keyboard_event_scan::@4 and keyboard_event_scan::@5) Added new block during phi lifting keyboard_event_scan::@36(between keyboard_event_scan::@15 and keyboard_event_scan::@5) Added new block during phi lifting play_init::@3(between play_init::@1 and play_init::@1) +Added new block during phi lifting sprites_init::@3(between sprites_init::@1 and sprites_init::@1) Added new block during phi lifting render_init::@11(between render_init::@1 and render_init::@1) Added new block during phi lifting render_init::@12(between render_init::@5 and render_init::@2) Added new block during phi lifting render_init::@13(between render_init::@3 and render_init::@3) @@ -5418,14 +6056,18 @@ Added new block during phi lifting render_screen_original::@12(between render_sc Added new block during phi lifting render_screen_original::@13(between render_screen_original::@3 and render_screen_original::@4) Added new block during phi lifting render_screen_original::@14(between render_screen_original::@4 and render_screen_original::@4) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) +Added new block during phi lifting irq::@10(between irq::@3 and irq::@4) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of toSpritePtr1 +Adding NOP phi() at start of @30 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@24 -Adding NOP phi() at start of main::@27 +Adding NOP phi() at start of main::@25 +Adding NOP phi() at start of main::@26 +Adding NOP phi() at start of main::@29 Adding NOP phi() at start of main::@19 Adding NOP phi() at start of render_playfield Adding NOP phi() at start of play_move_down::@8 @@ -5445,193 +6087,199 @@ Adding NOP phi() at start of render_init::toD0181 Adding NOP phi() at start of render_init::@9 Adding NOP phi() at start of render_screen_original Adding NOP phi() at start of fill +Adding NOP phi() at start of irq::toSpritePtr2 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to sid_rnd_init:7 render_init:9 play_init:11 play_spawn_current:13 render_playfield:15 render_current:18 keyboard_event_scan:26 keyboard_event_get:28 play_move_down:32 play_move_leftright:37 play_move_rotate:42 render_playfield:48 render_current:53 -Calls in [play_move_rotate] to play_collision:131 -Calls in [play_move_leftright] to play_collision:183 play_collision:200 -Calls in [play_move_down] to keyboard_event_pressed:211 play_collision:231 play_lock_current:236 play_remove_lines:238 play_spawn_current:240 -Calls in [play_spawn_current] to sid_rnd:278 -Calls in [keyboard_event_scan] to keyboard_matrix_read:362 keyboard_event_pressed:373 keyboard_event_pressed:379 keyboard_event_pressed:386 keyboard_event_pressed:393 -Calls in [render_init] to fill:460 render_screen_original:462 +Calls in [] to main:10 +Calls in [main] to sid_rnd_init:13 render_init:15 sprites_init:17 sprites_irq_init:19 play_init:21 play_spawn_current:23 render_playfield:25 render_current:28 keyboard_event_scan:36 keyboard_event_get:38 play_move_down:42 play_move_leftright:47 play_move_rotate:52 render_playfield:58 render_current:63 +Calls in [play_move_rotate] to play_collision:143 +Calls in [play_move_leftright] to play_collision:195 play_collision:212 +Calls in [play_move_down] to keyboard_event_pressed:223 play_collision:243 play_lock_current:248 play_remove_lines:250 play_spawn_current:252 +Calls in [play_spawn_current] to sid_rnd:290 +Calls in [keyboard_event_scan] to keyboard_matrix_read:374 keyboard_event_pressed:385 keyboard_event_pressed:391 keyboard_event_pressed:398 keyboard_event_pressed:405 +Calls in [render_init] to fill:498 render_screen_original:500 -Created 109 initial phi equivalence classes -Not coalescing [16] current_piece_gfx#87 ← current_piece_gfx#17 -Not coalescing [17] current_piece_char#75 ← current_piece_char#13 -Coalesced [20] current_piece_gfx#86 ← current_piece_gfx#17 -Coalesced [21] current_piece_char#74 ← current_piece_char#13 -Not coalescing [49] current_ypos#71 ← current_ypos#14 -Not coalescing [50] current_xpos#96 ← current_xpos#20 -Not coalescing [51] current_piece_gfx#88 ← current_piece_gfx#15 -Not coalescing [52] current_piece_char#76 ← current_piece_char#11 -Coalesced [55] current_piece#69 ← current_piece#10 -Coalesced [56] current_orientation#73 ← current_orientation#19 -Coalesced [57] current_piece_gfx#85 ← current_piece_gfx#15 -Coalesced [58] current_xpos#95 ← current_xpos#20 -Coalesced [59] current_ypos#70 ← current_ypos#14 -Coalesced [60] current_piece_char#73 ← current_piece_char#11 -Coalesced [61] keyboard_events_size#72 ← keyboard_events_size#16 -Coalesced [62] current_movedown_counter#46 ← current_movedown_counter#10 -Coalesced [65] render_current::ypos2#10 ← render_current::ypos2#0 -Coalesced [70] render_current::i#12 ← render_current::i#4 -Coalesced [71] render_current::xpos#8 ← render_current::xpos#0 -Coalesced [81] render_current::i#14 ← render_current::i#1 -Coalesced [87] render_current::ypos2#11 ← render_current::ypos2#1 -Coalesced [88] render_current::l#10 ← render_current::l#1 -Coalesced [89] render_current::i#10 ← render_current::i#8 -Coalesced (already) [90] render_current::i#11 ← render_current::i#1 -Coalesced [91] render_current::xpos#7 ← render_current::xpos#1 -Coalesced [92] render_current::c#7 ← render_current::c#1 -Coalesced (already) [93] render_current::i#13 ← render_current::i#4 -Coalesced [98] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [99] render_playfield::line#3 ← render_playfield::line#0 -Coalesced [109] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [110] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [111] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [112] render_playfield::line#4 ← render_playfield::line#1 -Coalesced [113] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [116] current_orientation#76 ← current_orientation#14 -Coalesced [117] current_piece_gfx#91 ← current_piece_gfx#14 -Coalesced [122] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [127] current_piece#74 ← current_piece#10 -Coalesced [128] play_collision::orientation#8 ← play_collision::orientation#3 -Coalesced [129] play_collision::ypos#8 ← play_collision::ypos#3 -Coalesced [130] play_collision::xpos#17 ← play_collision::xpos#3 -Coalesced [137] current_orientation#74 ← current_orientation#4 -Coalesced [138] current_piece_gfx#89 ← current_piece_gfx#4 -Coalesced (already) [139] current_orientation#75 ← current_orientation#14 -Coalesced (already) [140] current_piece_gfx#90 ← current_piece_gfx#14 -Coalesced [143] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [147] play_collision::ypos2#11 ← play_collision::ypos2#0 -Coalesced [150] play_collision::i#12 ← play_collision::i#3 -Not coalescing [151] play_collision::col#9 ← play_collision::xpos#5 -Coalesced [168] play_collision::ypos2#12 ← play_collision::ypos2#1 -Not coalescing [169] play_collision::i#11 ← play_collision::i#1 -Coalesced [170] play_collision::l#11 ← play_collision::l#1 -Not coalescing [171] play_collision::i#13 ← play_collision::i#1 -Coalesced [172] play_collision::col#10 ← play_collision::col#1 -Coalesced [173] play_collision::c#9 ← play_collision::c#1 -Not coalescing [179] current_piece#73 ← current_piece#10 -Coalesced [180] play_collision::orientation#7 ← play_collision::orientation#2 -Coalesced [181] play_collision::ypos#7 ← play_collision::ypos#2 -Coalesced [182] play_collision::xpos#16 ← play_collision::xpos#2 -Coalesced [188] current_xpos#99 ← current_xpos#3 -Coalesced [191] current_xpos#98 ← current_xpos#16 -Coalesced (already) [192] current_xpos#101 ← current_xpos#16 -Not coalescing [196] current_piece#72 ← current_piece#10 -Coalesced [197] play_collision::orientation#6 ← play_collision::orientation#1 -Coalesced [198] play_collision::ypos#6 ← play_collision::ypos#1 -Coalesced [199] play_collision::xpos#15 ← play_collision::xpos#1 -Coalesced [205] current_xpos#97 ← current_xpos#5 -Coalesced (already) [206] current_xpos#100 ← current_xpos#16 -Coalesced [217] play_move_down::movedown#13 ← play_move_down::movedown#2 -Coalesced [221] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [227] current_piece#71 ← current_piece#16 -Coalesced [228] play_collision::orientation#5 ← play_collision::orientation#0 -Coalesced [229] play_collision::ypos#5 ← play_collision::ypos#0 -Coalesced [230] play_collision::xpos#14 ← play_collision::xpos#0 -Coalesced [242] current_piece_gfx#92 ← current_piece_gfx#17 -Coalesced [243] current_piece_char#77 ← current_piece_char#13 -Coalesced [245] current_ypos#74 ← current_ypos#30 -Coalesced [246] current_piece#78 ← current_piece#20 -Coalesced [247] current_orientation#79 ← current_orientation#29 -Coalesced (already) [248] current_piece_gfx#95 ← current_piece_gfx#27 -Coalesced [249] current_xpos#104 ← current_xpos#34 -Coalesced (already) [250] current_piece_char#80 ← current_piece_char#21 -Coalesced [254] current_ypos#72 ← current_ypos#1 -Coalesced (already) [255] current_piece#76 ← current_piece#16 -Coalesced (already) [256] current_orientation#77 ← current_orientation#10 -Coalesced (already) [257] current_piece_gfx#93 ← current_piece_gfx#10 -Coalesced (already) [258] current_xpos#102 ← current_xpos#11 -Coalesced (already) [259] current_piece_char#78 ← current_piece_char#16 -Coalesced [260] current_movedown_counter#47 ← current_movedown_counter#1 -Coalesced (already) [261] current_ypos#73 ← current_ypos#22 -Coalesced (already) [262] current_piece#77 ← current_piece#16 -Coalesced (already) [263] current_orientation#78 ← current_orientation#10 -Coalesced (already) [264] current_piece_gfx#94 ← current_piece_gfx#10 -Coalesced (already) [265] current_xpos#103 ← current_xpos#11 -Coalesced (already) [266] current_piece_char#79 ← current_piece_char#16 -Coalesced [267] play_move_down::movedown#17 ← play_move_down::movedown#7 -Coalesced [268] play_move_down::movedown#15 ← play_move_down::movedown#10 -Coalesced (already) [269] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [282] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced [287] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [288] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [301] play_remove_lines::w#16 ← play_remove_lines::w#2 -Coalesced [305] play_remove_lines::w#18 ← play_remove_lines::w#11 -Coalesced [311] play_remove_lines::w#19 ← play_remove_lines::w#3 -Coalesced [312] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [313] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [314] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [315] play_remove_lines::w#17 ← play_remove_lines::w#1 -Coalesced (already) [316] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [317] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [318] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [319] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [320] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [322] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 -Coalesced [326] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [327] play_lock_current::col#5 ← play_lock_current::col#0 -Coalesced [339] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 -Not coalescing [340] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [341] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [342] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [343] play_lock_current::col#6 ← play_lock_current::col#1 -Coalesced [344] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [354] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [355] keyboard_events_size#74 ← keyboard_events_size#4 -Coalesced [358] keyboard_events_size#73 ← keyboard_events_size#13 -Coalesced [359] keyboard_events_size#75 ← keyboard_events_size#19 -Coalesced [367] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [368] keyboard_events_size#77 ← keyboard_events_size#29 -Coalesced [384] keyboard_modifiers#53 ← keyboard_modifiers#3 -Coalesced [391] keyboard_modifiers#55 ← keyboard_modifiers#4 -Coalesced [399] keyboard_modifiers#56 ← keyboard_modifiers#12 -Coalesced [400] keyboard_modifiers#54 ← keyboard_modifiers#11 -Coalesced [401] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [402] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [403] keyboard_events_size#76 ← keyboard_events_size#13 -Coalesced [404] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [405] keyboard_events_size#79 ← keyboard_events_size#29 -Coalesced [415] keyboard_events_size#81 ← keyboard_events_size#2 -Coalesced [421] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [422] keyboard_events_size#78 ← keyboard_events_size#30 -Coalesced [423] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [424] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [425] keyboard_events_size#80 ← keyboard_events_size#30 -Coalesced [429] keyboard_events_size#84 ← keyboard_events_size#1 -Coalesced (already) [430] keyboard_events_size#83 ← keyboard_events_size#10 -Coalesced (already) [431] keyboard_events_size#82 ← keyboard_events_size#10 -Coalesced [446] play_init::j#3 ← play_init::j#1 -Coalesced [447] play_init::pli#3 ← play_init::pli#1 -Coalesced [448] play_init::idx#3 ← play_init::idx#1 -Coalesced [479] render_init::line#5 ← render_init::line#1 -Coalesced [480] render_init::l#5 ← render_init::l#1 -Coalesced [481] render_init::c#3 ← render_init::c#1 -Coalesced [482] render_init::i#3 ← render_init::i#1 -Coalesced [483] render_init::li#3 ← render_init::li#1 -Coalesced [486] render_screen_original::screen#11 ← render_screen_original::screen#7 -Coalesced [492] render_screen_original::orig#8 ← render_screen_original::orig#4 -Coalesced [493] render_screen_original::screen#13 ← render_screen_original::screen#1 -Coalesced [494] render_screen_original::x#8 ← render_screen_original::x#1 -Coalesced [502] render_screen_original::screen#15 ← render_screen_original::screen#2 -Coalesced [503] render_screen_original::x#10 ← render_screen_original::x#2 -Coalesced [512] render_screen_original::screen#10 ← render_screen_original::screen#3 -Coalesced [513] render_screen_original::orig#7 ← render_screen_original::orig#1 -Coalesced [514] render_screen_original::y#7 ← render_screen_original::y#1 -Coalesced [515] render_screen_original::screen#16 ← render_screen_original::screen#3 -Coalesced [516] render_screen_original::x#11 ← render_screen_original::x#3 -Coalesced (already) [517] render_screen_original::orig#9 ← render_screen_original::orig#1 -Coalesced [518] render_screen_original::screen#14 ← render_screen_original::screen#2 -Coalesced [519] render_screen_original::x#9 ← render_screen_original::x#2 -Coalesced (already) [520] render_screen_original::screen#12 ← render_screen_original::screen#1 -Coalesced [521] render_screen_original::x#7 ← render_screen_original::x#1 -Coalesced [528] fill::addr#3 ← fill::addr#1 -Coalesced down to 68 phi equivalence classes +Created 113 initial phi equivalence classes +Not coalescing [26] current_piece_gfx#95 ← current_piece_gfx#17 +Not coalescing [27] current_piece_char#83 ← current_piece_char#13 +Coalesced [30] current_piece_gfx#94 ← current_piece_gfx#17 +Coalesced [31] current_piece_char#82 ← current_piece_char#13 +Not coalescing [59] current_ypos#78 ← current_ypos#14 +Not coalescing [60] current_xpos#104 ← current_xpos#20 +Not coalescing [61] current_piece_gfx#96 ← current_piece_gfx#15 +Not coalescing [62] current_piece_char#84 ← current_piece_char#11 +Coalesced [65] current_piece#71 ← current_piece#10 +Coalesced [66] current_orientation#75 ← current_orientation#19 +Coalesced [67] current_piece_gfx#93 ← current_piece_gfx#15 +Coalesced [68] current_xpos#103 ← current_xpos#20 +Coalesced [69] current_ypos#77 ← current_ypos#14 +Coalesced [70] current_piece_char#81 ← current_piece_char#11 +Coalesced [71] keyboard_events_size#79 ← keyboard_events_size#16 +Coalesced [72] current_movedown_counter#48 ← current_movedown_counter#10 +Coalesced [75] render_current::ypos2#11 ← render_current::ypos2#0 +Coalesced [79] render_current::i#14 ← render_current::i#1 +Coalesced [85] render_current::ypos2#12 ← render_current::ypos2#1 +Coalesced [86] render_current::i#12 ← render_current::i#8 +Coalesced [87] render_current::l#11 ← render_current::l#1 +Coalesced [91] render_current::i#15 ← render_current::i#3 +Coalesced [92] render_current::xpos#7 ← render_current::xpos#0 +Coalesced [102] render_current::i#13 ← render_current::i#10 +Coalesced (already) [103] render_current::i#16 ← render_current::i#10 +Coalesced [104] render_current::xpos#8 ← render_current::xpos#1 +Coalesced [105] render_current::c#7 ← render_current::c#1 +Coalesced [110] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [111] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [121] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [122] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [123] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [124] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [125] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [128] current_orientation#78 ← current_orientation#14 +Coalesced [129] current_piece_gfx#99 ← current_piece_gfx#14 +Coalesced [134] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [139] current_piece#76 ← current_piece#10 +Coalesced [140] play_collision::orientation#8 ← play_collision::orientation#3 +Coalesced [141] play_collision::ypos#8 ← play_collision::ypos#3 +Coalesced [142] play_collision::xpos#17 ← play_collision::xpos#3 +Coalesced [149] current_orientation#76 ← current_orientation#4 +Coalesced [150] current_piece_gfx#97 ← current_piece_gfx#4 +Coalesced (already) [151] current_orientation#77 ← current_orientation#14 +Coalesced (already) [152] current_piece_gfx#98 ← current_piece_gfx#14 +Coalesced [155] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [159] play_collision::ypos2#11 ← play_collision::ypos2#0 +Coalesced [162] play_collision::i#12 ← play_collision::i#3 +Not coalescing [163] play_collision::col#9 ← play_collision::xpos#5 +Coalesced [180] play_collision::ypos2#12 ← play_collision::ypos2#1 +Not coalescing [181] play_collision::i#11 ← play_collision::i#1 +Coalesced [182] play_collision::l#11 ← play_collision::l#1 +Not coalescing [183] play_collision::i#13 ← play_collision::i#1 +Coalesced [184] play_collision::col#10 ← play_collision::col#1 +Coalesced [185] play_collision::c#9 ← play_collision::c#1 +Not coalescing [191] current_piece#75 ← current_piece#10 +Coalesced [192] play_collision::orientation#7 ← play_collision::orientation#2 +Coalesced [193] play_collision::ypos#7 ← play_collision::ypos#2 +Coalesced [194] play_collision::xpos#16 ← play_collision::xpos#2 +Coalesced [200] current_xpos#107 ← current_xpos#3 +Coalesced [203] current_xpos#106 ← current_xpos#16 +Coalesced (already) [204] current_xpos#109 ← current_xpos#16 +Not coalescing [208] current_piece#74 ← current_piece#10 +Coalesced [209] play_collision::orientation#6 ← play_collision::orientation#1 +Coalesced [210] play_collision::ypos#6 ← play_collision::ypos#1 +Coalesced [211] play_collision::xpos#15 ← play_collision::xpos#1 +Coalesced [217] current_xpos#105 ← current_xpos#5 +Coalesced (already) [218] current_xpos#108 ← current_xpos#16 +Coalesced [229] play_move_down::movedown#13 ← play_move_down::movedown#2 +Coalesced [233] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [239] current_piece#73 ← current_piece#16 +Coalesced [240] play_collision::orientation#5 ← play_collision::orientation#0 +Coalesced [241] play_collision::ypos#5 ← play_collision::ypos#0 +Coalesced [242] play_collision::xpos#14 ← play_collision::xpos#0 +Coalesced [254] current_piece_gfx#100 ← current_piece_gfx#17 +Coalesced [255] current_piece_char#85 ← current_piece_char#13 +Coalesced [257] current_ypos#81 ← current_ypos#30 +Coalesced [258] current_piece#80 ← current_piece#20 +Coalesced [259] current_orientation#81 ← current_orientation#29 +Coalesced (already) [260] current_piece_gfx#103 ← current_piece_gfx#27 +Coalesced [261] current_xpos#112 ← current_xpos#34 +Coalesced (already) [262] current_piece_char#88 ← current_piece_char#21 +Coalesced [266] current_ypos#79 ← current_ypos#1 +Coalesced (already) [267] current_piece#78 ← current_piece#16 +Coalesced (already) [268] current_orientation#79 ← current_orientation#10 +Coalesced (already) [269] current_piece_gfx#101 ← current_piece_gfx#10 +Coalesced (already) [270] current_xpos#110 ← current_xpos#11 +Coalesced (already) [271] current_piece_char#86 ← current_piece_char#16 +Coalesced [272] current_movedown_counter#49 ← current_movedown_counter#1 +Coalesced (already) [273] current_ypos#80 ← current_ypos#22 +Coalesced (already) [274] current_piece#79 ← current_piece#16 +Coalesced (already) [275] current_orientation#80 ← current_orientation#10 +Coalesced (already) [276] current_piece_gfx#102 ← current_piece_gfx#10 +Coalesced (already) [277] current_xpos#111 ← current_xpos#11 +Coalesced (already) [278] current_piece_char#87 ← current_piece_char#16 +Coalesced [279] play_move_down::movedown#17 ← play_move_down::movedown#7 +Coalesced [280] play_move_down::movedown#15 ← play_move_down::movedown#10 +Coalesced (already) [281] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [294] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced [299] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [300] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [313] play_remove_lines::w#16 ← play_remove_lines::w#2 +Coalesced [317] play_remove_lines::w#18 ← play_remove_lines::w#11 +Coalesced [323] play_remove_lines::w#19 ← play_remove_lines::w#3 +Coalesced [324] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [325] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [326] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [327] play_remove_lines::w#17 ← play_remove_lines::w#1 +Coalesced (already) [328] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [329] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [330] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [331] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [332] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [334] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 +Coalesced [338] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [339] play_lock_current::col#5 ← play_lock_current::col#0 +Coalesced [351] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 +Not coalescing [352] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [353] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [354] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [355] play_lock_current::col#6 ← play_lock_current::col#1 +Coalesced [356] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [366] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [367] keyboard_events_size#81 ← keyboard_events_size#4 +Coalesced [370] keyboard_events_size#80 ← keyboard_events_size#13 +Coalesced [371] keyboard_events_size#82 ← keyboard_events_size#19 +Coalesced [379] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [380] keyboard_events_size#84 ← keyboard_events_size#29 +Coalesced [396] keyboard_modifiers#60 ← keyboard_modifiers#3 +Coalesced [403] keyboard_modifiers#62 ← keyboard_modifiers#4 +Coalesced [411] keyboard_modifiers#63 ← keyboard_modifiers#12 +Coalesced [412] keyboard_modifiers#61 ← keyboard_modifiers#11 +Coalesced [413] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [414] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [415] keyboard_events_size#83 ← keyboard_events_size#13 +Coalesced [416] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [417] keyboard_events_size#86 ← keyboard_events_size#29 +Coalesced [427] keyboard_events_size#88 ← keyboard_events_size#2 +Coalesced [433] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [434] keyboard_events_size#85 ← keyboard_events_size#30 +Coalesced [435] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [436] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [437] keyboard_events_size#87 ← keyboard_events_size#30 +Coalesced [441] keyboard_events_size#91 ← keyboard_events_size#1 +Coalesced (already) [442] keyboard_events_size#90 ← keyboard_events_size#10 +Coalesced (already) [443] keyboard_events_size#89 ← keyboard_events_size#10 +Coalesced [458] play_init::j#3 ← play_init::j#1 +Coalesced [459] play_init::pli#3 ← play_init::pli#1 +Coalesced [460] play_init::idx#3 ← play_init::idx#1 +Coalesced [485] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [486] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [517] render_init::line#5 ← render_init::line#1 +Coalesced [518] render_init::l#5 ← render_init::l#1 +Coalesced [519] render_init::c#3 ← render_init::c#1 +Coalesced [520] render_init::i#3 ← render_init::i#1 +Coalesced [521] render_init::li#3 ← render_init::li#1 +Coalesced [524] render_screen_original::screen#11 ← render_screen_original::screen#7 +Coalesced [530] render_screen_original::orig#8 ← render_screen_original::orig#4 +Coalesced [531] render_screen_original::screen#13 ← render_screen_original::screen#1 +Coalesced [532] render_screen_original::x#8 ← render_screen_original::x#1 +Coalesced [540] render_screen_original::screen#15 ← render_screen_original::screen#2 +Coalesced [541] render_screen_original::x#10 ← render_screen_original::x#2 +Coalesced [550] render_screen_original::screen#10 ← render_screen_original::screen#3 +Coalesced [551] render_screen_original::orig#7 ← render_screen_original::orig#1 +Coalesced [552] render_screen_original::y#7 ← render_screen_original::y#1 +Coalesced [553] render_screen_original::screen#16 ← render_screen_original::screen#3 +Coalesced [554] render_screen_original::x#11 ← render_screen_original::x#3 +Coalesced (already) [555] render_screen_original::orig#9 ← render_screen_original::orig#1 +Coalesced [556] render_screen_original::screen#14 ← render_screen_original::screen#2 +Coalesced [557] render_screen_original::x#9 ← render_screen_original::x#2 +Coalesced (already) [558] render_screen_original::screen#12 ← render_screen_original::screen#1 +Coalesced [559] render_screen_original::x#7 ← render_screen_original::x#1 +Coalesced [566] fill::addr#3 ← fill::addr#1 +Coalesced [589] irq_raster_next#21 ← irq_raster_next#2 +Coalesced [595] irq::raster_next#5 ← irq::raster_next#1 +Coalesced [601] irq::raster_next#4 ← irq::raster_next#0 +Coalesced [607] irq_raster_next#22 ← irq_raster_next#1 +Coalesced down to 72 phi equivalence classes Culled Empty Block (label) render_current::@14 -Culled Empty Block (label) render_current::@11 -Culled Empty Block (label) render_current::@12 -Culled Empty Block (label) render_current::@13 +Culled Empty Block (label) render_current::@15 +Culled Empty Block (label) render_current::@16 Culled Empty Block (label) render_playfield::@5 Culled Empty Block (label) render_playfield::@6 Culled Empty Block (label) play_move_rotate::@16 @@ -5657,6 +6305,7 @@ Culled Empty Block (label) keyboard_event_scan::@33 Culled Empty Block (label) keyboard_event_scan::@36 Culled Empty Block (label) keyboard_event_scan::@35 Culled Empty Block (label) play_init::@3 +Culled Empty Block (label) sprites_init::@3 Culled Empty Block (label) render_init::@12 Culled Empty Block (label) render_init::@13 Culled Empty Block (label) render_init::@11 @@ -5667,14 +6316,18 @@ Culled Empty Block (label) render_screen_original::@14 Culled Empty Block (label) render_screen_original::@12 Culled Empty Block (label) render_screen_original::@10 Culled Empty Block (label) fill::@3 +Culled Empty Block (label) irq::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of toSpritePtr1 +Adding NOP phi() at start of @30 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@24 -Adding NOP phi() at start of main::@27 +Adding NOP phi() at start of main::@25 +Adding NOP phi() at start of main::@26 +Adding NOP phi() at start of main::@29 Adding NOP phi() at start of main::@19 Adding NOP phi() at start of render_playfield Adding NOP phi() at start of play_move_down::@8 @@ -5695,6 +6348,7 @@ Adding NOP phi() at start of render_init::toD0181 Adding NOP phi() at start of render_init::@9 Adding NOP phi() at start of render_screen_original Adding NOP phi() at start of fill +Adding NOP phi() at start of irq::toSpritePtr2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -5706,780 +6360,910 @@ FINAL CONTROL FLOW GRAPH }} kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} - to:@27 -@27: scope:[] from @14 - [3] phi() - [4] call main - to:@end -@end: scope:[] from @27 - [5] phi() -main: scope:[main] from @27 + to:@18 +@18: scope:[] from @14 + kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + to:@19 +@19: scope:[] from @18 + [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:toSpritePtr1 +toSpritePtr1: scope:[] from @19 [6] phi() - [7] call sid_rnd_init + to:@31 +@31: scope:[] from toSpritePtr1 + [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@30 +@30: scope:[] from @31 + [9] phi() + [10] call main + to:@end +@end: scope:[] from @30 + [11] phi() +main: scope:[main] from @30 + [12] phi() + [13] call sid_rnd_init to:main::@21 main::@21: scope:[main] from main asm { sei } - [9] call render_init + [15] call render_init to:main::@22 main::@22: scope:[main] from main::@21 - [10] phi() - [11] call play_init + [16] phi() + [17] call sprites_init to:main::@23 main::@23: scope:[main] from main::@22 - [12] phi() - [13] call play_spawn_current + [18] phi() + [19] call sprites_irq_init to:main::@24 main::@24: scope:[main] from main::@23 - [14] phi() - [15] call render_playfield + [20] phi() + [21] call play_init to:main::@25 main::@25: scope:[main] from main::@24 - [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 - [17] (byte~) current_piece_char#75 ← (byte) current_piece_char#13 - [18] call render_current - [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [22] phi() + [23] call play_spawn_current + to:main::@26 +main::@26: scope:[main] from main::@25 + [24] phi() + [25] call render_playfield + to:main::@27 +main::@27: scope:[main] from main::@26 + [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 + [27] (byte~) current_piece_char#83 ← (byte) current_piece_char#13 + [28] call render_current + [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@10 main::@25 - [20] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) current_piece_char#16 ← phi( main::@10/(byte) current_piece_char#11 main::@25/(byte) current_piece_char#13 ) - [20] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [20] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@25/(byte*) current_piece_gfx#17 ) - [20] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [20] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@25/(byte*~) current_piece#70 ) +main::@1: scope:[main] from main::@10 main::@27 + [30] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) current_piece_char#16 ← phi( main::@10/(byte) current_piece_char#11 main::@27/(byte) current_piece_char#13 ) + [30] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [30] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@27/(byte*) current_piece_gfx#17 ) + [30] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [30] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@27/(byte*~) current_piece#72 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 main::@7 - [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 + [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 to:main::@9 main::@9: scope:[main] from main::@7 - [23] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [24] call keyboard_event_scan - to:main::@27 -main::@27: scope:[main] from main::@9 - [25] phi() - [26] call keyboard_event_get - [27] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@28 -main::@28: scope:[main] from main::@27 - [28] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [29] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [30] call play_move_down - [31] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 + [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [34] call keyboard_event_scan to:main::@29 -main::@29: scope:[main] from main::@28 - [32] (byte~) main::$10 ← (byte) play_move_down::return#3 - [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 - [34] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [35] call play_move_leftright - [36] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 +main::@29: scope:[main] from main::@9 + [35] phi() + [36] call keyboard_event_get + [37] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@30 main::@30: scope:[main] from main::@29 - [37] (byte~) main::$11 ← (byte) play_move_leftright::return#4 - [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 - [39] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [40] call play_move_rotate - [41] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + [38] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [39] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [40] call play_move_down + [41] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@31 main::@31: scope:[main] from main::@30 - [42] (byte~) main::$12 ← (byte) play_move_rotate::return#4 - [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 - [44] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@31 - [45] phi() - [46] call render_playfield + [42] (byte~) main::$12 ← (byte) play_move_down::return#3 + [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 + [44] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [45] call play_move_leftright + [46] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@32 -main::@32: scope:[main] from main::@19 - [47] (byte~) current_ypos#71 ← (byte) current_ypos#14 - [48] (byte~) current_xpos#96 ← (byte) current_xpos#20 - [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 - [50] (byte~) current_piece_char#76 ← (byte) current_piece_char#11 - [51] call render_current +main::@32: scope:[main] from main::@31 + [47] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 + [49] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [50] call play_move_rotate + [51] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + to:main::@33 +main::@33: scope:[main] from main::@32 + [52] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 + [54] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@33 + [55] phi() + [56] call render_playfield + to:main::@34 +main::@34: scope:[main] from main::@19 + [57] (byte~) current_ypos#78 ← (byte) current_ypos#14 + [58] (byte~) current_xpos#104 ← (byte) current_xpos#20 + [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 + [60] (byte~) current_piece_char#84 ← (byte) current_piece_char#11 + [61] call render_current to:main::@10 -main::@10: scope:[main] from main::@31 main::@32 - [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@33 main::@34 + [62] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@25 main::@32 - [53] (byte) current_piece_char#62 ← phi( main::@25/(byte~) current_piece_char#75 main::@32/(byte~) current_piece_char#76 ) - [53] (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) - [53] (byte) current_xpos#48 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) - [53] (byte) current_ypos#10 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) - [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_current: scope:[render_current] from main::@27 main::@34 + [63] (byte) current_piece_char#63 ← phi( main::@27/(byte~) current_piece_char#83 main::@34/(byte~) current_piece_char#84 ) + [63] (byte*) current_piece_gfx#53 ← phi( main::@27/(byte*~) current_piece_gfx#95 main::@34/(byte*~) current_piece_gfx#96 ) + [63] (byte) current_xpos#48 ← phi( main::@27/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@34/(byte~) current_xpos#104 ) + [63] (byte) current_ypos#10 ← phi( main::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@34/(byte~) current_ypos#78 ) + [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 -render_current::@1: scope:[render_current] from render_current render_current::@2 - [55] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [55] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [55] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) - [56] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 - to:render_current::@6 -render_current::@6: scope:[render_current] from render_current::@1 - [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [58] (byte) render_current::xpos#0 ← (byte) current_xpos#48 - to:render_current::@3 -render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [59] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [59] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) - [59] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) - [61] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [62] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 +render_current::@1: scope:[render_current] from render_current render_current::@3 + [65] (byte) render_current::l#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@3/(byte) render_current::l#1 ) + [65] (byte) render_current::i#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@3/(byte) render_current::i#8 ) + [65] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) + [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 to:render_current::@7 -render_current::@7: scope:[render_current] from render_current::@3 - [63] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 - to:render_current::@8 -render_current::@8: scope:[render_current] from render_current::@7 - [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 - to:render_current::@4 -render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [65] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [66] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [67] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 - to:render_current::@2 -render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [68] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) +render_current::@7: scope:[render_current] from render_current::@1 render_current::@13 + [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + to:render_current::@3 +render_current::@3: scope:[render_current] from render_current::@5 render_current::@7 + [68] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return -render_current::@return: scope:[render_current] from render_current::@2 +render_current::@return: scope:[render_current] from render_current::@3 [72] return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@24 - [73] phi() +render_current::@13: scope:[render_current] from render_current::@1 + [73] if((byte) render_current::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + to:render_current::@7 +render_current::@2: scope:[render_current] from render_current::@13 + [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) + [75] (byte) render_current::xpos#0 ← (byte) current_xpos#48 + to:render_current::@4 +render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 + [76] (byte) render_current::c#2 ← phi( render_current::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@5/(byte) render_current::c#1 ) + [76] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) + [76] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) + [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) + [78] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 + [79] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 + to:render_current::@9 +render_current::@9: scope:[render_current] from render_current::@4 + [80] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 + to:render_current::@10 +render_current::@10: scope:[render_current] from render_current::@9 + [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 + to:render_current::@5 +render_current::@5: scope:[render_current] from render_current::@10 render_current::@4 render_current::@9 + [82] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [83] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [84] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 + to:render_current::@3 +render_playfield: scope:[render_playfield] from main::@19 main::@26 + [85] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [74] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [74] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [86] (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 ) + [86] (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 ) + [87] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [77] (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 ) - [77] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) - [77] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [79] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 - [80] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [81] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [82] 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 + [89] (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 ) + [89] (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 ) + [89] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [90] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [91] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [92] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [93] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [94] 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 - [83] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [84] 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 + [95] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [96] 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 - [85] return + [97] return to:@return -play_move_rotate: scope:[play_move_rotate] from main::@30 - [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 +play_move_rotate: scope:[play_move_rotate] from main::@32 + [98] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [87] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [99] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [88] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) - [88] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) - [88] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [89] return + [100] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) + [100] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) + [100] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [101] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [92] (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 ) - [93] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 - [94] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 - [95] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 - [97] call play_collision - [98] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [104] (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 ) + [105] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 + [106] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 + [107] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 + [109] call play_collision + [110] (byte) play_collision::return#13 ← (byte) play_collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [99] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [100] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [111] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + [112] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [101] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [113] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [105] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) - [105] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) - [105] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) - [105] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#71 play_move_leftright::@1/(byte*~) current_piece#72 play_move_leftright::@7/(byte*~) current_piece#73 play_move_rotate::@4/(byte*~) current_piece#74 ) - [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [117] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) + [117] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) + [117] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) + [117] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#73 play_move_leftright::@1/(byte*~) current_piece#74 play_move_leftright::@7/(byte*~) current_piece#75 play_move_rotate::@4/(byte*~) current_piece#76 ) + [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 - [108] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) - [108] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) - [108] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [110] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [120] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [120] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [120] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [122] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 - [111] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) - [111] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [111] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [112] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [113] 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 + [123] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [123] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [123] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [124] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@2 - [114] 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 + [126] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 - [115] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [116] return + [127] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [128] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [118] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [130] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [119] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [131] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [120] 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 + [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [121] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [122] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [123] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [133] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [134] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [135] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 to:play_collision::@17 play_collision::@17: scope:[play_collision] from play_collision::@3 - [124] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [125] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [126] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [136] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [137] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [138] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 to:play_collision::@return play_collision::@20: scope:[play_collision] from play_collision::@17 - [127] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [139] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [128] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [140] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@29 - [129] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from main::@31 + [141] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [130] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [142] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [131] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [132] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 - [133] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 - [135] call play_collision - [136] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [143] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [144] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 + [145] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 + [147] call play_collision + [148] (byte) play_collision::return#12 ← (byte) play_collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [137] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [138] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [149] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + [150] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [139] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 + [151] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [140] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) - [140] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [141] return + [152] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) + [152] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [153] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [142] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [143] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 - [144] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 - [146] call play_collision - [147] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [154] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 + [156] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 + [158] call play_collision + [159] (byte) play_collision::return#1 ← (byte) play_collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [148] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [149] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [160] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [161] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [150] (byte) current_xpos#5 ← -- (byte) current_xpos#16 + [162] (byte) current_xpos#5 ← -- (byte) current_xpos#16 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@28 - [151] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [152] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from main::@30 + [163] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 + [164] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [153] phi() + [165] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [154] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [155] call keyboard_event_pressed - [156] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [166] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [167] call keyboard_event_pressed + [168] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [157] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [158] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [169] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [170] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [159] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [171] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [160] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [172] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [161] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [162] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [173] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [174] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [163] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [175] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [164] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [165] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [176] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [177] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [166] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [167] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 - [168] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 - [170] call play_collision - [171] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [178] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [179] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 + [180] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 + [182] call play_collision + [183] (byte) play_collision::return#0 ← (byte) play_collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [172] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [173] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [184] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [185] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [174] phi() - [175] call play_lock_current + [186] phi() + [187] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [176] phi() - [177] call play_remove_lines + [188] phi() + [189] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [178] phi() - [179] call play_spawn_current - [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [190] phi() + [191] call play_spawn_current + [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 - [181] (byte) current_piece_char#21 ← phi( play_move_down::@20/(byte) current_piece_char#13 play_move_down::@6/(byte) current_piece_char#16 ) - [181] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) - [181] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) - [181] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) - [181] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#16 ) - [181] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) + [193] (byte) current_piece_char#21 ← phi( play_move_down::@20/(byte) current_piece_char#13 play_move_down::@6/(byte) current_piece_char#16 ) + [193] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) + [193] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) + [193] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) + [193] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#77 play_move_down::@6/(byte*) current_piece#16 ) + [193] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [182] (byte) current_piece_char#11 ← phi( play_move_down::@4/(byte) current_piece_char#16 play_move_down::@7/(byte) current_piece_char#21 ) - [182] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) - [182] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) - [182] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [182] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [182] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) - [182] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [182] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [183] return + [194] (byte) current_piece_char#11 ← phi( play_move_down::@4/(byte) current_piece_char#16 play_move_down::@7/(byte) current_piece_char#21 ) + [194] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) + [194] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) + [194] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [194] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [194] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) + [194] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [194] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [195] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [184] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 + [196] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 to:play_move_down::@7 -play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 - [185] phi() +play_spawn_current: scope:[play_spawn_current] from main::@25 play_move_down::@20 + [197] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [186] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) - [187] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + [198] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) + [199] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 - [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) to:play_spawn_current::@return play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 - [191] return + [203] return to:@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [192] phi() - [193] call sid_rnd - [194] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [204] phi() + [205] call sid_rnd + [206] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 to:play_spawn_current::@7 play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 - [195] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [207] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 - [197] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [209] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [198] return + [210] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [199] phi() + [211] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [200] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) - [200] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) - [200] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + [212] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [212] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [212] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [201] (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 ) - [201] (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 ) - [201] (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 ) - [201] (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 ) - [202] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [203] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [204] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + [213] (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 ) + [213] (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 ) + [213] (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 ) + [213] (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 ) + [214] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [215] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [216] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@17 play_remove_lines::@2 - [205] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [206] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [207] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [208] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [209] 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 + [217] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [218] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [219] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [220] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [221] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@9 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 - [210] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [222] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 to:play_remove_lines::@10 play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 - [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 - [212] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) - [213] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [214] 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 + [224] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [225] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [226] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 - [215] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) - [216] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [227] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [228] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 - [217] return + [229] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [218] *((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 - [219] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [230] *((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 + [231] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@5 play_remove_lines::@17: scope:[play_remove_lines] from play_remove_lines::@2 - [220] phi() + [232] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 - [222] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) - [222] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) - [222] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) - [223] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [224] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 + [234] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [234] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [234] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [236] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [225] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) - [225] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) - [225] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) - [226] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [237] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [237] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [237] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [238] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 + [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [229] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [230] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [231] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [241] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [242] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [243] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [232] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [233] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [234] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [244] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [245] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [246] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [235] return + [247] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [236] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [248] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 - [237] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [249] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [238] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [239] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [240] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [241] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [242] (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) + [250] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [251] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [252] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [253] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [254] (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 - [243] return + [255] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@27 - [244] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@29 + [256] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [245] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [246] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [257] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [258] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [247] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [247] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [248] return + [259] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [259] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [260] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [249] phi() + [261] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [250] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [250] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [250] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [251] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [252] call keyboard_matrix_read - [253] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [262] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [262] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [262] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [263] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [264] call keyboard_matrix_read + [265] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [254] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [266] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [256] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [257] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [257] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [258] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [259] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [269] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [269] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [270] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [271] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [260] phi() - [261] call keyboard_event_pressed - [262] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [272] phi() + [273] call keyboard_event_pressed + [274] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [263] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [264] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [275] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [276] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [265] phi() + [277] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [266] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [267] call keyboard_event_pressed - [268] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [278] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [279] call keyboard_event_pressed + [280] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [269] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [270] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [281] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [282] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [272] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [273] call keyboard_event_pressed - [274] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [284] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [285] call keyboard_event_pressed + [286] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [275] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [276] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [287] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [288] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [278] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [279] call keyboard_event_pressed - [280] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [290] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [291] call keyboard_event_pressed + [292] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [281] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [282] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [293] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [294] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [284] return + [296] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [285] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [285] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [285] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [288] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [297] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [297] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [297] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [300] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [289] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [301] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [290] (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) - [291] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [302] (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) + [303] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [292] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [293] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [304] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [305] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [294] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [295] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [296] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [297] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [306] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [307] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [308] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [309] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [300] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [301] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [312] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [313] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [302] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [314] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [315] (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 - [304] return + [316] return to:@return -play_init: scope:[play_init] from main::@22 - [305] phi() +play_init: scope:[play_init] from main::@24 + [317] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [306] (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 ) - [306] (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 ) - [306] (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 ) - [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [309] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [310] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [311] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [312] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [313] 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 + [318] (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 ) + [318] (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 ) + [318] (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 ) + [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [321] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [322] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [323] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [324] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [325] 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 - [314] *((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 + [326] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@2 - [315] return + [327] return + to:@return +sprites_irq_init: scope:[sprites_irq_init] from main::@23 + asm { sei } + [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + asm { ldaCIA1_INTERRUPT } + [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + asm { cli } + to:sprites_irq_init::@return +sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init + [339] return + to:@return +sprites_init: scope:[sprites_init] from main::@22 + [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [343] *((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 + [344] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [344] (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 ) + [345] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [349] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [350] 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 + [351] return to:@return render_init: scope:[render_init] from main::@21 - [316] phi() + [352] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [353] *((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 - [318] phi() + [354] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [355] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::toD0181 render_init::toD0181: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [320] phi() + [356] phi() to:render_init::@8 render_init::@8: scope:[render_init] from render_init::toD0181 - [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 - [322] *((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 - [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 - [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 - [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [327] call fill + [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 + [358] *((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 + [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 + [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 + [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [363] call fill to:render_init::@9 render_init::@9: scope:[render_init] from render_init::@8 - [328] phi() - [329] call render_screen_original + [364] phi() + [365] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@9 - [330] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@9/(const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [330] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 - [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [334] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [335] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [366] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@9/(const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [366] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 + [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [370] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [371] 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::@2 render_init::@2: scope:[render_init] from render_init::@1 render_init::@5 - [336] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) - [336] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 render_init::@5/(byte*) render_init::line#1 ) + [372] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 render_init::@5/(byte) render_init::l#1 ) + [372] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 render_init::@5/(byte*) render_init::line#1 ) to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 render_init::@3 - [337] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) - [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 - [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 - [340] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 - [341] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 + [373] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) + [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 + [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 + [376] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 + [377] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 to:render_init::@5 render_init::@5: scope:[render_init] from render_init::@3 - [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [343] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 - [344] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 + [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [379] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 + [380] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@5 - [345] return + [381] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@9 - [346] phi() + [382] phi() to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@7 - [347] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [347] (byte*) render_screen_original::orig#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::orig#1 ) - [347] (byte*) render_screen_original::screen#7 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN#0 render_screen_original::@7/(byte*) render_screen_original::screen#3 ) + [383] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [383] (byte*) render_screen_original::orig#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::orig#1 ) + [383] (byte*) render_screen_original::screen#7 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN#0 render_screen_original::@7/(byte*) render_screen_original::screen#3 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [348] (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 ) - [348] (byte*) render_screen_original::screen#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#7 render_screen_original::@2/(byte*) render_screen_original::screen#1 ) - [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 - [350] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 - [351] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [352] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [384] (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 ) + [384] (byte*) render_screen_original::screen#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#7 render_screen_original::@2/(byte*) render_screen_original::screen#1 ) + [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 + [386] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 + [387] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [388] 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 - [353] (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 ) - [353] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#1 render_screen_original::@3/(byte*) render_screen_original::screen#2 ) - [353] (byte*) render_screen_original::orig#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::orig#4 render_screen_original::@3/(byte*) render_screen_original::orig#1 ) - [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 - [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 - [356] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [357] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 - [358] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [359] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 + [389] (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 ) + [389] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#1 render_screen_original::@3/(byte*) render_screen_original::screen#2 ) + [389] (byte*) render_screen_original::orig#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::orig#4 render_screen_original::@3/(byte*) render_screen_original::orig#1 ) + [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 + [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 + [392] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [393] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 + [394] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [395] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) 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 - [360] (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 ) - [360] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#2 render_screen_original::@4/(byte*) render_screen_original::screen#3 ) - [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 - [362] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [363] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [364] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 + [396] (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 ) + [396] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#2 render_screen_original::@4/(byte*) render_screen_original::screen#3 ) + [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 + [398] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [399] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [400] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 to:render_screen_original::@7 render_screen_original::@7: scope:[render_screen_original] from render_screen_original::@4 - [365] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [366] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 + [401] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [402] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 - [367] return + [403] return to:@return fill: scope:[fill] from render_init::@8 - [368] phi() + [404] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [369] (byte*) fill::addr#2 ← phi( fill/(const byte*) COLS#0 fill::@1/(byte*) fill::addr#1 ) - [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 - [371] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [405] (byte*) fill::addr#2 ← phi( fill/(const byte*) COLS#0 fill::@1/(byte*) fill::addr#1 ) + [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 + [407] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [373] return + [409] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [374] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [410] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [411] *((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 - [376] return + [412] return to:@return +irq: scope:[irq] from + [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 + [414] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [415] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 + [416] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 + [417] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 + [418] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 + to:irq::@1 +irq::@1: scope:[irq] from irq irq::@1 + [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 + to:irq::@5 +irq::@5: scope:[irq] from irq::@1 + [420] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [421] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 + [422] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 + [423] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 + [424] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 + [425] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 + [426] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 + to:irq::@6 +irq::@6: scope:[irq] from irq::@5 + [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [431] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:irq::@3 +irq::@3: scope:[irq] from irq::@6 irq::@9 + [432] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) + [433] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 + [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [435] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 + to:irq::@8 +irq::@8: scope:[irq] from irq::@3 + [436] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:irq::@4 +irq::@4: scope:[irq] from irq::@3 irq::@8 + [437] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) + [438] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 + [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + to:irq::@return +irq::@return: scope:[irq] from irq::@4 + [441] return + to:@return +irq::@2: scope:[irq] from irq::@5 + [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:irq::toSpritePtr2 +irq::toSpritePtr2: scope:[irq] from irq::@2 + [445] phi() + to:irq::@9 +irq::@9: scope:[irq] from irq::toSpritePtr2 + [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 + to:irq::@3 VARIABLE REGISTER WEIGHTS @@ -6523,6 +7307,7 @@ VARIABLE REGISTER WEIGHTS (byte*) IRQ_ENABLE (byte) IRQ_LIGHTPEN (byte) IRQ_RASTER +(byte) IRQ_RASTER_FIRST (byte*) IRQ_STATUS (void()**) KERNEL_IRQ (byte) KEY_0 @@ -6683,20 +7468,20 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece#12 10.0 (byte*) current_piece#16 0.5588235294117647 (byte*) current_piece#20 6.0 -(byte*~) current_piece#70 4.0 -(byte*~) current_piece#71 4.0 (byte*~) current_piece#72 4.0 (byte*~) current_piece#73 4.0 (byte*~) current_piece#74 4.0 (byte*~) current_piece#75 4.0 +(byte*~) current_piece#76 4.0 +(byte*~) current_piece#77 4.0 (byte) current_piece_char (byte) current_piece_char#11 1.04 (byte) current_piece_char#13 0.7272727272727273 (byte) current_piece_char#16 19.96078431372549 (byte) current_piece_char#21 6.0 -(byte) current_piece_char#62 53.368421052631575 -(byte~) current_piece_char#75 4.0 -(byte~) current_piece_char#76 22.0 +(byte) current_piece_char#63 48.285714285714285 +(byte~) current_piece_char#83 4.0 +(byte~) current_piece_char#84 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#10 19.96078431372549 (byte*) current_piece_gfx#14 0.2962962962962963 @@ -6704,25 +7489,25 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece_gfx#17 0.6666666666666666 (byte*) current_piece_gfx#27 6.0 (byte*) current_piece_gfx#4 4.0 -(byte*) current_piece_gfx#53 53.368421052631575 -(byte*~) current_piece_gfx#87 2.0 -(byte*~) current_piece_gfx#88 11.0 +(byte*) current_piece_gfx#53 48.285714285714285 +(byte*~) current_piece_gfx#95 2.0 +(byte*~) current_piece_gfx#96 11.0 (byte) current_xpos +(byte~) current_xpos#104 7.333333333333333 (byte) current_xpos#11 2.313725490196078 (byte) current_xpos#16 0.72 (byte) current_xpos#20 0.871794871794872 (byte) current_xpos#3 4.0 (byte) current_xpos#34 4.0 -(byte) current_xpos#48 5.894736842105264 +(byte) current_xpos#48 5.333333333333333 (byte) current_xpos#5 4.0 -(byte~) current_xpos#96 7.333333333333333 (byte) current_ypos (byte) current_ypos#1 4.0 (byte) current_ypos#10 13.0 (byte) current_ypos#14 0.48484848484848475 (byte) current_ypos#22 0.5588235294117647 (byte) current_ypos#30 4.0 -(byte~) current_ypos#71 5.5 +(byte~) current_ypos#78 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr (byte*) fill::addr#1 16.5 @@ -6731,6 +7516,40 @@ VARIABLE REGISTER WEIGHTS (word) fill::size (byte*) fill::start (byte) fill::val +interrupt(HARDWARE_CLOBBER)(void()) irq() +(byte~) irq::$3 4.0 +(byte) irq::ptr +(byte) irq::ptr#0 3.0 +(byte) irq::ptr#1 2.6666666666666665 +(byte) irq::ptr#2 4.0 +(byte) irq::raster_next +(byte) irq::raster_next#0 2.6666666666666665 +(byte) irq::raster_next#1 4.0 +(byte) irq::raster_next#2 6.0 +(word~) irq::toSpritePtr2_$0 +(word~) irq::toSpritePtr2_$1 +(byte~) irq::toSpritePtr2_$2 +(byte) irq::toSpritePtr2_return +(byte*) irq::toSpritePtr2_sprite +(byte) irq::ypos +(byte) irq::ypos#0 2.5 +(byte) irq_cnt +(byte) irq_cnt#0 0.2857142857142857 +(byte) irq_cnt#1 4.0 +(byte) irq_cnt#13 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 0.25 +(byte) irq_raster_next#1 1.0 +(byte) irq_raster_next#12 6.0 +(byte) irq_raster_next#2 1.3333333333333333 +(byte) irq_sprite_ptr +(byte) irq_sprite_ptr#0 0.3333333333333333 +(byte) irq_sprite_ptr#1 20.0 +(byte) irq_sprite_ptr#2 20.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 1.0 +(byte) irq_sprite_ypos#1 20.0 +(byte) irq_sprite_ypos#2 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (byte) keyboard_event_get::return @@ -6804,9 +7623,9 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_modifiers#5 20.0 (byte[8]) keyboard_scan_values (void()) main() -(byte~) main::$10 22.0 -(byte~) main::$11 22.0 (byte~) main::$12 22.0 +(byte~) main::$13 22.0 +(byte~) main::$14 22.0 (byte) main::key_event (byte) main::key_event#0 4.0 (byte) main::render @@ -6972,13 +7791,14 @@ VARIABLE REGISTER WEIGHTS (byte) render_current::current_cell (byte) render_current::current_cell#0 1001.0 (byte) render_current::i -(byte) render_current::i#1 429.0 -(byte) render_current::i#2 1552.0 -(byte) render_current::i#4 75.75 +(byte) render_current::i#1 202.0 +(byte) render_current::i#10 429.0 +(byte) render_current::i#3 60.599999999999994 +(byte) render_current::i#4 1552.0 (byte) render_current::i#8 300.75 (byte) render_current::l (byte) render_current::l#1 151.5 -(byte) render_current::l#3 13.466666666666667 +(byte) render_current::l#4 11.882352941176471 (byte*) render_current::screen_line (byte*) render_current::screen_line#0 100.18181818181819 (byte) render_current::xpos @@ -6988,10 +7808,10 @@ VARIABLE REGISTER WEIGHTS (byte) render_current::ypos2 (byte) render_current::ypos2#0 4.0 (byte) render_current::ypos2#1 67.33333333333333 -(byte) render_current::ypos2#2 29.000000000000004 +(byte) render_current::ypos2#2 31.6875 (void()) render_init() -(byte~) render_init::$10 22.0 -(byte*~) render_init::$15 202.0 +(byte~) render_init::$11 22.0 +(byte*~) render_init::$18 202.0 (byte) render_init::c (byte) render_init::c#1 151.5 (byte) render_init::c#2 101.0 @@ -7028,7 +7848,7 @@ VARIABLE REGISTER WEIGHTS (byte*) render_init::vicSelectGfxBank1_toDd001_gfx (byte) render_init::vicSelectGfxBank1_toDd001_return (void()) render_playfield() -(byte~) render_playfield::$1 202.0 +(byte~) render_playfield::$2 202.0 (byte) render_playfield::c (byte) render_playfield::c#1 1501.5 (byte) render_playfield::c#2 500.5 @@ -7039,10 +7859,10 @@ VARIABLE REGISTER WEIGHTS (byte) render_playfield::l (byte) render_playfield::l#1 151.5 (byte) render_playfield::l#2 33.666666666666664 -(byte*) render_playfield::line -(byte*) render_playfield::line#0 202.0 -(byte*) render_playfield::line#1 500.5 -(byte*) render_playfield::line#2 1552.0 +(byte*) render_playfield::screen_line +(byte*) render_playfield::screen_line#0 202.0 +(byte*) render_playfield::screen_line#1 500.5 +(byte*) render_playfield::screen_line#2 1552.0 (void()) render_screen_original((byte*) render_screen_original::screen) (byte/signed word/word/dword/signed dword~) render_screen_original::$3 202.0 (byte) render_screen_original::SPACE @@ -7068,32 +7888,47 @@ VARIABLE REGISTER WEIGHTS (byte) render_screen_original::y (byte) render_screen_original::y#1 16.5 (byte) render_screen_original::y#6 1.2222222222222223 -(byte*[PLAYFIELD_LINES#0+3]) screen_lines +(byte*[PLAYFIELD_LINES#0]) screen_lines (byte()) sid_rnd() (byte) sid_rnd::return (byte) sid_rnd::return#0 34.33333333333333 (byte) sid_rnd::return#2 202.0 (void()) sid_rnd_init() +(void()) sprites_init() +(byte) sprites_init::s +(byte) sprites_init::s#1 16.5 +(byte) sprites_init::s#2 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 7.333333333333333 +(byte) sprites_init::xpos#2 8.25 +(void()) sprites_irq_init() +(word~) toSpritePtr1_$0 +(word~) toSpritePtr1_$1 +(byte~) toSpritePtr1_$2 +(byte) toSpritePtr1_return +(byte*) toSpritePtr1_sprite Initial phi equivalence classes [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -[ current_ypos#10 current_ypos#71 ] -[ current_xpos#48 current_xpos#96 ] -[ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] -[ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] +[ current_ypos#10 current_ypos#78 ] +[ current_xpos#48 current_xpos#104 ] +[ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] +[ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -[ render_current::l#3 render_current::l#1 ] -[ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -[ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +[ render_current::l#4 render_current::l#1 ] +[ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +[ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] [ render_current::c#2 render_current::c#1 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -[ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +[ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#1 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] @@ -7105,7 +7940,7 @@ Initial phi equivalence classes [ play_collision::return#14 ] [ play_move_leftright::return#1 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +[ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] @@ -7132,6 +7967,8 @@ Initial phi equivalence classes [ play_init::j#2 play_init::j#1 ] [ play_init::pli#2 play_init::pli#1 ] [ play_init::idx#2 play_init::idx#1 ] +[ sprites_init::s#2 sprites_init::s#1 ] +[ sprites_init::xpos#2 sprites_init::xpos#1 ] [ render_init::i#2 render_init::i#1 ] [ render_init::li#2 render_init::li#1 ] [ render_init::line#4 render_init::line#1 ] @@ -7142,23 +7979,29 @@ Initial phi equivalence classes [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] [ 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 ] [ fill::addr#2 fill::addr#1 ] +[ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +[ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +Added variable irq_raster_next#0 to zero page equivalence class [ irq_raster_next#0 ] +Added variable irq_sprite_ypos#0 to zero page equivalence class [ irq_sprite_ypos#0 ] +Added variable irq_sprite_ptr#0 to zero page equivalence class [ irq_sprite_ptr#0 ] +Added variable irq_cnt#0 to zero page equivalence class [ irq_cnt#0 ] Added variable keyboard_event_get::return#3 to zero page equivalence class [ keyboard_event_get::return#3 ] Added variable main::key_event#0 to zero page equivalence class [ main::key_event#0 ] Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] Added variable play_move_down::return#3 to zero page equivalence class [ play_move_down::return#3 ] -Added variable main::$10 to zero page equivalence class [ main::$10 ] +Added variable main::$12 to zero page equivalence class [ main::$12 ] Added variable main::render#1 to zero page equivalence class [ main::render#1 ] Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] Added variable play_move_leftright::return#4 to zero page equivalence class [ play_move_leftright::return#4 ] -Added variable main::$11 to zero page equivalence class [ main::$11 ] +Added variable main::$13 to zero page equivalence class [ main::$13 ] Added variable main::render#2 to zero page equivalence class [ main::render#2 ] Added variable play_move_rotate::key_event#0 to zero page equivalence class [ play_move_rotate::key_event#0 ] Added variable play_move_rotate::return#4 to zero page equivalence class [ play_move_rotate::return#4 ] -Added variable main::$12 to zero page equivalence class [ main::$12 ] +Added variable main::$14 to zero page equivalence class [ main::$14 ] Added variable main::render#3 to zero page equivalence class [ main::render#3 ] Added variable render_current::screen_line#0 to zero page equivalence class [ render_current::screen_line#0 ] Added variable render_current::current_cell#0 to zero page equivalence class [ render_current::current_cell#0 ] -Added variable render_playfield::$1 to zero page equivalence class [ render_playfield::$1 ] +Added variable render_playfield::$2 to zero page equivalence class [ render_playfield::$2 ] Added variable play_move_rotate::$2 to zero page equivalence class [ play_move_rotate::$2 ] Added variable play_collision::return#13 to zero page equivalence class [ play_collision::return#13 ] Added variable play_move_rotate::$6 to zero page equivalence class [ play_move_rotate::$6 ] @@ -7204,28 +8047,40 @@ Added variable keyboard_event_scan::event_type#0 to zero page equivalence class Added variable keyboard_event_scan::$11 to zero page equivalence class [ keyboard_event_scan::$11 ] Added variable keyboard_matrix_read::return#0 to zero page equivalence class [ keyboard_matrix_read::return#0 ] Added variable play_init::$1 to zero page equivalence class [ play_init::$1 ] -Added variable render_init::$10 to zero page equivalence class [ render_init::$10 ] -Added variable render_init::$15 to zero page equivalence class [ render_init::$15 ] +Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init::s2#0 ] +Added variable render_init::$11 to zero page equivalence class [ render_init::$11 ] +Added variable render_init::$18 to zero page equivalence class [ render_init::$18 ] Added variable render_screen_original::$3 to zero page equivalence class [ render_screen_original::$3 ] +Added variable irq::ypos#0 to zero page equivalence class [ irq::ypos#0 ] +Added variable irq::ptr#0 to zero page equivalence class [ irq::ptr#0 ] +Added variable irq::ptr#1 to zero page equivalence class [ irq::ptr#1 ] +Added variable irq::ptr#2 to zero page equivalence class [ irq::ptr#2 ] +Added variable irq_cnt#1 to zero page equivalence class [ irq_cnt#1 ] +Added variable irq_sprite_ypos#2 to zero page equivalence class [ irq_sprite_ypos#2 ] +Added variable irq_sprite_ptr#2 to zero page equivalence class [ irq_sprite_ptr#2 ] +Added variable irq::$3 to zero page equivalence class [ irq::$3 ] +Added variable irq_cnt#13 to zero page equivalence class [ irq_cnt#13 ] +Added variable irq_sprite_ypos#1 to zero page equivalence class [ irq_sprite_ypos#1 ] +Added variable irq_sprite_ptr#1 to zero page equivalence class [ irq_sprite_ptr#1 ] Complete equivalence classes [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -[ current_ypos#10 current_ypos#71 ] -[ current_xpos#48 current_xpos#96 ] -[ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] -[ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] +[ current_ypos#10 current_ypos#78 ] +[ current_xpos#48 current_xpos#104 ] +[ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] +[ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -[ render_current::l#3 render_current::l#1 ] -[ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -[ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +[ render_current::l#4 render_current::l#1 ] +[ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +[ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] [ render_current::c#2 render_current::c#1 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -[ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +[ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#1 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] @@ -7237,7 +8092,7 @@ Complete equivalence classes [ play_collision::return#14 ] [ play_move_leftright::return#1 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +[ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] @@ -7264,6 +8119,8 @@ Complete equivalence classes [ play_init::j#2 play_init::j#1 ] [ play_init::pli#2 play_init::pli#1 ] [ play_init::idx#2 play_init::idx#1 ] +[ sprites_init::s#2 sprites_init::s#1 ] +[ sprites_init::xpos#2 sprites_init::xpos#1 ] [ render_init::i#2 render_init::i#1 ] [ render_init::li#2 render_init::li#1 ] [ render_init::line#4 render_init::line#1 ] @@ -7274,23 +8131,29 @@ Complete equivalence classes [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] [ 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 ] [ fill::addr#2 fill::addr#1 ] +[ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +[ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +[ irq_raster_next#0 ] +[ irq_sprite_ypos#0 ] +[ irq_sprite_ptr#0 ] +[ irq_cnt#0 ] [ keyboard_event_get::return#3 ] [ main::key_event#0 ] [ play_move_down::key_event#0 ] [ play_move_down::return#3 ] -[ main::$10 ] +[ main::$12 ] [ main::render#1 ] [ play_move_leftright::key_event#0 ] [ play_move_leftright::return#4 ] -[ main::$11 ] +[ main::$13 ] [ main::render#2 ] [ play_move_rotate::key_event#0 ] [ play_move_rotate::return#4 ] -[ main::$12 ] +[ main::$14 ] [ main::render#3 ] [ render_current::screen_line#0 ] [ render_current::current_cell#0 ] -[ render_playfield::$1 ] +[ render_playfield::$2 ] [ play_move_rotate::$2 ] [ play_collision::return#13 ] [ play_move_rotate::$6 ] @@ -7336,27 +8199,39 @@ Complete equivalence classes [ keyboard_event_scan::$11 ] [ keyboard_matrix_read::return#0 ] [ play_init::$1 ] -[ render_init::$10 ] -[ render_init::$15 ] +[ sprites_init::s2#0 ] +[ render_init::$11 ] +[ render_init::$18 ] [ render_screen_original::$3 ] +[ irq::ypos#0 ] +[ irq::ptr#0 ] +[ irq::ptr#1 ] +[ irq::ptr#2 ] +[ irq_cnt#1 ] +[ irq_sprite_ypos#2 ] +[ irq_sprite_ptr#2 ] +[ irq::$3 ] +[ irq_cnt#13 ] +[ irq_sprite_ypos#1 ] +[ irq_sprite_ptr#1 ] Allocated zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Allocated zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Allocated zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] -Allocated zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] -Allocated zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] -Allocated zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] +Allocated zp ZP_BYTE:4 [ current_ypos#10 current_ypos#78 ] +Allocated zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] +Allocated zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] +Allocated zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] Allocated zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Allocated zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Allocated zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Allocated zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Allocated zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] +Allocated zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +Allocated zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] Allocated zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] Allocated zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Allocated zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Allocated zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +Allocated zp ZP_WORD:16 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] Allocated zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] Allocated zp ZP_BYTE:19 [ play_move_rotate::return#1 ] Allocated zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Allocated zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +Allocated zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] Allocated zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] Allocated zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] Allocated zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] @@ -7368,7 +8243,7 @@ Allocated zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] Allocated zp ZP_BYTE:31 [ play_collision::return#14 ] Allocated zp ZP_BYTE:32 [ play_move_leftright::return#1 ] Allocated zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Allocated zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +Allocated zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] Allocated zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Allocated zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] Allocated zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] @@ -7395,81 +8270,101 @@ Allocated zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboa Allocated zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] Allocated zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] Allocated zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] -Allocated zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] -Allocated zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] -Allocated zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] -Allocated zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] -Allocated zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] -Allocated zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Allocated zp ZP_WORD:72 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] -Allocated zp ZP_WORD:74 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] -Allocated zp ZP_BYTE:76 [ 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_WORD:77 [ fill::addr#2 fill::addr#1 ] -Allocated zp ZP_BYTE:79 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:80 [ main::key_event#0 ] -Allocated zp ZP_BYTE:81 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:82 [ play_move_down::return#3 ] -Allocated zp ZP_BYTE:83 [ main::$10 ] -Allocated zp ZP_BYTE:84 [ main::render#1 ] -Allocated zp ZP_BYTE:85 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:86 [ play_move_leftright::return#4 ] -Allocated zp ZP_BYTE:87 [ main::$11 ] -Allocated zp ZP_BYTE:88 [ main::render#2 ] -Allocated zp ZP_BYTE:89 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:90 [ play_move_rotate::return#4 ] +Allocated zp ZP_BYTE:64 [ sprites_init::s#2 sprites_init::s#1 ] +Allocated zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Allocated zp ZP_BYTE:66 [ render_init::i#2 render_init::i#1 ] +Allocated zp ZP_WORD:67 [ render_init::li#2 render_init::li#1 ] +Allocated zp ZP_WORD:69 [ render_init::line#4 render_init::line#1 ] +Allocated zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] +Allocated zp ZP_BYTE:72 [ render_init::c#2 render_init::c#1 ] +Allocated zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Allocated zp ZP_WORD:74 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] +Allocated zp ZP_WORD:76 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] +Allocated zp ZP_BYTE:78 [ 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_WORD:79 [ fill::addr#2 fill::addr#1 ] +Allocated zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +Allocated zp ZP_BYTE:82 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +Allocated zp ZP_BYTE:83 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] +Allocated zp ZP_BYTE:86 [ irq_cnt#0 ] +Allocated zp ZP_BYTE:87 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:88 [ main::key_event#0 ] +Allocated zp ZP_BYTE:89 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:90 [ play_move_down::return#3 ] Allocated zp ZP_BYTE:91 [ main::$12 ] -Allocated zp ZP_BYTE:92 [ main::render#3 ] -Allocated zp ZP_WORD:93 [ render_current::screen_line#0 ] -Allocated zp ZP_BYTE:95 [ render_current::current_cell#0 ] -Allocated zp ZP_BYTE:96 [ render_playfield::$1 ] -Allocated zp ZP_BYTE:97 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:98 [ play_collision::return#13 ] -Allocated zp ZP_BYTE:99 [ play_move_rotate::$6 ] -Allocated zp ZP_BYTE:100 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:101 [ play_collision::piece_gfx#0 ] -Allocated zp ZP_WORD:103 [ play_collision::playfield_line#0 ] -Allocated zp ZP_BYTE:105 [ play_collision::i#1 ] -Allocated zp ZP_BYTE:106 [ play_collision::$7 ] -Allocated zp ZP_BYTE:107 [ play_collision::return#12 ] -Allocated zp ZP_BYTE:108 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:109 [ play_collision::return#1 ] -Allocated zp ZP_BYTE:110 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:111 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:112 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:113 [ play_collision::return#0 ] -Allocated zp ZP_BYTE:114 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:115 [ play_spawn_current::$3 ] -Allocated zp ZP_BYTE:116 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:117 [ play_spawn_current::$1 ] -Allocated zp ZP_BYTE:118 [ sid_rnd::return#0 ] -Allocated zp ZP_BYTE:119 [ play_remove_lines::c#0 ] -Allocated zp ZP_WORD:120 [ play_lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:122 [ play_lock_current::i#1 ] -Allocated zp ZP_BYTE:123 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:125 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:126 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:127 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:128 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:130 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:131 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:132 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:133 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:134 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:135 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:136 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:137 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:138 [ keyboard_modifiers#5 ] -Allocated zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:144 [ play_init::$1 ] -Allocated zp ZP_BYTE:145 [ render_init::$10 ] -Allocated zp ZP_WORD:146 [ render_init::$15 ] -Allocated zp ZP_BYTE:148 [ render_screen_original::$3 ] +Allocated zp ZP_BYTE:92 [ main::render#1 ] +Allocated zp ZP_BYTE:93 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:94 [ play_move_leftright::return#4 ] +Allocated zp ZP_BYTE:95 [ main::$13 ] +Allocated zp ZP_BYTE:96 [ main::render#2 ] +Allocated zp ZP_BYTE:97 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:98 [ play_move_rotate::return#4 ] +Allocated zp ZP_BYTE:99 [ main::$14 ] +Allocated zp ZP_BYTE:100 [ main::render#3 ] +Allocated zp ZP_WORD:101 [ render_current::screen_line#0 ] +Allocated zp ZP_BYTE:103 [ render_current::current_cell#0 ] +Allocated zp ZP_BYTE:104 [ render_playfield::$2 ] +Allocated zp ZP_BYTE:105 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:106 [ play_collision::return#13 ] +Allocated zp ZP_BYTE:107 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:108 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:109 [ play_collision::piece_gfx#0 ] +Allocated zp ZP_WORD:111 [ play_collision::playfield_line#0 ] +Allocated zp ZP_BYTE:113 [ play_collision::i#1 ] +Allocated zp ZP_BYTE:114 [ play_collision::$7 ] +Allocated zp ZP_BYTE:115 [ play_collision::return#12 ] +Allocated zp ZP_BYTE:116 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:117 [ play_collision::return#1 ] +Allocated zp ZP_BYTE:118 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:120 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:121 [ play_collision::return#0 ] +Allocated zp ZP_BYTE:122 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:123 [ play_spawn_current::$3 ] +Allocated zp ZP_BYTE:124 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:125 [ play_spawn_current::$1 ] +Allocated zp ZP_BYTE:126 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:127 [ play_remove_lines::c#0 ] +Allocated zp ZP_WORD:128 [ play_lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:130 [ play_lock_current::i#1 ] +Allocated zp ZP_BYTE:131 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:133 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:134 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:135 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:136 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:138 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:139 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:140 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:141 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:142 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:143 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:144 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:145 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:146 [ keyboard_modifiers#5 ] +Allocated zp ZP_BYTE:147 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:148 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:149 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:150 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:151 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:152 [ play_init::$1 ] +Allocated zp ZP_BYTE:153 [ sprites_init::s2#0 ] +Allocated zp ZP_BYTE:154 [ render_init::$11 ] +Allocated zp ZP_WORD:155 [ render_init::$18 ] +Allocated zp ZP_BYTE:157 [ render_screen_original::$3 ] +Allocated zp ZP_BYTE:158 [ irq::ypos#0 ] +Allocated zp ZP_BYTE:159 [ irq::ptr#0 ] +Allocated zp ZP_BYTE:160 [ irq::ptr#1 ] +Allocated zp ZP_BYTE:161 [ irq::ptr#2 ] +Allocated zp ZP_BYTE:162 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] +Allocated zp ZP_BYTE:165 [ irq::$3 ] +Allocated zp ZP_BYTE:166 [ irq_cnt#13 ] +Allocated zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] INITIAL ASM //SEG0 Basic Upstart @@ -7477,22 +8372,41 @@ INITIAL ASM :BasicUpstart(bbegin) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f .label CIA2_PORT_A = $dd00 .label CIA2_PORT_A_DDR = $dd02 + .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const WHITE = 1 .const CYAN = 3 @@ -7517,10 +8431,12 @@ INITIAL ASM .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .label PLAYFIELD_SCREEN_ORIGINAL = $2c00 + .const IRQ_RASTER_FIRST = $31 .const current_movedown_slow = $32 .const current_movedown_fast = 5 .const COLLISION_NONE = 0 @@ -7528,9 +8444,22 @@ INITIAL ASM .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $3b .label keyboard_modifiers = $38 - .label keyboard_modifiers_5 = $8a + .label keyboard_modifiers_5 = $92 + .label irq_raster_next = $53 + .label irq_sprite_ypos = $54 + .label irq_sprite_ptr = $55 + .label irq_cnt = $56 + .label irq_cnt_1 = $a2 + .label irq_raster_next_1 = $51 + .label irq_sprite_ypos_1 = $a7 + .label irq_sprite_ptr_1 = $a8 + .label irq_raster_next_2 = $51 + .label irq_sprite_ypos_2 = $a3 + .label irq_sprite_ptr_2 = $a4 .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $27 @@ -7541,18 +8470,20 @@ INITIAL ASM .label current_piece_char = $28 .label current_piece_12 = $15 .label current_xpos_48 = 5 + .label irq_raster_next_12 = $51 .label current_piece_gfx_53 = 6 - .label current_piece_char_62 = 8 - .label current_ypos_71 = 4 - .label current_xpos_96 = 5 - .label current_piece_gfx_87 = 6 - .label current_piece_gfx_88 = 6 - .label current_piece_char_75 = 8 - .label current_piece_char_76 = 8 - .label current_piece_71 = $15 - .label current_piece_72 = $15 + .label irq_cnt_13 = $a6 + .label current_piece_char_63 = 8 + .label current_ypos_78 = 4 + .label current_xpos_104 = 5 + .label current_piece_gfx_95 = 6 + .label current_piece_gfx_96 = 6 + .label current_piece_char_83 = 8 + .label current_piece_char_84 = 8 .label current_piece_73 = $15 .label current_piece_74 = $15 + .label current_piece_75 = $15 + .label current_piece_76 = $15 //SEG2 @begin bbegin: jmp b14 @@ -7560,567 +8491,625 @@ bbegin: b14: //SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "nes-screen.imap" }} //SEG5 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} -//SEG6 [3] phi from @14 to @27 [phi:@14->@27] -b27_from_b14: - jmp b27 -//SEG7 @27 -b27: -//SEG8 [4] call main -//SEG9 [6] phi from @27 to main [phi:@27->main] -main_from_b27: + jmp b18 +//SEG6 @18 +b18: +//SEG7 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} + jmp b19 +//SEG8 @19 +b19: +//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG10 [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos +//SEG11 [6] phi from @19 to toSpritePtr1 [phi:@19->toSpritePtr1] +toSpritePtr1_from_b19: + jmp toSpritePtr1 +//SEG12 toSpritePtr1 +toSpritePtr1: + jmp b31 +//SEG13 @31 +b31: +//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta irq_sprite_ptr +//SEG15 [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG16 [9] phi from @31 to @30 [phi:@31->@30] +b30_from_b31: + jmp b30 +//SEG17 @30 +b30: +//SEG18 [10] call main +//SEG19 [12] phi from @30 to main [phi:@30->main] +main_from_b30: jsr main -//SEG10 [5] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG20 [11] phi from @30 to @end [phi:@30->@end] +bend_from_b30: jmp bend -//SEG11 @end +//SEG21 @end bend: -//SEG12 main +//SEG22 main main: { - .label _10 = $53 - .label _11 = $57 .label _12 = $5b - .label key_event = $50 - .label render = $54 - .label render_2 = $58 - .label render_3 = $5c - //SEG13 [7] call sid_rnd_init + .label _13 = $5f + .label _14 = $63 + .label key_event = $58 + .label render = $5c + .label render_2 = $60 + .label render_3 = $64 + //SEG23 [13] call sid_rnd_init jsr sid_rnd_init jmp b21 - //SEG14 main::@21 + //SEG24 main::@21 b21: - //SEG15 asm { sei } + //SEG25 asm { sei } sei - //SEG16 [9] call render_init - //SEG17 [316] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG26 [15] call render_init + //SEG27 [352] phi from main::@21 to render_init [phi:main::@21->render_init] render_init_from_b21: jsr render_init - //SEG18 [10] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG28 [16] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG19 main::@22 + //SEG29 main::@22 b22: - //SEG20 [11] call play_init - //SEG21 [305] phi from main::@22 to play_init [phi:main::@22->play_init] - play_init_from_b22: - jsr play_init - //SEG22 [12] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG30 [17] call sprites_init + jsr sprites_init + //SEG31 [18] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG23 main::@23 + //SEG32 main::@23 b23: - //SEG24 [13] call play_spawn_current - //SEG25 [185] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] - play_spawn_current_from_b23: - jsr play_spawn_current - //SEG26 [14] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG33 [19] call sprites_irq_init + jsr sprites_irq_init + //SEG34 [20] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG27 main::@24 + //SEG35 main::@24 b24: - //SEG28 [15] call render_playfield - //SEG29 [73] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] - render_playfield_from_b24: - jsr render_playfield + //SEG36 [21] call play_init + //SEG37 [317] phi from main::@24 to play_init [phi:main::@24->play_init] + play_init_from_b24: + jsr play_init + //SEG38 [22] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + b25_from_b24: jmp b25 - //SEG30 main::@25 + //SEG39 main::@25 b25: - //SEG31 [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG40 [23] call play_spawn_current + //SEG41 [197] phi from main::@25 to play_spawn_current [phi:main::@25->play_spawn_current] + play_spawn_current_from_b25: + jsr play_spawn_current + //SEG42 [24] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + b26_from_b25: + jmp b26 + //SEG43 main::@26 + b26: + //SEG44 [25] call render_playfield + //SEG45 [85] phi from main::@26 to render_playfield [phi:main::@26->render_playfield] + render_playfield_from_b26: + jsr render_playfield + jmp b27 + //SEG46 main::@27 + b27: + //SEG47 [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_95 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG32 [17] (byte~) current_piece_char#75 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 + sta current_piece_gfx_95+1 + //SEG48 [27] (byte~) current_piece_char#83 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_75 - //SEG33 [18] call render_current - //SEG34 [53] phi from main::@25 to render_current [phi:main::@25->render_current] - render_current_from_b25: - //SEG35 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#75 [phi:main::@25->render_current#0] -- register_copy - //SEG36 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG37 [53] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + sta current_piece_char_83 + //SEG49 [28] call render_current + //SEG50 [63] phi from main::@27 to render_current [phi:main::@27->render_current] + render_current_from_b27: + //SEG51 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#83 [phi:main::@27->render_current#0] -- register_copy + //SEG52 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#95 [phi:main::@27->render_current#1] -- register_copy + //SEG53 [63] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_48 - //SEG38 [53] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuz1=vbuc1 + //SEG54 [63] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->render_current#3] -- vbuz1=vbuc1 lda #0 sta current_ypos_10 jsr render_current - //SEG39 [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG55 [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG40 [20] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - b1_from_b25: - //SEG41 [20] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG56 [30] phi from main::@27 to main::@1 [phi:main::@27->main::@1] + b1_from_b27: + //SEG57 [30] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG42 [20] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG58 [30] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG43 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@25->main::@1#2] -- register_copy - //SEG44 [20] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG59 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@27->main::@1#2] -- register_copy + //SEG60 [30] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG45 [20] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG61 [30] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG46 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy - //SEG47 [20] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG62 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@27->main::@1#5] -- register_copy + //SEG63 [30] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG48 [20] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy + //SEG64 [30] phi (byte*) current_piece#16 = (byte*~) current_piece#72 [phi:main::@27->main::@1#7] -- register_copy jmp b1 - //SEG49 main::@1 + //SEG65 main::@1 b1: jmp b4 - //SEG50 main::@4 + //SEG66 main::@4 b4: - //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG67 [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG52 main::@7 + //SEG68 main::@7 b7: - //SEG53 [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG69 [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG54 main::@9 + //SEG70 main::@9 b9: - //SEG55 [23] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG71 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [24] call keyboard_event_scan - //SEG57 [249] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG72 [34] call keyboard_event_scan + //SEG73 [261] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG58 [25] phi from main::@9 to main::@27 [phi:main::@9->main::@27] - b27_from_b9: - jmp b27 - //SEG59 main::@27 - b27: - //SEG60 [26] call keyboard_event_get + //SEG74 [35] phi from main::@9 to main::@29 [phi:main::@9->main::@29] + b29_from_b9: + jmp b29 + //SEG75 main::@29 + b29: + //SEG76 [36] call keyboard_event_get jsr keyboard_event_get - //SEG61 [27] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG77 [37] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_3 - jmp b28 - //SEG62 main::@28 - b28: - //SEG63 [28] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + jmp b30 + //SEG78 main::@30 + b30: + //SEG79 [38] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG64 [29] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG80 [39] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG65 [30] call play_move_down + //SEG81 [40] call play_move_down jsr play_move_down - //SEG66 [31] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuz1=vbuz2 + //SEG82 [41] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuz1=vbuz2 lda play_move_down.return sta play_move_down.return_3 - jmp b29 - //SEG67 main::@29 - b29: - //SEG68 [32] (byte~) main::$10 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + jmp b31 + //SEG83 main::@31 + b31: + //SEG84 [42] (byte~) main::$12 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 lda play_move_down.return_3 - sta _10 - //SEG69 [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuz2 + sta _12 + //SEG85 [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuz2 lda #0 clc - adc _10 + adc _12 sta render - //SEG70 [34] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG86 [44] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG71 [35] call play_move_leftright + //SEG87 [45] call play_move_leftright jsr play_move_leftright - //SEG72 [36] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 -- vbuz1=vbuz2 + //SEG88 [46] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 -- vbuz1=vbuz2 lda play_move_leftright.return sta play_move_leftright.return_4 - jmp b30 - //SEG73 main::@30 - b30: - //SEG74 [37] (byte~) main::$11 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 + jmp b32 + //SEG89 main::@32 + b32: + //SEG90 [47] (byte~) main::$13 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 lda play_move_leftright.return_4 - sta _11 - //SEG75 [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz2_plus_vbuz3 + sta _13 + //SEG91 [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz2_plus_vbuz3 lda render clc - adc _11 + adc _13 sta render_2 - //SEG76 [39] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG92 [49] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG77 [40] call play_move_rotate + //SEG93 [50] call play_move_rotate jsr play_move_rotate - //SEG78 [41] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 -- vbuz1=vbuz2 + //SEG94 [51] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 -- vbuz1=vbuz2 lda play_move_rotate.return sta play_move_rotate.return_4 - jmp b31 - //SEG79 main::@31 - b31: - //SEG80 [42] (byte~) main::$12 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 + jmp b33 + //SEG95 main::@33 + b33: + //SEG96 [52] (byte~) main::$14 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 lda play_move_rotate.return_4 - sta _12 - //SEG81 [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuz1=vbuz2_plus_vbuz3 + sta _14 + //SEG97 [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc - adc _12 + adc _14 sta render_3 - //SEG82 [44] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 + //SEG98 [54] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 lda render_3 cmp #0 beq b10 - //SEG83 [45] phi from main::@31 to main::@19 [phi:main::@31->main::@19] - b19_from_b31: + //SEG99 [55] phi from main::@33 to main::@19 [phi:main::@33->main::@19] + b19_from_b33: jmp b19 - //SEG84 main::@19 + //SEG100 main::@19 b19: - //SEG85 [46] call render_playfield - //SEG86 [73] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG101 [56] call render_playfield + //SEG102 [85] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b32 - //SEG87 main::@32 - b32: - //SEG88 [47] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuz1=vbuz2 + jmp b34 + //SEG103 main::@34 + b34: + //SEG104 [57] (byte~) current_ypos#78 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_71 - //SEG89 [48] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + sta current_ypos_78 + //SEG105 [58] (byte~) current_xpos#104 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_96 - //SEG90 [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 + sta current_xpos_104 + //SEG106 [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_88 + sta current_piece_gfx_96 lda current_piece_gfx+1 - sta current_piece_gfx_88+1 - //SEG91 [50] (byte~) current_piece_char#76 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 + sta current_piece_gfx_96+1 + //SEG107 [60] (byte~) current_piece_char#84 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_76 - //SEG92 [51] call render_current - //SEG93 [53] phi from main::@32 to render_current [phi:main::@32->render_current] - render_current_from_b32: - //SEG94 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#76 [phi:main::@32->render_current#0] -- register_copy - //SEG95 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG96 [53] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG97 [53] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + sta current_piece_char_84 + //SEG108 [61] call render_current + //SEG109 [63] phi from main::@34 to render_current [phi:main::@34->render_current] + render_current_from_b34: + //SEG110 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#84 [phi:main::@34->render_current#0] -- register_copy + //SEG111 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#96 [phi:main::@34->render_current#1] -- register_copy + //SEG112 [63] phi (byte) current_xpos#48 = (byte~) current_xpos#104 [phi:main::@34->render_current#2] -- register_copy + //SEG113 [63] phi (byte) current_ypos#10 = (byte~) current_ypos#78 [phi:main::@34->render_current#3] -- register_copy jsr render_current jmp b10 - //SEG98 main::@10 + //SEG114 main::@10 b10: - //SEG99 [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG115 [62] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG100 [20] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG116 [30] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG101 [20] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy - //SEG102 [20] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG103 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy - //SEG104 [20] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy - //SEG105 [20] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy - //SEG106 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy - //SEG107 [20] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy - //SEG108 [20] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy + //SEG117 [30] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy + //SEG118 [30] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG119 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG120 [30] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG121 [30] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG122 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG123 [30] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG124 [30] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG109 render_current +//SEG125 render_current render_current: { .label ypos2 = 9 - .label l = $a - .label screen_line = $5d + .label screen_line = $65 .label xpos = $c - .label current_cell = $5f .label i = $b + .label l = $a + .label current_cell = $67 .label c = $d - //SEG110 [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG126 [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos_10 asl sta ypos2 - //SEG111 [55] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG127 [65] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG112 [55] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i - //SEG113 [55] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG128 [65] phi (byte) render_current::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG114 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG129 [65] phi (byte) render_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG130 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG115 [55] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - b1_from_b2: - //SEG116 [55] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG117 [55] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG118 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG131 [65] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + b1_from_b3: + //SEG132 [65] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG133 [65] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG134 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy jmp b1 - //SEG119 render_current::@1 + //SEG135 render_current::@1 b1: - //SEG120 [56] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG136 [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 -- vbuz1_gt_vbuc1_then_la1 + lda ypos2 + cmp #2 + beq !+ + bcs b13 + !: + jmp b7 + //SEG137 render_current::@7 + b7: + //SEG138 [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + lda #4 + clc + adc i + sta i + //SEG139 [68] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + b3_from_b5: + b3_from_b7: + //SEG140 [68] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + jmp b3 + //SEG141 render_current::@3 + b3: + //SEG142 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG143 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + inc l + //SEG144 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + lda l + cmp #4 + bne b1_from_b3 + jmp breturn + //SEG145 render_current::@return + breturn: + //SEG146 [72] return + rts + //SEG147 render_current::@13 + b13: + //SEG148 [73] if((byte) render_current::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES - bcs b2_from_b1 - jmp b6 - //SEG121 render_current::@6 - b6: - //SEG122 [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + bcc b2 + jmp b7 + //SEG149 render_current::@2 + b2: + //SEG150 [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG123 [58] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + //SEG151 [75] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 lda current_xpos_48 sta xpos - //SEG124 [59] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - b3_from_b6: - //SEG125 [59] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 + //SEG152 [76] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + b4_from_b2: + //SEG153 [76] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@2->render_current::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG126 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG127 [59] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy - jmp b3 - //SEG128 [59] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - b3_from_b4: - //SEG129 [59] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG130 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG131 [59] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy - jmp b3 - //SEG132 render_current::@3 - b3: - //SEG133 [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG154 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG155 [76] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + jmp b4 + //SEG156 [76] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + b4_from_b5: + //SEG157 [76] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG158 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG159 [76] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + jmp b4 + //SEG160 render_current::@4 + b4: + //SEG161 [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx_53),y sta current_cell - //SEG134 [61] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG162 [78] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG135 [62] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 + //SEG163 [79] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 - beq b4 - jmp b7 - //SEG136 render_current::@7 - b7: - //SEG137 [63] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + beq b5 + jmp b9 + //SEG164 render_current::@9 + b9: + //SEG165 [80] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS - bcs b4 - jmp b8 - //SEG138 render_current::@8 - b8: - //SEG139 [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_char_62 + bcs b5 + jmp b10 + //SEG166 render_current::@10 + b10: + //SEG167 [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_63 ldy xpos sta (screen_line),y - jmp b4 - //SEG140 render_current::@4 - b4: - //SEG141 [65] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + jmp b5 + //SEG168 render_current::@5 + b5: + //SEG169 [82] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG142 [66] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG170 [83] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG143 [67] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG171 [84] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 - bne b3_from_b4 - //SEG144 [68] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - b2_from_b1: - b2_from_b4: - //SEG145 [68] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - jmp b2 - //SEG146 render_current::@2 - b2: - //SEG147 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG148 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 - inc l - //SEG149 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 - lda l - cmp #4 - bne b1_from_b2 - jmp breturn - //SEG150 render_current::@return - breturn: - //SEG151 [72] return - rts + bne b4_from_b5 + jmp b3_from_b5 } -//SEG152 render_playfield +//SEG172 render_playfield render_playfield: { - .label _1 = $60 - .label line = $10 + .label _2 = $68 + .label screen_line = $10 .label i = $f .label c = $12 .label l = $e - //SEG153 [74] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG173 [86] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG154 [74] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG174 [86] 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 - //SEG155 [74] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 - lda #0 + //SEG175 [86] 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 - //SEG156 [74] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG176 [86] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG157 [74] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG158 [74] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG177 [86] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG178 [86] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG159 render_playfield::@1 + //SEG179 render_playfield::@1 b1: - //SEG160 [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG180 [87] (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 _1 - //SEG161 [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _1 + sta _2 + //SEG181 [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _2 lda screen_lines,y - sta line + sta screen_line lda screen_lines+1,y - sta line+1 - //SEG162 [77] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + sta screen_line+1 + //SEG182 [89] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG163 [77] 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 + //SEG183 [89] 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 - //SEG164 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG165 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG184 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG185 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG166 [77] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG186 [89] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG167 [77] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG168 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG169 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG187 [89] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG188 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG189 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG170 render_playfield::@2 + //SEG190 render_playfield::@2 b2: - //SEG171 [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG191 [90] *((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 (line),y - //SEG172 [79] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 - inc line + sta (screen_line),y + //SEG192 [91] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + inc screen_line bne !+ - inc line+1 + inc screen_line+1 !: - //SEG173 [80] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG193 [92] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG174 [81] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG194 [93] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG175 [82] 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 + //SEG195 [94] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG176 render_playfield::@3 + //SEG196 render_playfield::@3 b3: - //SEG177 [83] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG197 [95] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG178 [84] 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 + //SEG198 [96] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG179 render_playfield::@return + //SEG199 render_playfield::@return breturn: - //SEG180 [85] return + //SEG200 [97] return rts } -//SEG181 play_move_rotate +//SEG201 play_move_rotate play_move_rotate: { - .label _2 = $61 - .label _4 = $64 - .label _6 = $63 + .label _2 = $69 + .label _4 = $6c + .label _6 = $6b .label orientation = $14 .label return = $13 - .label key_event = $59 - .label return_4 = $5a - //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + .label key_event = $61 + .label return_4 = $62 + //SEG202 [98] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_Z beq b1 jmp b6 - //SEG183 play_move_rotate::@6 + //SEG203 play_move_rotate::@6 b6: - //SEG184 [87] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG204 [99] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_X beq b2 - //SEG185 [88] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG205 [100] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG186 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG187 [88] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG188 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG206 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG207 [100] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG208 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 sta return jmp breturn - //SEG189 play_move_rotate::@return + //SEG209 play_move_rotate::@return breturn: - //SEG190 [89] return + //SEG210 [101] return rts - //SEG191 play_move_rotate::@2 + //SEG211 play_move_rotate::@2 b2: - //SEG192 [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + //SEG212 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_orientation sta _2 - //SEG193 [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG213 [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _2 sta orientation - //SEG194 [92] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG214 [104] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG195 [92] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG215 [104] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG196 play_move_rotate::@4 + //SEG216 play_move_rotate::@4 b4: - //SEG197 [93] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + //SEG217 [105] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG198 [94] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuz1=vbuz2 + //SEG218 [106] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG199 [95] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG219 [107] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG200 [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG220 [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_76 lda current_piece+1 - sta current_piece_74+1 - //SEG201 [97] call play_collision - //SEG202 [105] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_76+1 + //SEG221 [109] call play_collision + //SEG222 [117] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG203 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG204 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG205 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG206 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG223 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG224 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG225 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG226 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG207 [98] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG227 [110] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_13 jmp b14 - //SEG208 play_move_rotate::@14 + //SEG228 play_move_rotate::@14 b14: - //SEG209 [99] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + //SEG229 [111] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 lda play_collision.return_13 sta _6 - //SEG210 [100] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG230 [112] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda _6 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG211 play_move_rotate::@11 + //SEG231 play_move_rotate::@11 b11: - //SEG212 [101] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG232 [113] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG213 [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG233 [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -8128,50 +9117,50 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG214 [88] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG234 [100] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG215 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG216 [88] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG217 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG235 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG236 [100] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG237 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 sta return jmp breturn - //SEG218 play_move_rotate::@1 + //SEG238 play_move_rotate::@1 b1: - //SEG219 [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + //SEG239 [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_orientation sec sbc #$10 sta _4 - //SEG220 [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG240 [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _4 sta orientation jmp b4_from_b1 } -//SEG221 play_collision +//SEG241 play_collision play_collision: { - .label _7 = $6a + .label _7 = $72 .label xpos = $19 .label ypos = $18 .label orientation = $17 - .label return = $71 - .label return_1 = $6d - .label piece_gfx = $65 + .label return = $79 + .label return_1 = $75 + .label piece_gfx = $6d .label ypos2 = $1a - .label playfield_line = $67 - .label i = $69 + .label playfield_line = $6f + .label i = $71 .label col = $1d .label c = $1e .label l = $1b - .label return_12 = $6b - .label return_13 = $62 + .label return_12 = $73 + .label return_13 = $6a .label i_2 = $1c .label return_14 = $1f .label i_3 = $1c .label i_11 = $1c .label i_13 = $1c - //SEG222 [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG242 [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_12 @@ -8179,1296 +9168,1296 @@ play_collision: { lda #0 adc current_piece_12+1 sta piece_gfx+1 - //SEG223 [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG243 [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG224 [108] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG244 [120] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG225 [108] 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 + //SEG245 [120] 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 - //SEG226 [108] 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 + //SEG246 [120] 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 - //SEG227 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG247 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG228 play_collision::@1 + //SEG248 play_collision::@1 b1: - //SEG229 [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG249 [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG230 [110] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG250 [122] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG231 [111] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG251 [123] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG232 [111] 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 + //SEG252 [123] 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 - //SEG233 [111] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG234 [111] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG253 [123] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG254 [123] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG235 play_collision::@2 + //SEG255 play_collision::@2 b2: - //SEG236 [112] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG256 [124] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG237 [113] 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 + //SEG257 [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG238 play_collision::@8 + //SEG258 play_collision::@8 b8: - //SEG239 [114] 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 + //SEG259 [126] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG240 [115] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG260 [127] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG241 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG261 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_14 jmp breturn - //SEG242 play_collision::@return + //SEG262 play_collision::@return breturn: - //SEG243 [116] return + //SEG263 [128] return rts - //SEG244 play_collision::@4 + //SEG264 play_collision::@4 b4: - //SEG245 [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG265 [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG246 [118] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + //SEG266 [130] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG247 [115] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG267 [127] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG248 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG268 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_14 jmp breturn - //SEG249 play_collision::@5 + //SEG269 play_collision::@5 b5: - //SEG250 [119] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG270 [131] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG251 [115] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG271 [127] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG252 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG272 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_14 jmp breturn - //SEG253 play_collision::@6 + //SEG273 play_collision::@6 b6: - //SEG254 [120] 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 + //SEG274 [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG255 [115] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG275 [127] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG256 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG276 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_14 jmp breturn - //SEG257 play_collision::@3 + //SEG277 play_collision::@3 b3: - //SEG258 [121] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG278 [133] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG259 [122] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG279 [134] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG260 [123] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG280 [135] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG261 play_collision::@17 + //SEG281 play_collision::@17 b17: - //SEG262 [124] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG282 [136] (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 - //SEG263 [125] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG283 [137] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG264 [126] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [138] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG265 [115] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG285 [127] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG266 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG286 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_14 jmp breturn - //SEG267 play_collision::@20 + //SEG287 play_collision::@20 b20: - //SEG268 [127] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG288 [139] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG269 [108] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG289 [120] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG270 [108] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG271 [108] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG272 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG290 [120] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG291 [120] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG292 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG273 play_collision::@21 + //SEG293 play_collision::@21 b21: - //SEG274 [128] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG294 [140] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG275 [111] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG295 [123] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG276 [111] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG277 [111] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG278 [111] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG296 [123] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG297 [123] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG298 [123] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG279 play_move_leftright +//SEG299 play_move_leftright play_move_leftright: { - .label _4 = $6c - .label _8 = $6e + .label _4 = $74 + .label _8 = $76 .label return = $20 - .label key_event = $55 - .label return_4 = $56 - //SEG280 [129] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + .label key_event = $5d + .label return_4 = $5e + //SEG300 [141] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_COMMA beq b1 jmp b6 - //SEG281 play_move_leftright::@6 + //SEG301 play_move_leftright::@6 b6: - //SEG282 [130] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG302 [142] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG283 play_move_leftright::@7 + //SEG303 play_move_leftright::@7 b7: - //SEG284 [131] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG304 [143] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG285 [132] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuz1=vbuz2 + //SEG305 [144] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG286 [133] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG306 [145] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG287 [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG307 [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_75 lda current_piece+1 - sta current_piece_73+1 - //SEG288 [135] call play_collision - //SEG289 [105] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + sta current_piece_75+1 + //SEG308 [147] call play_collision + //SEG309 [117] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG290 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG291 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG292 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG293 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG310 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG311 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG312 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG313 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG294 [136] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG314 [148] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_12 jmp b15 - //SEG295 play_move_leftright::@15 + //SEG315 play_move_leftright::@15 b15: - //SEG296 [137] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 + //SEG316 [149] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 lda play_collision.return_12 sta _4 - //SEG297 [138] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG317 [150] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _4 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG298 play_move_leftright::@8 + //SEG318 play_move_leftright::@8 b8: - //SEG299 [139] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 + //SEG319 [151] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG300 [140] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG320 [152] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG301 [140] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG302 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG321 [152] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG322 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 sta return jmp breturn - //SEG303 [140] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG323 [152] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG304 [140] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG305 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG324 [152] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG325 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 sta return jmp breturn - //SEG306 play_move_leftright::@return + //SEG326 play_move_leftright::@return breturn: - //SEG307 [141] return + //SEG327 [153] return rts - //SEG308 play_move_leftright::@1 + //SEG328 play_move_leftright::@1 b1: - //SEG309 [142] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG329 [154] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG310 [143] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuz1=vbuz2 + //SEG330 [155] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG311 [144] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG331 [156] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG312 [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG332 [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_74 lda current_piece+1 - sta current_piece_72+1 - //SEG313 [146] call play_collision - //SEG314 [105] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + sta current_piece_74+1 + //SEG333 [158] call play_collision + //SEG334 [117] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG315 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG316 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG317 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG318 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG335 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG336 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG337 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG338 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG319 [147] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG339 [159] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_1 jmp b14 - //SEG320 play_move_leftright::@14 + //SEG340 play_move_leftright::@14 b14: - //SEG321 [148] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG341 [160] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG322 [149] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG342 [161] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _8 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG323 play_move_leftright::@11 + //SEG343 play_move_leftright::@11 b11: - //SEG324 [150] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 + //SEG344 [162] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG325 play_move_down +//SEG345 play_move_down play_move_down: { - .label _2 = $70 - .label _12 = $72 + .label _2 = $78 + .label _12 = $7a .label movedown = $21 .label return = $29 - .label key_event = $51 - .label return_3 = $52 - //SEG326 [151] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + .label key_event = $59 + .label return_3 = $5a + //SEG346 [163] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG327 [152] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG347 [164] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE bne b1_from_play_move_down - //SEG328 [153] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG348 [165] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG329 play_move_down::@8 + //SEG349 play_move_down::@8 b8: - //SEG330 [154] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG350 [166] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG331 [154] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG351 [166] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG332 [154] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG352 [166] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG333 [154] 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 + //SEG353 [166] 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 - //SEG334 play_move_down::@1 + //SEG354 play_move_down::@1 b1: - //SEG335 [155] call keyboard_event_pressed - //SEG336 [238] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG355 [167] call keyboard_event_pressed + //SEG356 [250] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG337 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG357 [250] 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 - //SEG338 [156] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG358 [168] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b17 - //SEG339 play_move_down::@17 + //SEG359 play_move_down::@17 b17: - //SEG340 [157] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG360 [169] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG341 [158] 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 + //SEG361 [170] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b17 jmp b9 - //SEG342 play_move_down::@9 + //SEG362 play_move_down::@9 b9: - //SEG343 [159] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG363 [171] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG344 play_move_down::@10 + //SEG364 play_move_down::@10 b10: - //SEG345 [160] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG365 [172] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG346 [161] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG366 [173] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG347 [161] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG367 [173] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG348 play_move_down::@2 + //SEG368 play_move_down::@2 b2: - //SEG349 [162] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG369 [174] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG350 play_move_down::@11 + //SEG370 play_move_down::@11 b11: - //SEG351 [163] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG371 [175] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG352 [164] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG372 [176] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG353 [164] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG373 [176] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG354 play_move_down::@4 + //SEG374 play_move_down::@4 b4: - //SEG355 [165] 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 + //SEG375 [177] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b4 jmp b12 - //SEG356 play_move_down::@12 + //SEG376 play_move_down::@12 b12: - //SEG357 [166] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG377 [178] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG358 [167] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG378 [179] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG359 [168] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 + //SEG379 [180] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG360 [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG380 [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_71 + sta current_piece_73 lda current_piece+1 - sta current_piece_71+1 - //SEG361 [170] call play_collision - //SEG362 [105] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_73+1 + //SEG381 [182] call play_collision + //SEG382 [117] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG363 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG364 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG365 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG366 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG383 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG384 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG385 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG386 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG367 [171] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG387 [183] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return jmp b18 - //SEG368 play_move_down::@18 + //SEG388 play_move_down::@18 b18: - //SEG369 [172] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG389 [184] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG370 [173] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG390 [185] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 cmp #COLLISION_NONE beq b6 - //SEG371 [174] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG391 [186] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG372 play_move_down::@13 + //SEG392 play_move_down::@13 b13: - //SEG373 [175] call play_lock_current + //SEG393 [187] call play_lock_current jsr play_lock_current - //SEG374 [176] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG394 [188] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG375 play_move_down::@19 + //SEG395 play_move_down::@19 b19: - //SEG376 [177] call play_remove_lines - //SEG377 [199] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG396 [189] call play_remove_lines + //SEG397 [211] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG378 [178] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG398 [190] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 - //SEG379 play_move_down::@20 + //SEG399 play_move_down::@20 b20: - //SEG380 [179] call play_spawn_current - //SEG381 [185] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG400 [191] call play_spawn_current + //SEG401 [197] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] play_spawn_current_from_b20: jsr play_spawn_current - //SEG382 [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG402 [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG383 [181] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG403 [193] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG384 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG385 [181] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG404 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG405 [193] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG386 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG387 [181] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG406 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG407 [193] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG388 [181] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG389 [181] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG408 [193] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG409 [193] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG390 play_move_down::@7 + //SEG410 play_move_down::@7 b7: - //SEG391 [182] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG411 [194] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG392 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG393 [182] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG394 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG395 [182] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG396 [182] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG397 [182] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG398 [182] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG412 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG413 [194] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG414 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG415 [194] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG416 [194] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG417 [194] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG418 [194] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG399 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG419 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 lda #1 sta return jmp breturn - //SEG400 [182] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG420 [194] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG401 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG402 [182] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG403 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG404 [182] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG405 [182] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG406 [182] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG407 [182] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG408 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG421 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG422 [194] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG423 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG424 [194] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG425 [194] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG426 [194] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG427 [194] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG428 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 lda #0 sta return jmp breturn - //SEG409 play_move_down::@return + //SEG429 play_move_down::@return breturn: - //SEG410 [183] return + //SEG430 [195] return rts - //SEG411 play_move_down::@6 + //SEG431 play_move_down::@6 b6: - //SEG412 [184] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 + //SEG432 [196] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG413 [181] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG433 [193] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG414 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG415 [181] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG416 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG417 [181] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG418 [181] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG419 [181] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG434 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG435 [193] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG436 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG437 [193] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG438 [193] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG439 [193] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG420 play_spawn_current +//SEG440 play_spawn_current play_spawn_current: { - .label _1 = $75 - .label _3 = $73 + .label _1 = $7d + .label _3 = $7b .label piece_idx = $2a - //SEG421 [186] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG441 [198] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG422 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG442 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b1 - //SEG423 play_spawn_current::@1 + //SEG443 play_spawn_current::@1 b1: - //SEG424 [187] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG444 [199] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b2_from_b1 jmp b3 - //SEG425 play_spawn_current::@3 + //SEG445 play_spawn_current::@3 b3: - //SEG426 [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG446 [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda piece_idx asl sta _3 - //SEG427 [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG447 [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG428 [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG448 [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_CHARS,y sta current_piece_char jmp breturn - //SEG429 play_spawn_current::@return + //SEG449 play_spawn_current::@return breturn: - //SEG430 [191] return + //SEG450 [203] return rts - //SEG431 [192] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG451 [204] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG432 play_spawn_current::@2 + //SEG452 play_spawn_current::@2 b2: - //SEG433 [193] call sid_rnd + //SEG453 [205] call sid_rnd jsr sid_rnd - //SEG434 [194] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG454 [206] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b7 - //SEG435 play_spawn_current::@7 + //SEG455 play_spawn_current::@7 b7: - //SEG436 [195] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG456 [207] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _1 - //SEG437 [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG457 [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _1 sta piece_idx - //SEG438 [186] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG458 [198] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG439 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG459 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG440 sid_rnd +//SEG460 sid_rnd sid_rnd: { - .label return = $76 - .label return_2 = $74 - //SEG441 [197] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + .label return = $7e + .label return_2 = $7c + //SEG461 [209] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG442 sid_rnd::@return + //SEG462 sid_rnd::@return breturn: - //SEG443 [198] return + //SEG463 [210] return rts } -//SEG444 play_remove_lines +//SEG464 play_remove_lines play_remove_lines: { - .label c = $77 + .label c = $7f .label r = $2c .label w = $2f .label x = $2d .label y = $2b .label full = $2e - //SEG445 [200] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG465 [212] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG446 [200] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG466 [212] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG447 [200] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG467 [212] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG448 [200] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG468 [212] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 - //SEG449 [200] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG469 [212] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG450 [200] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG451 [200] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG452 [200] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG470 [212] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG471 [212] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG472 [212] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy jmp b1 - //SEG453 play_remove_lines::@1 + //SEG473 play_remove_lines::@1 b1: - //SEG454 [201] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG474 [213] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG455 [201] 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 + //SEG475 [213] 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 - //SEG456 [201] 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 + //SEG476 [213] 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 - //SEG457 [201] 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 - //SEG458 [201] 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 + //SEG477 [213] 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 + //SEG478 [213] 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 - //SEG459 [201] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG479 [213] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG460 [201] 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 - //SEG461 [201] 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 - //SEG462 [201] 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 - //SEG463 [201] 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 + //SEG480 [213] 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 + //SEG481 [213] 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 + //SEG482 [213] 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 + //SEG483 [213] 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 - //SEG464 play_remove_lines::@2 + //SEG484 play_remove_lines::@2 b2: - //SEG465 [202] (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 + //SEG485 [214] (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 - //SEG466 [203] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG486 [215] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG467 [204] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG487 [216] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG468 [205] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG488 [217] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG469 [205] 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 + //SEG489 [217] 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 - //SEG470 play_remove_lines::@3 + //SEG490 play_remove_lines::@3 b3: - //SEG471 [206] *((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 + //SEG491 [218] *((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 - //SEG472 [207] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG492 [219] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG473 [208] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG493 [220] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG474 [209] 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 + //SEG494 [221] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG475 play_remove_lines::@9 + //SEG495 play_remove_lines::@9 b9: - //SEG476 [210] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG496 [222] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG477 play_remove_lines::@10 + //SEG497 play_remove_lines::@10 b10: - //SEG478 [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG498 [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc w sta w - //SEG479 [212] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG499 [224] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG480 [212] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG500 [224] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy jmp b4 - //SEG481 play_remove_lines::@4 + //SEG501 play_remove_lines::@4 b4: - //SEG482 [213] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG502 [225] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG483 [214] 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 + //SEG503 [226] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG484 [215] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG504 [227] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG485 [215] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG505 [227] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG486 play_remove_lines::@5 + //SEG506 play_remove_lines::@5 b5: - //SEG487 [216] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [228] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda w cmp #$ff bne b6 jmp breturn - //SEG488 play_remove_lines::@return + //SEG508 play_remove_lines::@return breturn: - //SEG489 [217] return + //SEG509 [229] return rts - //SEG490 play_remove_lines::@6 + //SEG510 play_remove_lines::@6 b6: - //SEG491 [218] *((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 + //SEG511 [230] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy w lda #0 sta playfield,y - //SEG492 [219] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG512 [231] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG493 [220] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG513 [232] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] b17_from_b2: jmp b17 - //SEG494 play_remove_lines::@17 + //SEG514 play_remove_lines::@17 b17: - //SEG495 [205] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG515 [217] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG496 [205] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy + //SEG516 [217] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG497 play_lock_current +//SEG517 play_lock_current play_lock_current: { .label ypos2 = $30 - .label playfield_line = $78 + .label playfield_line = $80 .label col = $33 - .label i = $7a + .label i = $82 .label c = $34 .label l = $31 .label i_2 = $32 .label i_3 = $32 .label i_7 = $32 .label i_9 = $32 - //SEG498 [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG518 [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG499 [222] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG519 [234] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG500 [222] 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 + //SEG520 [234] 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 - //SEG501 [222] 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 + //SEG521 [234] 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 - //SEG502 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG522 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG503 play_lock_current::@1 + //SEG523 play_lock_current::@1 b1: - //SEG504 [223] (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 + //SEG524 [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG505 [224] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG525 [236] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG506 [225] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG526 [237] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG507 [225] 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 + //SEG527 [237] 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 - //SEG508 [225] 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 - //SEG509 [225] 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 + //SEG528 [237] 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 + //SEG529 [237] 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 - //SEG510 play_lock_current::@2 + //SEG530 play_lock_current::@2 b2: - //SEG511 [226] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG531 [238] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG512 [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG532 [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG513 play_lock_current::@4 + //SEG533 play_lock_current::@4 b4: - //SEG514 [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG534 [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG515 play_lock_current::@3 + //SEG535 play_lock_current::@3 b3: - //SEG516 [229] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG536 [241] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG517 [230] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG537 [242] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG518 [231] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG538 [243] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG519 play_lock_current::@5 + //SEG539 play_lock_current::@5 b5: - //SEG520 [232] (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 + //SEG540 [244] (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 - //SEG521 [233] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG541 [245] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG522 [234] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG542 [246] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG523 play_lock_current::@return + //SEG543 play_lock_current::@return breturn: - //SEG524 [235] return + //SEG544 [247] return rts - //SEG525 play_lock_current::@7 + //SEG545 play_lock_current::@7 b7: - //SEG526 [236] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG546 [248] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG527 [222] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG547 [234] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG528 [222] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG529 [222] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG530 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG548 [234] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG549 [234] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG550 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG531 play_lock_current::@8 + //SEG551 play_lock_current::@8 b8: - //SEG532 [237] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG552 [249] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG533 [225] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG553 [237] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG534 [225] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG535 [225] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG536 [225] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG554 [237] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG555 [237] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG556 [237] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG537 keyboard_event_pressed +//SEG557 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $7b - .label _1 = $7d - .label return = $82 - .label return_1 = $84 - .label return_2 = $86 - .label row_bits = $7c - .label return_10 = $88 + .label _0 = $83 + .label _1 = $85 + .label return = $8a + .label return_1 = $8c + .label return_2 = $8e + .label row_bits = $84 + .label return_10 = $90 .label keycode = $35 - .label return_11 = $7e - .label return_12 = $6f - //SEG538 [239] (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 return_11 = $86 + .label return_12 = $77 + //SEG558 [251] (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 - //SEG539 [240] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG559 [252] (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 - //SEG540 [241] (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 + //SEG560 [253] (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 - //SEG541 [242] (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 + //SEG561 [254] (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 - //SEG542 keyboard_event_pressed::@return + //SEG562 keyboard_event_pressed::@return breturn: - //SEG543 [243] return + //SEG563 [255] return rts } -//SEG544 keyboard_event_get +//SEG564 keyboard_event_get keyboard_event_get: { .label return = $36 - .label return_3 = $4f - //SEG545 [244] 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_3 = $57 + //SEG565 [256] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG546 keyboard_event_get::@3 + //SEG566 keyboard_event_get::@3 b3: - //SEG547 [245] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG567 [257] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG548 [246] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG568 [258] (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 - //SEG549 [247] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG569 [259] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG550 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG551 [247] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG570 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG552 [247] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG572 [259] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG553 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG554 [247] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG573 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG574 [259] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG555 keyboard_event_get::@return + //SEG575 keyboard_event_get::@return breturn: - //SEG556 [248] return + //SEG576 [260] return rts } -//SEG557 keyboard_event_scan +//SEG577 keyboard_event_scan keyboard_event_scan: { - .label _3 = $8b - .label _4 = $8c - .label _11 = $8e - .label _14 = $83 - .label _18 = $85 - .label _22 = $87 - .label _26 = $89 - .label row_scan = $81 + .label _3 = $93 + .label _4 = $94 + .label _11 = $96 + .label _14 = $8b + .label _18 = $8d + .label _22 = $8f + .label _26 = $91 + .label row_scan = $89 .label keycode = $3a .label row = $37 .label col = $39 - .label event_type = $8d - //SEG558 [250] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label event_type = $95 + //SEG578 [262] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG559 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG560 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG579 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG580 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG561 [250] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG581 [262] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG562 [250] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG582 [262] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG563 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG564 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG565 [250] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG583 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG584 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG585 [262] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG566 keyboard_event_scan::@1 + //SEG586 keyboard_event_scan::@1 b1: - //SEG567 [251] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG587 [263] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG568 [252] call keyboard_matrix_read + //SEG588 [264] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG569 [253] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG589 [265] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b25 - //SEG570 keyboard_event_scan::@25 + //SEG590 keyboard_event_scan::@25 b25: - //SEG571 [254] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG591 [266] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG572 [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG592 [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG573 keyboard_event_scan::@13 + //SEG593 keyboard_event_scan::@13 b13: - //SEG574 [256] (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 + //SEG594 [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG575 [257] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG595 [269] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG576 [257] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG577 [257] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG596 [269] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG597 [269] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG578 keyboard_event_scan::@3 + //SEG598 keyboard_event_scan::@3 b3: - //SEG579 [258] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG599 [270] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG580 [259] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [271] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG581 [260] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG601 [272] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG582 keyboard_event_scan::@20 + //SEG602 keyboard_event_scan::@20 b20: - //SEG583 [261] call keyboard_event_pressed - //SEG584 [238] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG603 [273] call keyboard_event_pressed + //SEG604 [250] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG585 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG605 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG586 [262] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG606 [274] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b26 - //SEG587 keyboard_event_scan::@26 + //SEG607 keyboard_event_scan::@26 b26: - //SEG588 [263] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG608 [275] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG589 [264] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 + //SEG609 [276] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG590 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG610 [277] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG591 keyboard_event_scan::@21 + //SEG611 keyboard_event_scan::@21 b21: - //SEG592 [266] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG612 [278] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG593 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG613 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 lda #0|KEY_MODIFIER_LSHIFT sta keyboard_modifiers jmp b9 - //SEG594 [266] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG614 [278] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG595 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG615 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 lda #0 sta keyboard_modifiers jmp b9 - //SEG596 keyboard_event_scan::@9 + //SEG616 keyboard_event_scan::@9 b9: - //SEG597 [267] call keyboard_event_pressed - //SEG598 [238] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG617 [279] call keyboard_event_pressed + //SEG618 [250] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG599 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG619 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG600 [268] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG620 [280] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b27 - //SEG601 keyboard_event_scan::@27 + //SEG621 keyboard_event_scan::@27 b27: - //SEG602 [269] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG622 [281] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG603 [270] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG623 [282] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 jmp b22 - //SEG604 keyboard_event_scan::@22 + //SEG624 keyboard_event_scan::@22 b22: - //SEG605 [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG625 [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_RSHIFT ora keyboard_modifiers sta keyboard_modifiers - //SEG606 [272] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG626 [284] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: - //SEG607 [272] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG627 [284] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG608 keyboard_event_scan::@10 + //SEG628 keyboard_event_scan::@10 b10: - //SEG609 [273] call keyboard_event_pressed - //SEG610 [238] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG629 [285] call keyboard_event_pressed + //SEG630 [250] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG611 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG631 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG612 [274] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG632 [286] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b28 - //SEG613 keyboard_event_scan::@28 + //SEG633 keyboard_event_scan::@28 b28: - //SEG614 [275] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG634 [287] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG615 [276] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG635 [288] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 jmp b23 - //SEG616 keyboard_event_scan::@23 + //SEG636 keyboard_event_scan::@23 b23: - //SEG617 [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG637 [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_CTRL ora keyboard_modifiers sta keyboard_modifiers - //SEG618 [278] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG638 [290] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: - //SEG619 [278] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG639 [290] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG620 keyboard_event_scan::@11 + //SEG640 keyboard_event_scan::@11 b11: - //SEG621 [279] call keyboard_event_pressed - //SEG622 [238] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG641 [291] call keyboard_event_pressed + //SEG642 [250] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG623 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG643 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [280] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG644 [292] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b29 - //SEG625 keyboard_event_scan::@29 + //SEG645 keyboard_event_scan::@29 b29: - //SEG626 [281] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG646 [293] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG627 [282] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG647 [294] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn jmp b24 - //SEG628 keyboard_event_scan::@24 + //SEG648 keyboard_event_scan::@24 b24: - //SEG629 [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 + //SEG649 [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 lda #KEY_MODIFIER_COMMODORE ora keyboard_modifiers sta keyboard_modifiers_5 jmp breturn - //SEG630 keyboard_event_scan::@return + //SEG650 keyboard_event_scan::@return breturn: - //SEG631 [284] return + //SEG651 [296] return rts - //SEG632 [285] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG652 [297] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG633 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG634 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG635 [285] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 + //SEG653 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG654 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG655 [297] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG636 [285] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG656 [297] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG637 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG638 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG639 [285] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG657 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG658 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG659 [297] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG640 keyboard_event_scan::@4 + //SEG660 keyboard_event_scan::@4 b4: - //SEG641 [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG661 [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG642 [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG662 [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG643 [288] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 + //SEG663 [300] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG644 keyboard_event_scan::@15 + //SEG664 keyboard_event_scan::@15 b15: - //SEG645 [289] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG665 [301] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG646 keyboard_event_scan::@16 + //SEG666 keyboard_event_scan::@16 b16: - //SEG647 [290] (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 + //SEG667 [302] (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 - //SEG648 [291] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 + //SEG668 [303] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG649 keyboard_event_scan::@17 + //SEG669 keyboard_event_scan::@17 b17: - //SEG650 [292] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG670 [304] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG651 [293] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG671 [305] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG652 [294] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG672 [306] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG653 [294] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG673 [306] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG654 keyboard_event_scan::@5 + //SEG674 keyboard_event_scan::@5 b5: - //SEG655 [295] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG675 [307] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG656 [296] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG676 [308] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG657 [297] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG677 [309] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG658 keyboard_event_scan::@19 + //SEG678 keyboard_event_scan::@19 b19: - //SEG659 [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG679 [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG660 keyboard_event_scan::@7 + //SEG680 keyboard_event_scan::@7 b7: - //SEG661 [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 + //SEG681 [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG662 [300] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG682 [312] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG663 [301] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG683 [313] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG664 keyboard_matrix_read +//SEG684 keyboard_matrix_read keyboard_matrix_read: { - .label return = $8f - .label rowid = $7f - .label return_2 = $80 - //SEG665 [302] *((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 = $97 + .label rowid = $87 + .label return_2 = $88 + //SEG685 [314] *((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 - //SEG666 [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG686 [315] (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 - //SEG667 keyboard_matrix_read::@return + //SEG687 keyboard_matrix_read::@return breturn: - //SEG668 [304] return + //SEG688 [316] return rts } -//SEG669 play_init +//SEG689 play_init play_init: { - .label _1 = $90 + .label _1 = $98 .label pli = $3d .label idx = $3f .label j = $3c - //SEG670 [306] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG690 [318] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG671 [306] 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 + //SEG691 [318] 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 - //SEG672 [306] 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 + //SEG692 [318] 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 - //SEG673 [306] 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 + //SEG693 [318] 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 - //SEG674 [306] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG694 [318] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG675 [306] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG676 [306] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG677 [306] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG695 [318] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG696 [318] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG697 [318] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG678 play_init::@1 + //SEG698 play_init::@1 b1: - //SEG679 [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG699 [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG680 [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG700 [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG681 [309] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG701 [321] *((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 - //SEG682 [310] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [322] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -9476,125 +10465,228 @@ play_init: { bcc !+ inc pli+1 !: - //SEG683 [311] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG703 [323] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG684 [312] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG704 [324] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG685 [313] 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 + //SEG705 [325] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG686 play_init::@2 + //SEG706 play_init::@2 b2: - //SEG687 [314] *((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 + //SEG707 [326] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG688 play_init::@return + //SEG708 play_init::@return breturn: - //SEG689 [315] return + //SEG709 [327] return rts } -//SEG690 render_init +//SEG710 sprites_irq_init +sprites_irq_init: { + //SEG711 asm { sei } + sei + //SEG712 [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG713 asm { ldaCIA1_INTERRUPT } + lda CIA1_INTERRUPT + //SEG714 [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG715 [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG716 [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG717 [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG718 [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG719 [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG720 [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta HARDWARE_IRQ+1 + //SEG721 asm { cli } + cli + jmp breturn + //SEG722 sprites_irq_init::@return + breturn: + //SEG723 [339] return + rts +} +//SEG724 sprites_init +sprites_init: { + .label s2 = $99 + .label xpos = $41 + .label s = $40 + //SEG725 [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG726 [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG727 [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_MC + sta SPRITES_EXPAND_Y + //SEG728 [343] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + //SEG729 [344] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + b1_from_sprites_init: + //SEG730 [344] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 + //SEG731 [344] 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 + //SEG732 [344] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + b1_from_b1: + //SEG733 [344] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG734 [344] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + jmp b1 + //SEG735 sprites_init::@1 + b1: + //SEG736 [345] (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 + //SEG737 [346] *((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 + //SEG738 [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + ldy s + lda #BLACK + sta SPRITES_COLS,y + //SEG739 [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG740 [349] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + inc s + //SEG741 [350] 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 s + cmp #4 + bne b1_from_b1 + jmp breturn + //SEG742 sprites_init::@return + breturn: + //SEG743 [351] return + rts +} +//SEG744 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - .label _10 = $91 - .label _15 = $92 - .label li = $41 - .label i = $40 - .label c = $46 - .label line = $43 - .label l = $45 + .label _11 = $9a + .label _18 = $9b + .label li = $43 + .label i = $42 + .label c = $48 + .label line = $45 + .label l = $47 jmp vicSelectGfxBank1 - //SEG691 render_init::vicSelectGfxBank1 + //SEG745 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG692 [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG746 [353] *((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 - //SEG693 [318] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG747 [354] 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 - //SEG694 render_init::vicSelectGfxBank1_toDd001 + //SEG748 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG695 render_init::vicSelectGfxBank1_@1 + //SEG749 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG696 [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG750 [355] *((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 - //SEG697 [320] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] + //SEG751 [356] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG698 render_init::toD0181 + //SEG752 render_init::toD0181 toD0181: jmp b8 - //SEG699 render_init::@8 + //SEG753 render_init::@8 b8: - //SEG700 [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG754 [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG701 [322] *((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 + //SEG755 [358] *((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 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG702 [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG756 [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG703 [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG757 [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG704 [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG758 [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG705 [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG759 [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG706 [327] call fill - //SEG707 [368] phi from render_init::@8 to fill [phi:render_init::@8->fill] + //SEG760 [363] call fill + //SEG761 [404] phi from render_init::@8 to fill [phi:render_init::@8->fill] fill_from_b8: jsr fill - //SEG708 [328] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG762 [364] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] b9_from_b8: jmp b9 - //SEG709 render_init::@9 + //SEG763 render_init::@9 b9: - //SEG710 [329] call render_screen_original - //SEG711 [346] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] + //SEG764 [365] call render_screen_original + //SEG765 [382] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] render_screen_original_from_b9: jsr render_screen_original - //SEG712 [330] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] + //SEG766 [366] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] b1_from_b9: - //SEG713 [330] phi (byte*) render_init::li#2 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@9->render_init::@1#0] -- pbuz1=pbuc1 - lda #render_init::@1#0] -- pbuz1=pbuc1 + lda #PLAYFIELD_SCREEN+$28+$10 + lda #>PLAYFIELD_SCREEN+2*$28+$10 sta li+1 - //SEG714 [330] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuz1=vbuc1 + //SEG768 [366] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG715 [330] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG769 [366] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG716 [330] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG717 [330] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG770 [366] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG771 [366] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG718 render_init::@1 + //SEG772 render_init::@1 b1: - //SEG719 [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG773 [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _10 - //SEG720 [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _10 + sta _11 + //SEG774 [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _11 lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG721 [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG775 [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -9602,64 +10694,64 @@ render_init: { bcc !+ inc li+1 !: - //SEG722 [334] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG776 [370] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG723 [335] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG777 [371] 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 i - cmp #PLAYFIELD_LINES+2+1 + cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 - //SEG724 [336] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG778 [372] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG725 [336] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG779 [372] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + lda #2 sta l - //SEG726 [336] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 - lda #render_init::@2#1] -- pbuz1=pbuc1 + lda #COLS+$f + lda #>COLS+4*$28+$10 sta line+1 jmp b2 - //SEG727 [336] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG781 [372] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG728 [336] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG729 [336] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG782 [372] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG783 [372] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG730 render_init::@2 + //SEG784 render_init::@2 b2: - //SEG731 [337] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG785 [373] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG732 [337] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 + //SEG786 [373] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG733 [337] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG787 [373] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG734 [337] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG788 [373] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG735 render_init::@3 + //SEG789 render_init::@3 b3: - //SEG736 [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG790 [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line - sta _15 + sta _18 lda #0 adc line+1 - sta _15+1 - //SEG737 [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + sta _18+1 + //SEG791 [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 - sta (_15),y - //SEG738 [340] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 + sta (_18),y + //SEG792 [376] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG739 [341] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG793 [377] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 lda c - cmp #PLAYFIELD_COLS+1+1 + cmp #PLAYFIELD_COLS-1+1 bne b3_from_b3 jmp b5 - //SEG740 render_init::@5 + //SEG794 render_init::@5 b5: - //SEG741 [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG795 [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -9667,181 +10759,181 @@ render_init: { bcc !+ inc line+1 !: - //SEG742 [343] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG796 [379] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG743 [344] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG797 [380] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l - cmp #PLAYFIELD_LINES+1+1 + cmp #PLAYFIELD_LINES-1+1 bne b2_from_b5 jmp breturn - //SEG744 render_init::@return + //SEG798 render_init::@return breturn: - //SEG745 [345] return + //SEG799 [381] return rts } -//SEG746 render_screen_original +//SEG800 render_screen_original render_screen_original: { .const SPACE = 0 - .label _3 = $94 - .label screen = $4a - .label x = $4c - .label orig = $48 - .label y = $47 - //SEG747 [347] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + .label _3 = $9d + .label screen = $4c + .label x = $4e + .label orig = $4a + .label y = $49 + //SEG801 [383] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG748 [347] 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 + //SEG802 [383] 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 - //SEG749 [347] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG803 [383] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta orig+1 - //SEG750 [347] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG804 [383] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN sta screen+1 jmp b1 - //SEG751 [347] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG805 [383] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG752 [347] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG753 [347] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG754 [347] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG806 [383] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG807 [383] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG808 [383] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG755 render_screen_original::@1 + //SEG809 render_screen_original::@1 b1: - //SEG756 [348] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG810 [384] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG757 [348] 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 + //SEG811 [384] 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 - //SEG758 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG812 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG759 [348] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG813 [384] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG760 [348] 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 - //SEG761 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG814 [384] 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 + //SEG815 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG762 render_screen_original::@2 + //SEG816 render_screen_original::@2 b2: - //SEG763 [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG817 [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG764 [350] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 + //SEG818 [386] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG765 [351] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG819 [387] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG766 [352] 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 + //SEG820 [388] 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 x cmp #4 bne b2_from_b2 - //SEG767 [353] 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] + //SEG821 [389] 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: - //SEG768 [353] 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 - //SEG769 [353] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG770 [353] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG822 [389] 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 + //SEG823 [389] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG824 [389] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy jmp b3 - //SEG771 render_screen_original::@3 + //SEG825 render_screen_original::@3 b3: - //SEG772 [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_plus_1 + //SEG826 [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_plus_1 ldy #0 lda (orig),y clc adc #1 sta _3 - //SEG773 [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuz2 + //SEG827 [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (screen),y - //SEG774 [356] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG828 [392] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG775 [357] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG829 [393] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG776 [358] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG830 [394] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG777 [359] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [395] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$24 bne b3_from_b3 - //SEG778 [360] 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] + //SEG832 [396] 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: - //SEG779 [360] 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 - //SEG780 [360] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG833 [396] 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 + //SEG834 [396] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy jmp b4 - //SEG781 render_screen_original::@4 + //SEG835 render_screen_original::@4 b4: - //SEG782 [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG836 [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG783 [362] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG837 [398] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG784 [363] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 + //SEG838 [399] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG785 [364] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG839 [400] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b4_from_b4 jmp b7 - //SEG786 render_screen_original::@7 + //SEG840 render_screen_original::@7 b7: - //SEG787 [365] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG841 [401] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG788 [366] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [402] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG789 render_screen_original::@return + //SEG843 render_screen_original::@return breturn: - //SEG790 [367] return + //SEG844 [403] return rts } -//SEG791 fill +//SEG845 fill fill: { .const size = $3e8 .label end = COLS+size - .label addr = $4d - //SEG792 [369] phi from fill to fill::@1 [phi:fill->fill::@1] + .label addr = $4f + //SEG846 [405] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG793 [369] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG847 [405] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 jmp b1 - //SEG794 [369] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG848 [405] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG795 [369] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG849 [405] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG796 fill::@1 + //SEG850 fill::@1 b1: - //SEG797 [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG851 [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG798 [371] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG852 [407] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG799 [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG853 [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -9849,26 +10941,190 @@ fill: { cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG804 [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG858 [411] *((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 - //SEG805 sid_rnd_init::@return + //SEG859 sid_rnd_init::@return breturn: - //SEG806 [376] return + //SEG860 [412] return rts +} +//SEG861 irq +irq: { + .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + .label _3 = $a5 + .label ypos = $9e + .label ptr = $9f + .label ptr_1 = $a0 + .label ptr_2 = $a1 + .label raster_next = $52 + //SEG862 entry interrupt(HARDWARE_CLOBBER) + sta rega+1 + stx regx+1 + sty regy+1 + //SEG863 [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + lda #DARK_GREY + sta BORDERCOL + //SEG864 [414] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + lda irq_sprite_ypos + sta ypos + //SEG865 [415] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + lda ypos + sta SPRITES_YPOS + //SEG866 [416] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + lda ypos + sta SPRITES_YPOS+2 + //SEG867 [417] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + lda ypos + sta SPRITES_YPOS+4 + //SEG868 [418] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + lda ypos + sta SPRITES_YPOS+6 + jmp b1 + //SEG869 irq::@1 + b1: + //SEG870 [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + lda RASTER + cmp irq_sprite_ypos + bne b1 + jmp b5 + //SEG871 irq::@5 + b5: + //SEG872 [420] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + lda irq_sprite_ptr + sta ptr + //SEG873 [421] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 + lda ptr + sta PLAYFIELD_SPRITE_PTRS + //SEG874 [422] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuz1=_inc_vbuz2 + ldy ptr + iny + sty ptr_1 + //SEG875 [423] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS+1 + //SEG876 [424] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS+2 + //SEG877 [425] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuz1=_inc_vbuz2 + ldy ptr_1 + iny + sty ptr_2 + //SEG878 [426] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuz1 + lda ptr_2 + sta PLAYFIELD_SPRITE_PTRS+3 + //SEG879 [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + ldy irq_cnt + iny + sty irq_cnt_1 + //SEG880 [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt_1 + cmp #$a + beq b2 + jmp b6 + //SEG881 irq::@6 + b6: + //SEG882 [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next_2 + //SEG883 [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos_2 + //SEG884 [431] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr_2 + //SEG885 [432] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + b3_from_b6: + b3_from_b9: + //SEG886 [432] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + jmp b3 + //SEG887 irq::@3 + b3: + //SEG888 [433] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuz1=vbuz2 + lda irq_raster_next_12 + sta raster_next + //SEG889 [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and raster_next + sta _3 + //SEG890 [435] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuz1_neq_vbuc1_then_la1 + lda _3 + cmp #3 + bne b4_from_b3 + jmp b8 + //SEG891 irq::@8 + b8: + //SEG892 [436] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 + dec raster_next + //SEG893 [437] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + b4_from_b3: + b4_from_b8: + //SEG894 [437] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + jmp b4 + //SEG895 irq::@4 + b4: + //SEG896 [438] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 + lda raster_next + sta RASTER + //SEG897 [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG898 [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + jmp breturn + //SEG899 irq::@return + breturn: + //SEG900 [441] return - exit interrupt(HARDWARE_CLOBBER) + rega: + lda #00 + regx: + ldx #00 + regy: + ldy #00 + rti + //SEG901 irq::@2 + b2: + //SEG902 [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt_13 + //SEG903 [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next_1 + //SEG904 [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos_1 + //SEG905 [445] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + toSpritePtr2_from_b2: + jmp toSpritePtr2 + //SEG906 irq::toSpritePtr2 + toSpritePtr2: + jmp b9 + //SEG907 irq::@9 + b9: + //SEG908 [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr2_return + sta irq_sprite_ptr_1 + jmp b3_from_b9 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 @@ -9889,9 +11145,9 @@ sid_rnd_init: { .align $40 PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 PIECES_CHARS: .byte $57, $58, $98, $58, $57, $57, $98 + screen_lines: .fill 2*PLAYFIELD_LINES, 0 playfield_lines: .fill 2*PLAYFIELD_LINES, 0 playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 .pc = PLAYFIELD_CHARSET "Inline" @@ -9901,43 +11157,61 @@ sid_rnd_init: { .pc = PLAYFIELD_SCREEN_ORIGINAL "Inline" .import binary "nes-screen.iscr" +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + REGISTER UPLIFT POTENTIAL REGISTERS -Statement [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:4 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#95 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:10 [ current_piece_gfx#95 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ play_spawn_current::$3 ] -Statement [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#70 ] ( main:4 [ current_piece_gfx#17 current_piece_char#13 current_piece#70 ] ) always clobbers reg byte a -Statement [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ play_spawn_current::$3 ] +Statement [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#72 ] ( main:10 [ current_piece_gfx#17 current_piece_char#13 current_piece#72 ] ) always clobbers reg byte a +Statement [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Statement [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a -Statement [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:4 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:80 [ main::key_event#0 ] -Statement [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:4 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a -Statement [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:4 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a -Statement [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ( main:4 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] -Statement [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] -Statement [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:10 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ main::key_event#0 ] +Statement [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:10 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a +Statement [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:10 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#78 current_xpos#104 current_piece_gfx#96 ] ( main:10 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#78 current_xpos#104 current_piece_gfx#96 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#10 current_ypos#78 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] +Statement [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] +Statement [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Statement [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] +Statement [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +Statement [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] -Statement [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Statement [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] ) always clobbers reg byte a +Statement [87] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 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:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) [ render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [90] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 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:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:115 [ play_spawn_current::$3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:123 [ play_spawn_current::$3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] @@ -9947,219 +11221,292 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ c Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Statement [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ main::render#2 ] -Statement [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ) always clobbers reg byte a +Statement [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ main::render#2 ] +Statement [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#76 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#76 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a -Statement [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ main::render#1 ] -Statement [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a +Statement [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ main::render#1 ] +Statement [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] -Statement [113] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ play_collision::i#1 ] -Statement [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [120] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:4::play_move_leftright:35 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a -Statement [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:4::play_move_leftright:35 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a -Statement [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:4::play_move_down:30 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#75 ] ( main:4::play_move_down:30 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 current_piece#75 ] ) always clobbers reg byte a -Statement [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:4::play_spawn_current:13 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:113 [ play_collision::i#1 ] +Statement [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:10::play_move_leftright:45 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a +Statement [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:10::play_move_leftright:45 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a +Statement [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:10::play_move_down:40 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#77 ] ( main:10::play_move_down:40 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 current_piece#77 ] ) always clobbers reg byte a +Statement [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Statement [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:4::play_spawn_current:13 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:4::play_spawn_current:13 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:4::play_spawn_current:13 [ play_spawn_current::piece_idx#1 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:4::play_move_down:30::play_remove_lines:177 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:10::play_spawn_current:23 [ play_spawn_current::piece_idx#1 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:10::play_move_down:40::play_remove_lines:189 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [218] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:4::play_move_down:30::play_remove_lines:177 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [230] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:10::play_move_down:40::play_remove_lines:189 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] -Statement [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [223] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:122 [ play_lock_current::i#1 ] -Statement [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [239] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:130 [ play_lock_current::i#1 ] +Statement [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [251] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Statement [241] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] -Statement [242] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [256] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [253] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] +Statement [254] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] +Statement [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Statement [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [290] (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:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [292] *((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:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [302] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:4::keyboard_event_scan:24::keyboard_matrix_read:252 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:4::keyboard_event_scan:24::keyboard_matrix_read:252 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Statement [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [302] (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:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [304] *((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:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [314] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:10::keyboard_event_scan:34::keyboard_matrix_read:264 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [315] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:10::keyboard_event_scan:34::keyboard_matrix_read:264 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] -Statement [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [309] *((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:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [310] (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:4::play_init:11 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [311] (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:4::play_init:11 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [314] *((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:4::play_init:11 [ ] ) always clobbers reg byte a -Statement [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [322] *((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:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$10 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#2 render_init::$10 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] -Statement [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a -Statement [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a -Statement [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$15 ] ( main:4::render_init:9 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] -Statement [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:4::render_init:9 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] -Statement [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:4::render_init:9 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a -Statement [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#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:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ 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:76 [ 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 [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ) always clobbers reg byte a reg byte y -Statement [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ) always clobbers reg byte y -Statement [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:4::render_init:9::fill:327 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:4::render_init:9::fill:327 [ fill::addr#1 ] ) always clobbers reg byte a -Statement [374] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:4::sid_rnd_init:7 [ ] ) always clobbers reg byte a -Statement [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:4::sid_rnd_init:7 [ ] ) always clobbers reg byte a -Statement [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:4 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#70 ] ( main:4 [ current_piece_gfx#17 current_piece_char#13 current_piece#70 ] ) always clobbers reg byte a -Statement [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a -Statement [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a -Statement [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:4 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a -Statement [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:4 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a -Statement [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:4 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a -Statement [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ( main:4 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a -Statement [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#0 ] ) always clobbers reg byte a -Statement [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a -Statement [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 [ current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:4::render_current:18 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:4::render_current:51 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#62 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a -Statement [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:4::render_playfield:15 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:4::render_playfield:46 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a -Statement [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ) always clobbers reg byte a -Statement [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a -Statement [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:4::play_move_rotate:40 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [113] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [120] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:4::play_move_rotate:40::play_collision:97 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:135 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_leftright:35::play_collision:146 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:4::play_move_down:30::play_collision:170 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:4::play_move_leftright:35 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a -Statement [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:4::play_move_leftright:35 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a -Statement [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:4::play_move_down:30 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#75 ] ( main:4::play_move_down:30 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 current_piece#75 ] ) always clobbers reg byte a -Statement [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:4::play_spawn_current:13 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:4::play_spawn_current:13 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:4::play_spawn_current:13 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:4::play_spawn_current:13 [ play_spawn_current::piece_idx#1 ] main:4::play_move_down:30::play_spawn_current:179 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:4::play_move_down:30::play_remove_lines:177 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [218] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:4::play_move_down:30::play_remove_lines:177 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [223] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:4::play_move_down:30::play_lock_current:175 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [239] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [241] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [242] (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:4::play_move_down:30::keyboard_event_pressed:155 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:261 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:267 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:4::keyboard_event_scan:24::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [256] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Statement [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [290] (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:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [292] *((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:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:4::keyboard_event_scan:24 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [302] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:4::keyboard_event_scan:24::keyboard_matrix_read:252 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:4::keyboard_event_scan:24::keyboard_matrix_read:252 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a -Statement [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [309] *((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:4::play_init:11 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [310] (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:4::play_init:11 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [311] (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:4::play_init:11 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [314] *((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:4::play_init:11 [ ] ) always clobbers reg byte a -Statement [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [322] *((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:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:4::render_init:9 [ ] ) always clobbers reg byte a -Statement [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$10 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#2 render_init::$10 ] ) always clobbers reg byte a -Statement [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a -Statement [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:4::render_init:9 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a -Statement [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$15 ] ( main:4::render_init:9 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$15 ] ) always clobbers reg byte a -Statement [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:4::render_init:9 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y -Statement [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:4::render_init:9 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a -Statement [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ) always clobbers reg byte a reg byte y -Statement [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ) always clobbers reg byte y -Statement [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ( main:4::render_init:9::render_screen_original:329 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:4::render_init:9::fill:327 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:4::render_init:9::fill:327 [ fill::addr#1 ] ) always clobbers reg byte a -Statement [374] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:4::sid_rnd_init:7 [ ] ) always clobbers reg byte a -Statement [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:4::sid_rnd_init:7 [ ] ) always clobbers reg byte a +Statement [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [321] *((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:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [322] (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:10::play_init:21 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [323] (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:10::play_init:21 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [326] *((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:10::play_init:21 [ ] ) always clobbers reg byte a +Statement [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a +Statement [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [343] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [345] (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:10::sprites_init:17 [ 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:64 [ sprites_init::s#2 sprites_init::s#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Statement [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [353] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [355] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [358] *((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:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$11 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#2 render_init::$11 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ render_init::i#2 render_init::i#1 ] +Statement [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a +Statement [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a +Statement [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$18 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$18 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ render_init::c#2 render_init::c#1 ] +Statement [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:72 [ render_init::c#2 render_init::c#1 ] +Statement [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:10::render_init:15 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#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:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ 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:78 [ 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 [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ) always clobbers reg byte a reg byte y +Statement [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ) always clobbers reg byte y +Statement [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:10::render_init:15::fill:363 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:10::render_init:15::fill:363 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [410] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a +Statement [411] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a +Statement [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y +Statement [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [431] (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 +Statement [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +Statement [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [441] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#95 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:10 [ current_piece_gfx#95 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#72 ] ( main:10 [ current_piece_gfx#17 current_piece_char#13 current_piece#72 ] ) always clobbers reg byte a +Statement [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:10 [ current_piece#10 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a +Statement [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:10 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a +Statement [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:10 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#78 current_xpos#104 current_piece_gfx#96 ] ( main:10 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#78 current_xpos#104 current_piece_gfx#96 ] ) always clobbers reg byte a +Statement [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ) always clobbers reg byte a +Statement [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] ) always clobbers reg byte a +Statement [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ) always clobbers reg byte a +Statement [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::screen_line#0 render_current::i#4 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Statement [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 [ current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] ( main:10::render_current:28 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] main:10::render_current:61 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#10 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 ] ) always clobbers reg byte a +Statement [87] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) [ render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [90] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:10::render_playfield:25 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:10::render_playfield:56 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 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 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#76 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#76 ] ) always clobbers reg byte a +Statement [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a +Statement [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:10::play_move_rotate:50 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:10::play_move_rotate:50::play_collision:109 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:147 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_leftright:45::play_collision:158 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:10::play_move_down:40::play_collision:182 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:10::play_move_leftright:45 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a +Statement [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:10::play_move_leftright:45 [ current_piece_char#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a +Statement [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:10::play_move_down:40 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_char#13 current_piece#77 ] ( main:10::play_move_down:40 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 current_piece#77 ] ) always clobbers reg byte a +Statement [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_char#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:10::play_spawn_current:23 [ play_spawn_current::piece_idx#1 ] main:10::play_move_down:40::play_spawn_current:191 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:10::play_move_down:40::play_remove_lines:189 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [230] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:10::play_move_down:40::play_remove_lines:189 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 [ current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:10::play_move_down:40::play_lock_current:187 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_char#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [251] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [253] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [254] (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:10::play_move_down:40::keyboard_event_pressed:167 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:273 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:279 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:285 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:34::keyboard_event_pressed:291 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Statement [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [302] (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:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [304] *((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:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:10::keyboard_event_scan:34 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [314] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:10::keyboard_event_scan:34::keyboard_matrix_read:264 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [315] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:10::keyboard_event_scan:34::keyboard_matrix_read:264 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_char#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Statement [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [321] *((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:10::play_init:21 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [322] (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:10::play_init:21 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [323] (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:10::play_init:21 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [326] *((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:10::play_init:21 [ ] ) always clobbers reg byte a +Statement [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a +Statement [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [343] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [345] (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:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [353] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [355] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [358] *((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:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a +Statement [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$11 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#2 render_init::$11 ] ) always clobbers reg byte a +Statement [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a +Statement [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a +Statement [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$18 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$18 ] ) always clobbers reg byte a +Statement [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y +Statement [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:10::render_init:15 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::orig#4 render_screen_original::y#6 render_screen_original::screen#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 render_screen_original::$3 ] ) always clobbers reg byte a reg byte y +Statement [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#2 render_screen_original::screen#5 render_screen_original::x#5 ] ) always clobbers reg byte y +Statement [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ( main:10::render_init:15::render_screen_original:365 [ render_screen_original::y#6 render_screen_original::orig#1 render_screen_original::screen#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:10::render_init:15::fill:363 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:10::render_init:15::fill:363 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [410] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a +Statement [411] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a +Statement [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ 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 y +Statement [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 [ 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 [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ 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 [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [431] (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 +Statement [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$3 ] ( [ irq::raster_next#0 irq::$3 ] ) always clobbers reg byte a +Statement [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [441] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] : zp ZP_WORD:6 , -Potential registers zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ current_ypos#10 current_ypos#78 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] : zp ZP_BYTE:14 , reg byte x , Potential registers zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:15 , reg byte x , -Potential registers zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:16 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] : zp ZP_WORD:16 , Potential registers zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:18 , reg byte x , Potential registers zp ZP_BYTE:19 [ play_move_rotate::return#1 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] : zp ZP_WORD:21 , +Potential registers zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] : zp ZP_WORD:21 , Potential registers zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , @@ -10171,7 +11518,7 @@ Potential registers zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] : Potential registers zp ZP_BYTE:31 [ play_collision::return#14 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:32 [ play_move_leftright::return#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] : zp ZP_WORD:34 , +Potential registers zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] : zp ZP_WORD:34 , Potential registers zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] : zp ZP_BYTE:36 , reg byte x , Potential registers zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] : zp ZP_WORD:37 , Potential registers zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] : zp ZP_BYTE:39 , reg byte x , @@ -10198,323 +11545,394 @@ Potential registers zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size Potential registers zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , Potential registers zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:61 , Potential registers zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:64 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:67 , -Potential registers zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:69 , reg byte x , -Potential registers zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:70 , reg byte x , -Potential registers zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:71 , reg byte x , -Potential registers zp ZP_WORD:72 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] : zp ZP_WORD:72 , -Potential registers zp ZP_WORD:74 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] : zp ZP_WORD:74 , -Potential registers zp ZP_BYTE:76 [ 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:76 , reg byte x , -Potential registers zp ZP_WORD:77 [ fill::addr#2 fill::addr#1 ] : zp ZP_WORD:77 , -Potential registers zp ZP_BYTE:79 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ main::key_event#0 ] : zp ZP_BYTE:80 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ play_move_down::key_event#0 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ play_move_down::return#3 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ main::$10 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ main::render#1 ] : zp ZP_BYTE:84 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ play_move_leftright::return#4 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:87 [ main::$11 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ main::render#2 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:89 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ play_move_rotate::return#4 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:64 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:65 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:66 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:67 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:69 , +Potential registers zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:71 , reg byte x , +Potential registers zp ZP_BYTE:72 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:72 , reg byte x , +Potential registers zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:73 , reg byte x , +Potential registers zp ZP_WORD:74 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] : zp ZP_WORD:74 , +Potential registers zp ZP_WORD:76 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] : zp ZP_WORD:76 , +Potential registers zp ZP_BYTE:78 [ 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:78 , reg byte x , +Potential registers zp ZP_WORD:79 [ fill::addr#2 fill::addr#1 ] : zp ZP_WORD:79 , +Potential registers zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:81 , +Potential registers zp ZP_BYTE:82 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ irq_raster_next#0 ] : zp ZP_BYTE:83 , +Potential registers zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:84 , +Potential registers zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:85 , +Potential registers zp ZP_BYTE:86 [ irq_cnt#0 ] : zp ZP_BYTE:86 , +Potential registers zp ZP_BYTE:87 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:88 [ main::key_event#0 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:89 [ play_move_down::key_event#0 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:90 [ play_move_down::return#3 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:91 [ main::$12 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ main::render#3 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:93 [ render_current::screen_line#0 ] : zp ZP_WORD:93 , -Potential registers zp ZP_BYTE:95 [ render_current::current_cell#0 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ render_playfield::$1 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ play_move_rotate::$2 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ play_collision::return#13 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ play_move_rotate::$6 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ play_move_rotate::$4 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:101 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:101 , -Potential registers zp ZP_WORD:103 [ play_collision::playfield_line#0 ] : zp ZP_WORD:103 , -Potential registers zp ZP_BYTE:105 [ play_collision::i#1 ] : zp ZP_BYTE:105 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ play_collision::$7 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ play_collision::return#12 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ play_move_leftright::$4 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ play_collision::return#1 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ play_move_leftright::$8 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:111 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ play_move_down::$2 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ play_collision::return#0 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:114 [ play_move_down::$12 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:115 [ play_spawn_current::$3 ] : zp ZP_BYTE:115 , reg byte x , -Potential registers zp ZP_BYTE:116 [ sid_rnd::return#2 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ play_spawn_current::$1 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ sid_rnd::return#0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ play_remove_lines::c#0 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:120 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:120 , -Potential registers zp ZP_BYTE:122 [ play_lock_current::i#1 ] : zp ZP_BYTE:122 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:123 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:124 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:129 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:133 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:134 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:136 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:137 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:138 [ keyboard_modifiers#5 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:144 [ play_init::$1 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:145 [ render_init::$10 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:146 [ render_init::$15 ] : zp ZP_WORD:146 , -Potential registers zp ZP_BYTE:148 [ render_screen_original::$3 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ main::render#1 ] : zp ZP_BYTE:92 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ play_move_leftright::return#4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ main::$13 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ main::render#2 ] : zp ZP_BYTE:96 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ play_move_rotate::return#4 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ main::$14 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ main::render#3 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:101 [ render_current::screen_line#0 ] : zp ZP_WORD:101 , +Potential registers zp ZP_BYTE:103 [ render_current::current_cell#0 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ render_playfield::$2 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ play_move_rotate::$2 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ play_collision::return#13 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ play_move_rotate::$6 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ play_move_rotate::$4 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:109 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:109 , +Potential registers zp ZP_WORD:111 [ play_collision::playfield_line#0 ] : zp ZP_WORD:111 , +Potential registers zp ZP_BYTE:113 [ play_collision::i#1 ] : zp ZP_BYTE:113 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:114 [ play_collision::$7 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:115 [ play_collision::return#12 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:116 [ play_move_leftright::$4 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:117 [ play_collision::return#1 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ play_move_leftright::$8 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ play_move_down::$2 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ play_collision::return#0 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ play_move_down::$12 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ play_spawn_current::$3 ] : zp ZP_BYTE:123 , reg byte x , +Potential registers zp ZP_BYTE:124 [ sid_rnd::return#2 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ play_spawn_current::$1 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ sid_rnd::return#0 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ play_remove_lines::c#0 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:128 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:128 , +Potential registers zp ZP_BYTE:130 [ play_lock_current::i#1 ] : zp ZP_BYTE:130 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:132 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:137 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:138 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:139 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:140 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:141 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:142 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:143 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:144 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:145 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:146 [ keyboard_modifiers#5 ] : zp ZP_BYTE:146 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:147 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:148 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:149 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:150 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:151 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:152 [ play_init::$1 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:153 [ sprites_init::s2#0 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:154 [ render_init::$11 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:155 [ render_init::$18 ] : zp ZP_WORD:155 , +Potential registers zp ZP_BYTE:157 [ render_screen_original::$3 ] : zp ZP_BYTE:157 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:158 [ irq::ypos#0 ] : zp ZP_BYTE:158 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:159 [ irq::ptr#0 ] : zp ZP_BYTE:159 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:160 [ irq::ptr#1 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:161 [ irq::ptr#2 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:162 [ irq_cnt#1 ] : zp ZP_BYTE:162 , +Potential registers zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:163 , +Potential registers zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:164 , +Potential registers zp ZP_BYTE:165 [ irq::$3 ] : zp ZP_BYTE:165 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:166 [ irq_cnt#13 ] : zp ZP_BYTE:166 , +Potential registers zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:167 , +Potential registers zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:168 , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:131 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:133 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:135 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:137 [ keyboard_event_scan::$26 ] -Uplift Scope [play_collision] 3,823.33: zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 2,002: zp ZP_BYTE:106 [ play_collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] 161.77: zp ZP_BYTE:105 [ play_collision::i#1 ] 141.57: zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] 78.71: zp ZP_WORD:103 [ play_collision::playfield_line#0 ] 47.76: zp ZP_WORD:101 [ play_collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 4: zp ZP_BYTE:98 [ play_collision::return#13 ] 4: zp ZP_BYTE:107 [ play_collision::return#12 ] 4: zp ZP_BYTE:109 [ play_collision::return#1 ] 4: zp ZP_BYTE:113 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:31 [ play_collision::return#14 ] -Uplift Scope [play_lock_current] 3,823.33: zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] 233.67: zp ZP_BYTE:122 [ play_lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] 110.2: zp ZP_WORD:120 [ play_lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplift Scope [play_remove_lines] 1,915.77: zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 600.6: zp ZP_BYTE:119 [ play_remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:95 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:93 [ render_current::screen_line#0 ] -Uplift Scope [] 5,895.76: zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 79.37: zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] 32.79: zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] 27.73: zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] 26: zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] 20: zp ZP_BYTE:138 [ keyboard_modifiers#5 ] 18.5: zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] 15.91: zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] 14.91: zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] 13.23: zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] 11.6: zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 9.04: zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] 8.96: zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:96 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [render_screen_original] 784.43: zp ZP_BYTE:76 [ 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 ] 735.02: zp ZP_WORD:74 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] 202: zp ZP_BYTE:148 [ render_screen_original::$3 ] 140.97: zp ZP_WORD:72 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] 17.72: zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplift Scope [render_init] 252.5: zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:146 [ render_init::$15 ] 27.83: zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:145 [ render_init::$10 ] 19.64: zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] -Uplift Scope [play_spawn_current] 253.5: zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:117 [ play_spawn_current::$1 ] 0.18: zp ZP_BYTE:115 [ play_spawn_current::$3 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:128 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:127 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] -Uplift Scope [sid_rnd] 202: zp ZP_BYTE:116 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:118 [ sid_rnd::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:83 [ main::$10 ] 22: zp ZP_BYTE:87 [ main::$11 ] 22: zp ZP_BYTE:91 [ main::$12 ] 22: zp ZP_BYTE:92 [ main::render#3 ] 4.4: zp ZP_BYTE:84 [ main::render#1 ] 4.4: zp ZP_BYTE:88 [ main::render#2 ] 4: zp ZP_BYTE:80 [ main::key_event#0 ] -Uplift Scope [play_init] 23.83: zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:144 [ play_init::$1 ] 13.93: zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:82 [ play_move_down::return#3 ] 20: zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 6.5: zp ZP_BYTE:81 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:112 [ play_move_down::$2 ] 4: zp ZP_BYTE:114 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#2 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:90 [ play_move_rotate::return#4 ] 8.89: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:89 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:97 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:99 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:100 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#1 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:86 [ play_move_leftright::return#4 ] 7.5: zp ZP_BYTE:85 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:108 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:110 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#1 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:111 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:123 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:125 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:130 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:132 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:134 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:136 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:126 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [fill] 33: zp ZP_WORD:77 [ fill::addr#2 fill::addr#1 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:79 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:147 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:148 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:149 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:150 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:139 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:141 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:143 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:145 [ keyboard_event_scan::$26 ] +Uplift Scope [play_collision] 3,823.33: zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 2,002: zp ZP_BYTE:114 [ play_collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] 161.77: zp ZP_BYTE:113 [ play_collision::i#1 ] 141.57: zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] 78.71: zp ZP_WORD:111 [ play_collision::playfield_line#0 ] 47.76: zp ZP_WORD:109 [ play_collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 4: zp ZP_BYTE:106 [ play_collision::return#13 ] 4: zp ZP_BYTE:115 [ play_collision::return#12 ] 4: zp ZP_BYTE:117 [ play_collision::return#1 ] 4: zp ZP_BYTE:121 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:31 [ play_collision::return#14 ] +Uplift Scope [render_current] 2,544.35: zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] 1,001: zp ZP_BYTE:103 [ render_current::current_cell#0 ] 163.38: zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] 103.02: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:101 [ render_current::screen_line#0 ] +Uplift Scope [play_lock_current] 3,823.33: zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] 233.67: zp ZP_BYTE:130 [ play_lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] 110.2: zp ZP_WORD:128 [ play_lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplift Scope [play_remove_lines] 1,915.77: zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 600.6: zp ZP_BYTE:127 [ play_remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplift Scope [] 5,895.76: zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 74.29: zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] 61.29: zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] 32.79: zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] 27.73: zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] 26: zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] 20: zp ZP_BYTE:146 [ keyboard_modifiers#5 ] 20: zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:166 [ irq_cnt#13 ] 20: zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] 18.5: zp ZP_BYTE:4 [ current_ypos#10 current_ypos#78 ] 15.91: zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] 14.91: zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] 12.67: zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] 11.6: zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 9.04: zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] 8.96: zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 8.33: zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] 4: zp ZP_BYTE:162 [ irq_cnt#1 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] 1: zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] 0.33: zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] 0.29: zp ZP_BYTE:86 [ irq_cnt#0 ] 0.25: zp ZP_BYTE:83 [ irq_raster_next#0 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:104 [ render_playfield::$2 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [render_screen_original] 784.43: zp ZP_BYTE:78 [ 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 ] 735.02: zp ZP_WORD:76 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] 202: zp ZP_BYTE:157 [ render_screen_original::$3 ] 140.97: zp ZP_WORD:74 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] 17.72: zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplift Scope [render_init] 252.5: zp ZP_BYTE:72 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:155 [ render_init::$18 ] 27.83: zp ZP_WORD:69 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:66 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:154 [ render_init::$11 ] 19.64: zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:67 [ render_init::li#2 render_init::li#1 ] +Uplift Scope [play_spawn_current] 253.5: zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:125 [ play_spawn_current::$1 ] 0.18: zp ZP_BYTE:123 [ play_spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:136 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:135 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:151 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 202: zp ZP_BYTE:124 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:126 [ sid_rnd::return#0 ] +Uplift Scope [main] 22: zp ZP_BYTE:91 [ main::$12 ] 22: zp ZP_BYTE:95 [ main::$13 ] 22: zp ZP_BYTE:99 [ main::$14 ] 22: zp ZP_BYTE:100 [ main::render#3 ] 4.4: zp ZP_BYTE:92 [ main::render#1 ] 4.4: zp ZP_BYTE:96 [ main::render#2 ] 4: zp ZP_BYTE:88 [ main::key_event#0 ] +Uplift Scope [play_init] 23.83: zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:152 [ play_init::$1 ] 13.93: zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:64 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:153 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:90 [ play_move_down::return#3 ] 20: zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 6.5: zp ZP_BYTE:89 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:120 [ play_move_down::$2 ] 4: zp ZP_BYTE:122 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#2 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:98 [ play_move_rotate::return#4 ] 8.89: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:97 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:105 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:107 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:108 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#1 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:94 [ play_move_leftright::return#4 ] 7.5: zp ZP_BYTE:93 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:116 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:118 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#1 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:119 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:131 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:133 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:138 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:140 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:142 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:144 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:134 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [fill] 33: zp ZP_WORD:79 [ fill::addr#2 fill::addr#1 ] +Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:87 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [irq] 12.67: zp ZP_BYTE:82 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] 4: zp ZP_BYTE:161 [ irq::ptr#2 ] 4: zp ZP_BYTE:165 [ irq::$3 ] 3: zp ZP_BYTE:159 [ irq::ptr#0 ] 2.67: zp ZP_BYTE:160 [ irq::ptr#1 ] 2.5: zp ZP_BYTE:158 [ irq::ypos#0 ] Uplift Scope [sid_rnd_init] +Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 614519 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:131 [ keyboard_event_scan::$14 ] zp ZP_BYTE:133 [ keyboard_event_scan::$18 ] zp ZP_BYTE:135 [ keyboard_event_scan::$22 ] zp ZP_BYTE:137 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 621477 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:139 [ keyboard_event_scan::$14 ] zp ZP_BYTE:141 [ keyboard_event_scan::$18 ] zp ZP_BYTE:143 [ keyboard_event_scan::$22 ] zp ZP_BYTE:145 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [play_collision] best 599519 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:105 [ play_collision::i#1 ] zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:103 [ play_collision::playfield_line#0 ] zp ZP_WORD:101 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:98 [ play_collision::return#13 ] zp ZP_BYTE:107 [ play_collision::return#12 ] zp ZP_BYTE:109 [ play_collision::return#1 ] zp ZP_BYTE:113 [ play_collision::return#0 ] zp ZP_BYTE:31 [ play_collision::return#14 ] +Uplifting [play_collision] best 606477 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:113 [ play_collision::i#1 ] zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:111 [ play_collision::playfield_line#0 ] zp ZP_WORD:109 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:106 [ play_collision::return#13 ] zp ZP_BYTE:115 [ play_collision::return#12 ] zp ZP_BYTE:117 [ play_collision::return#1 ] zp ZP_BYTE:121 [ play_collision::return#0 ] zp ZP_BYTE:31 [ play_collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [play_lock_current] best 590519 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:122 [ play_lock_current::i#1 ] zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:120 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Limited combination testing to 100 combinations of 729 possible. -Uplifting [play_remove_lines] best 576819 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:119 [ play_remove_lines::c#0 ] zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Limited combination testing to 100 combinations of 1728 possible. -Uplifting [render_current] best 561819 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:93 [ render_current::screen_line#0 ] +Uplifting [render_current] best 591477 combination zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:101 [ render_current::screen_line#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [] best 561782 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] reg byte a [ keyboard_modifiers#5 ] reg byte x [ current_ypos#10 current_ypos#71 ] zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Uplifting [play_lock_current] best 582477 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:130 [ play_lock_current::i#1 ] zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:128 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Limited combination testing to 100 combinations of 729 possible. +Uplifting [play_remove_lines] best 568777 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:127 [ play_remove_lines::c#0 ] zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Limited combination testing to 100 combinations of 1728 possible. +Uplifting [] best 568740 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] reg byte a [ keyboard_modifiers#5 ] zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] zp ZP_BYTE:166 [ irq_cnt#13 ] zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] reg byte x [ current_ypos#10 current_ypos#78 ] zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:162 [ irq_cnt#1 ] zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] zp ZP_BYTE:86 [ irq_cnt#0 ] zp ZP_BYTE:83 [ irq_raster_next#0 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [render_playfield] best 552382 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_screen_original] best 549682 combination 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:74 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] reg byte a [ render_screen_original::$3 ] zp ZP_WORD:72 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_init] best 548542 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:146 [ render_init::$15 ] zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$10 ] zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] -Uplifting [play_spawn_current] best 547238 combination reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte a [ play_spawn_current::$1 ] zp ZP_BYTE:115 [ play_spawn_current::$3 ] -Uplifting [keyboard_matrix_read] best 546032 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [sid_rnd] best 545129 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [main] best 544889 combination reg byte a [ main::$10 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] zp ZP_BYTE:84 [ main::render#1 ] zp ZP_BYTE:88 [ main::render#2 ] zp ZP_BYTE:80 [ main::key_event#0 ] +Uplifting [render_playfield] best 559340 combination zp ZP_WORD:16 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_screen_original] best 556640 combination 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:76 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] reg byte a [ render_screen_original::$3 ] zp ZP_WORD:74 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_init] best 555500 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:155 [ render_init::$18 ] zp ZP_WORD:69 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$11 ] zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:67 [ render_init::li#2 render_init::li#1 ] +Uplifting [play_spawn_current] best 554196 combination reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte a [ play_spawn_current::$1 ] zp ZP_BYTE:123 [ play_spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 552990 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [sid_rnd] best 552087 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [main] best 551847 combination reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::render#3 ] zp ZP_BYTE:92 [ main::render#1 ] zp ZP_BYTE:96 [ main::render#2 ] zp ZP_BYTE:88 [ main::key_event#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [play_init] best 544719 combination reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] -Uplifting [play_move_down] best 544605 combination reg byte a [ play_move_down::return#3 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:114 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#2 ] +Uplifting [play_init] best 551677 combination reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [sprites_init] best 551507 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [play_move_down] best 551393 combination reg byte a [ play_move_down::return#3 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:122 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#2 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 544503 combination reg byte a [ play_move_rotate::return#4 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:99 [ play_move_rotate::$6 ] zp ZP_BYTE:100 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#1 ] +Uplifting [play_move_rotate] best 551291 combination reg byte a [ play_move_rotate::return#4 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:107 [ play_move_rotate::$6 ] zp ZP_BYTE:108 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#1 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 544395 combination reg byte a [ play_move_leftright::return#4 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#1 ] +Uplifting [play_move_leftright] best 551183 combination reg byte a [ play_move_leftright::return#4 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [keyboard_event_pressed] best 544375 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:132 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:134 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:136 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:126 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 551163 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:140 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:142 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:144 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:134 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [fill] best 544375 combination zp ZP_WORD:77 [ fill::addr#2 fill::addr#1 ] -Uplifting [keyboard_event_get] best 544279 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [sid_rnd_init] best 544279 combination +Uplifting [fill] best 551163 combination zp ZP_WORD:79 [ fill::addr#2 fill::addr#1 ] +Uplifting [keyboard_event_get] best 551067 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [irq] best 551038 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte x [ irq::ptr#2 ] reg byte a [ irq::$3 ] reg byte a [ irq::ptr#0 ] zp ZP_BYTE:160 [ irq::ptr#1 ] zp ZP_BYTE:158 [ irq::ypos#0 ] +Limited combination testing to 100 combinations of 3072 possible. +Uplifting [sid_rnd_init] best 551038 combination +Uplifting [sprites_irq_init] best 551038 combination Attempting to uplift remaining variables inzp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 544279 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 551038 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Uplifting [play_collision] best 544279 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Uplifting [play_collision] best 551038 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Uplifting [play_lock_current] best 544279 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Uplifting [render_current] best 544279 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Uplifting [play_lock_current] best 551038 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +Uplifting [render_current] best 551038 combination zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 529279 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 536038 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 529279 combination zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] -Uplifting [render_current] best 529279 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Uplifting [play_remove_lines] best 536038 combination zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] +Uplifting [render_current] best 536038 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 529279 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 536038 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Uplifting [play_lock_current] best 529279 combination zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Uplifting [play_lock_current] best 536038 combination zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Uplifting [play_collision] best 529279 combination zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Uplifting [play_collision] best 536038 combination zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Uplifting [keyboard_event_scan] best 529279 combination zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 536038 combination zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 529279 combination zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:119 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 529279 combination zp ZP_BYTE:119 [ play_remove_lines::c#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:122 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 529279 combination zp ZP_BYTE:122 [ play_lock_current::i#1 ] +Uplifting [play_remove_lines] best 536038 combination zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:127 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 536038 combination zp ZP_BYTE:127 [ play_remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 536038 combination zp ZP_BYTE:130 [ play_lock_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 529279 combination zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 536038 combination zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 529279 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 536038 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 529279 combination zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Uplifting [render_current] best 529279 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:105 [ play_collision::i#1 ] -Uplifting [play_collision] best 529279 combination zp ZP_BYTE:105 [ play_collision::i#1 ] +Uplifting [play_remove_lines] best 536038 combination zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] +Uplifting [render_current] best 536038 combination zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:113 [ play_collision::i#1 ] +Uplifting [play_collision] best 536038 combination zp ZP_BYTE:113 [ play_collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Uplifting [play_collision] best 529279 combination zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 529279 combination zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] +Uplifting [play_collision] best 536038 combination zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 536038 combination zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 529279 combination zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 536038 combination zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 529279 combination zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 536038 combination zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Uplifting [render_current] best 529279 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Uplifting [render_current] best 536038 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplifting [play_lock_current] best 529279 combination zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] -Uplifting [] best 529279 combination zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] +Uplifting [play_lock_current] best 536038 combination zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] +Uplifting [] best 536038 combination zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] -Uplifting [] best 529279 combination zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] -Uplifting [render_init] best 529279 combination zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] +Uplifting [] best 536038 combination zp ZP_BYTE:40 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:163 [ irq_sprite_ypos#2 ] +Uplifting [] best 536038 combination zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:164 [ irq_sprite_ptr#2 ] +Uplifting [] best 536038 combination zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:166 [ irq_cnt#13 ] +Uplifting [] best 536038 combination zp ZP_BYTE:166 [ irq_cnt#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:167 [ irq_sprite_ypos#1 ] +Uplifting [] best 536038 combination zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:168 [ irq_sprite_ptr#1 ] +Uplifting [] best 536038 combination zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] +Uplifting [render_init] best 536038 combination zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 529266 combination reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 529266 combination zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [play_collision] best 536025 combination reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 536025 combination zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] -Uplifting [] best 529266 combination zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Uplifting [] best 536025 combination zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 536025 combination zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 529266 combination zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] -Uplifting [] best 529266 combination zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] +Uplifting [play_init] best 536025 combination zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] +Uplifting [] best 536025 combination zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] Attempting to uplift remaining variables inzp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Uplifting [] best 529255 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Uplifting [] best 536014 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Uplifting [play_collision] best 529242 combination reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Uplifting [play_collision] best 536001 combination reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Uplifting [play_collision] best 529242 combination zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +Uplifting [play_collision] best 536001 combination zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] -Uplifting [] best 529242 combination zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +Uplifting [] best 536001 combination zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Uplifting [] best 529242 combination zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Uplifting [] best 536001 combination zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 529242 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:84 [ main::render#1 ] -Uplifting [main] best 529242 combination zp ZP_BYTE:84 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:88 [ main::render#2 ] -Uplifting [main] best 529242 combination zp ZP_BYTE:88 [ main::render#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ main::key_event#0 ] -Uplifting [main] best 529242 combination zp ZP_BYTE:80 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_collision::return#13 ] -Uplifting [play_collision] best 529236 combination reg byte a [ play_collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 529230 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:100 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 529224 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:107 [ play_collision::return#12 ] -Uplifting [play_collision] best 529218 combination reg byte a [ play_collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:109 [ play_collision::return#1 ] -Uplifting [play_collision] best 529212 combination reg byte a [ play_collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ play_collision::return#0 ] -Uplifting [play_collision] best 529206 combination reg byte a [ play_collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:114 [ play_move_down::$12 ] -Uplifting [play_move_down] best 529200 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:131 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 529194 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:132 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 529188 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:133 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 529182 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:134 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 529176 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 529170 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:136 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 529164 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:137 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 529158 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [play_move_rotate] best 536001 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +Uplifting [] best 536001 combination zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ main::render#1 ] +Uplifting [main] best 536001 combination zp ZP_BYTE:92 [ main::render#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:96 [ main::render#2 ] +Uplifting [main] best 536001 combination zp ZP_BYTE:96 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:88 [ main::key_event#0 ] +Uplifting [main] best 536001 combination zp ZP_BYTE:88 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:106 [ play_collision::return#13 ] +Uplifting [play_collision] best 535995 combination reg byte a [ play_collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:107 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 535989 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 535983 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:115 [ play_collision::return#12 ] +Uplifting [play_collision] best 535977 combination reg byte a [ play_collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ play_collision::return#1 ] +Uplifting [play_collision] best 535971 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ play_collision::return#0 ] +Uplifting [play_collision] best 535965 combination reg byte a [ play_collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:122 [ play_move_down::$12 ] +Uplifting [play_move_down] best 535959 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:139 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 535953 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:140 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 535947 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:141 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 535941 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:142 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 535935 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:143 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 535929 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:144 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 535923 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:145 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 535917 combination reg byte a [ keyboard_event_scan::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:162 [ irq_cnt#1 ] +Uplifting [] best 535917 combination zp ZP_BYTE:162 [ irq_cnt#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ play_move_rotate::return#1 ] -Uplifting [play_move_rotate] best 529122 combination reg byte a [ play_move_rotate::return#1 ] +Uplifting [play_move_rotate] best 535881 combination reg byte a [ play_move_rotate::return#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_move_leftright::return#1 ] -Uplifting [play_move_leftright] best 529086 combination reg byte a [ play_move_leftright::return#1 ] +Uplifting [play_move_leftright] best 535845 combination reg byte a [ play_move_leftright::return#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_down::return#2 ] -Uplifting [play_move_down] best 529070 combination reg byte x [ play_move_down::return#2 ] +Uplifting [play_move_down] best 535829 combination reg byte x [ play_move_down::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:160 [ irq::ptr#1 ] +Uplifting [irq] best 535817 combination reg byte x [ irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:158 [ irq::ypos#0 ] +Uplifting [irq] best 535802 combination reg byte a [ irq::ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Uplifting [] best 529070 combination zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 529070 combination zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:126 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 529052 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [] best 535802 combination zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 535802 combination zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:134 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 535784 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ play_collision::return#14 ] -Uplifting [play_collision] best 529025 combination reg byte a [ play_collision::return#14 ] +Uplifting [play_collision] best 535757 combination reg byte a [ play_collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 529025 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:115 [ play_spawn_current::$3 ] -Uplifting [play_spawn_current] best 529025 combination zp ZP_BYTE:115 [ play_spawn_current::$3 ] +Uplifting [keyboard_event_pressed] best 535757 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:84 [ irq_sprite_ypos#0 ] +Uplifting [] best 535757 combination zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:85 [ irq_sprite_ptr#0 ] +Uplifting [] best 535757 combination zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:86 [ irq_cnt#0 ] +Uplifting [] best 535757 combination zp ZP_BYTE:86 [ irq_cnt#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:83 [ irq_raster_next#0 ] +Uplifting [] best 535757 combination zp ZP_BYTE:83 [ irq_raster_next#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:123 [ play_spawn_current::$3 ] +Uplifting [play_spawn_current] best 535757 combination zp ZP_BYTE:123 [ play_spawn_current::$3 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] ] with [ zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] ] with [ zp ZP_WORD:101 [ play_collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:84 [ main::render#1 ] ] with [ zp ZP_BYTE:88 [ main::render#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] ] with [ zp ZP_WORD:109 [ play_collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:81 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:83 [ irq_raster_next#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:84 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:163 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:85 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:164 [ irq_sprite_ptr#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:86 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:162 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:92 [ main::render#1 ] ] with [ zp ZP_BYTE:96 [ main::render#2 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] with [ zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:71 [ render_screen_original::y#6 render_screen_original::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 ] ] with [ zp ZP_BYTE:115 [ play_spawn_current::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:65 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:71 [ render_init::l#4 render_init::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:73 [ render_screen_original::y#6 render_screen_original::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 ] ] with [ zp ZP_BYTE:123 [ play_spawn_current::$3 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] ] with [ zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] ] with [ zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:72 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] ] with [ zp ZP_WORD:77 [ fill::addr#2 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:120 [ play_lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] with [ zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:119 [ play_remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 ] ] with [ zp ZP_BYTE:124 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 ] ] with [ zp ZP_WORD:16 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:67 [ render_init::li#2 render_init::li#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:69 [ render_init::line#4 render_init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:74 [ render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 ] ] with [ zp ZP_WORD:79 [ fill::addr#2 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:128 [ play_lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] with [ zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:127 [ play_remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 ] ] with [ zp ZP_BYTE:132 [ keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:122 [ play_lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:129 [ keyboard_event_scan::row_scan#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] ] with [ zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] ] with [ zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] -Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] ] with [ zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] ] with [ zp ZP_WORD:74 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] ] with [ zp ZP_WORD:146 [ render_init::$15 ] ] -Coalescing zero page register [ zp ZP_WORD:93 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:103 [ play_collision::playfield_line#0 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:130 [ play_lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:137 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 ] ] with [ zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] ] with [ zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] ] with [ zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 ] ] with [ zp ZP_WORD:76 [ render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 ] ] with [ zp ZP_WORD:155 [ render_init::$18 ] ] +Coalescing zero page register [ zp ZP_BYTE:84 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:167 [ irq_sprite_ypos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:85 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:168 [ irq_sprite_ptr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:86 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:166 [ irq_cnt#13 ] ] +Coalescing zero page register [ zp ZP_WORD:101 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:111 [ play_collision::playfield_line#0 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 play_collision::l#6 play_collision::l#1 ] -Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$15 ] +Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$18 ] Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Allocated (was zp ZP_WORD:37) zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_piece_char#21 current_piece_char#16 current_piece_char#11 current_piece_char#13 ] Allocated (was zp ZP_BYTE:59) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated (was zp ZP_BYTE:80) zp ZP_BYTE:20 [ main::key_event#0 ] -Allocated (was zp ZP_BYTE:84) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:93) zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:105) zp ZP_BYTE:24 [ play_collision::i#1 ] +Allocated (was zp ZP_BYTE:81) zp ZP_BYTE:20 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +Allocated (was zp ZP_BYTE:84) zp ZP_BYTE:21 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:85) zp ZP_BYTE:22 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +Allocated (was zp ZP_BYTE:86) zp ZP_BYTE:23 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] +Allocated (was zp ZP_BYTE:88) zp ZP_BYTE:24 [ main::key_event#0 ] +Allocated (was zp ZP_BYTE:92) zp ZP_BYTE:25 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:101) zp ZP_WORD:26 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:113) zp ZP_BYTE:28 [ play_collision::i#1 ] +Interrupt procedure irq clobbers AXCNZV +Removing interrupt register storage sty regy+1 in SEG862 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG900 [441] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG900 [441] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -10522,22 +11940,41 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(bbegin) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f .label CIA2_PORT_A = $dd00 .label CIA2_PORT_A_DDR = $dd02 + .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const WHITE = 1 .const CYAN = 3 @@ -10562,10 +11999,12 @@ ASSEMBLER BEFORE OPTIMIZATION .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .label PLAYFIELD_SCREEN_ORIGINAL = $2c00 + .const IRQ_RASTER_FIRST = $31 .const current_movedown_slow = $32 .const current_movedown_fast = 5 .const COLLISION_NONE = 0 @@ -10573,7 +12012,13 @@ ASSEMBLER BEFORE OPTIMIZATION .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $13 + .label irq_raster_next = $14 + .label irq_sprite_ypos = $15 + .label irq_sprite_ptr = $16 + .label irq_cnt = $17 .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 @@ -10584,16 +12029,16 @@ ASSEMBLER BEFORE OPTIMIZATION .label current_piece_12 = 5 .label current_xpos_48 = 4 .label current_piece_gfx_53 = 5 - .label current_piece_char_62 = 7 - .label current_xpos_96 = 4 - .label current_piece_gfx_87 = 5 - .label current_piece_gfx_88 = 5 - .label current_piece_char_75 = 7 - .label current_piece_char_76 = 7 - .label current_piece_71 = 5 - .label current_piece_72 = 5 + .label current_piece_char_63 = 7 + .label current_xpos_104 = 4 + .label current_piece_gfx_95 = 5 + .label current_piece_gfx_96 = 5 + .label current_piece_char_83 = 7 + .label current_piece_char_84 = 7 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 + .label current_piece_76 = 5 //SEG2 @begin bbegin: jmp b14 @@ -10601,517 +12046,575 @@ bbegin: b14: //SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "nes-screen.imap" }} //SEG5 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} -//SEG6 [3] phi from @14 to @27 [phi:@14->@27] -b27_from_b14: - jmp b27 -//SEG7 @27 -b27: -//SEG8 [4] call main -//SEG9 [6] phi from @27 to main [phi:@27->main] -main_from_b27: + jmp b18 +//SEG6 @18 +b18: +//SEG7 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} + jmp b19 +//SEG8 @19 +b19: +//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG10 [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos +//SEG11 [6] phi from @19 to toSpritePtr1 [phi:@19->toSpritePtr1] +toSpritePtr1_from_b19: + jmp toSpritePtr1 +//SEG12 toSpritePtr1 +toSpritePtr1: + jmp b31 +//SEG13 @31 +b31: +//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta irq_sprite_ptr +//SEG15 [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG16 [9] phi from @31 to @30 [phi:@31->@30] +b30_from_b31: + jmp b30 +//SEG17 @30 +b30: +//SEG18 [10] call main +//SEG19 [12] phi from @30 to main [phi:@30->main] +main_from_b30: jsr main -//SEG10 [5] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG20 [11] phi from @30 to @end [phi:@30->@end] +bend_from_b30: jmp bend -//SEG11 @end +//SEG21 @end bend: -//SEG12 main +//SEG22 main main: { - .label key_event = $14 - .label render = $15 - //SEG13 [7] call sid_rnd_init + .label key_event = $18 + .label render = $19 + //SEG23 [13] call sid_rnd_init jsr sid_rnd_init jmp b21 - //SEG14 main::@21 + //SEG24 main::@21 b21: - //SEG15 asm { sei } + //SEG25 asm { sei } sei - //SEG16 [9] call render_init - //SEG17 [316] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG26 [15] call render_init + //SEG27 [352] phi from main::@21 to render_init [phi:main::@21->render_init] render_init_from_b21: jsr render_init - //SEG18 [10] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG28 [16] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG19 main::@22 + //SEG29 main::@22 b22: - //SEG20 [11] call play_init - //SEG21 [305] phi from main::@22 to play_init [phi:main::@22->play_init] - play_init_from_b22: - jsr play_init - //SEG22 [12] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG30 [17] call sprites_init + jsr sprites_init + //SEG31 [18] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG23 main::@23 + //SEG32 main::@23 b23: - //SEG24 [13] call play_spawn_current - //SEG25 [185] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] - play_spawn_current_from_b23: - jsr play_spawn_current - //SEG26 [14] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG33 [19] call sprites_irq_init + jsr sprites_irq_init + //SEG34 [20] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG27 main::@24 + //SEG35 main::@24 b24: - //SEG28 [15] call render_playfield - //SEG29 [73] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] - render_playfield_from_b24: - jsr render_playfield + //SEG36 [21] call play_init + //SEG37 [317] phi from main::@24 to play_init [phi:main::@24->play_init] + play_init_from_b24: + jsr play_init + //SEG38 [22] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + b25_from_b24: jmp b25 - //SEG30 main::@25 + //SEG39 main::@25 b25: - //SEG31 [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG40 [23] call play_spawn_current + //SEG41 [197] phi from main::@25 to play_spawn_current [phi:main::@25->play_spawn_current] + play_spawn_current_from_b25: + jsr play_spawn_current + //SEG42 [24] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + b26_from_b25: + jmp b26 + //SEG43 main::@26 + b26: + //SEG44 [25] call render_playfield + //SEG45 [85] phi from main::@26 to render_playfield [phi:main::@26->render_playfield] + render_playfield_from_b26: + jsr render_playfield + jmp b27 + //SEG46 main::@27 + b27: + //SEG47 [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_95 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG32 [17] (byte~) current_piece_char#75 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 + sta current_piece_gfx_95+1 + //SEG48 [27] (byte~) current_piece_char#83 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_75 - //SEG33 [18] call render_current - //SEG34 [53] phi from main::@25 to render_current [phi:main::@25->render_current] - render_current_from_b25: - //SEG35 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#75 [phi:main::@25->render_current#0] -- register_copy - //SEG36 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG37 [53] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + sta current_piece_char_83 + //SEG49 [28] call render_current + //SEG50 [63] phi from main::@27 to render_current [phi:main::@27->render_current] + render_current_from_b27: + //SEG51 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#83 [phi:main::@27->render_current#0] -- register_copy + //SEG52 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#95 [phi:main::@27->render_current#1] -- register_copy + //SEG53 [63] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_48 - //SEG38 [53] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + //SEG54 [63] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG39 [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG55 [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG40 [20] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - b1_from_b25: - //SEG41 [20] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG56 [30] phi from main::@27 to main::@1 [phi:main::@27->main::@1] + b1_from_b27: + //SEG57 [30] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG42 [20] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG58 [30] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG43 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@25->main::@1#2] -- register_copy - //SEG44 [20] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG59 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@27->main::@1#2] -- register_copy + //SEG60 [30] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG45 [20] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG61 [30] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG46 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy - //SEG47 [20] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG62 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@27->main::@1#5] -- register_copy + //SEG63 [30] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG48 [20] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy + //SEG64 [30] phi (byte*) current_piece#16 = (byte*~) current_piece#72 [phi:main::@27->main::@1#7] -- register_copy jmp b1 - //SEG49 main::@1 + //SEG65 main::@1 b1: jmp b4 - //SEG50 main::@4 + //SEG66 main::@4 b4: - //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG67 [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG52 main::@7 + //SEG68 main::@7 b7: - //SEG53 [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG69 [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG54 main::@9 + //SEG70 main::@9 b9: - //SEG55 [23] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG71 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [24] call keyboard_event_scan - //SEG57 [249] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG72 [34] call keyboard_event_scan + //SEG73 [261] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG58 [25] phi from main::@9 to main::@27 [phi:main::@9->main::@27] - b27_from_b9: - jmp b27 - //SEG59 main::@27 - b27: - //SEG60 [26] call keyboard_event_get - jsr keyboard_event_get - //SEG61 [27] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - jmp b28 - //SEG62 main::@28 - b28: - //SEG63 [28] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa - sta key_event - //SEG64 [29] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG65 [30] call play_move_down - jsr play_move_down - //SEG66 [31] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx - txa + //SEG74 [35] phi from main::@9 to main::@29 [phi:main::@9->main::@29] + b29_from_b9: jmp b29 - //SEG67 main::@29 + //SEG75 main::@29 b29: - //SEG68 [32] (byte~) main::$10 ← (byte) play_move_down::return#3 - // (byte~) main::$10 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG69 [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa + //SEG76 [36] call keyboard_event_get + jsr keyboard_event_get + //SEG77 [37] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a + jmp b30 + //SEG78 main::@30 + b30: + //SEG79 [38] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + sta key_event + //SEG80 [39] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG81 [40] call play_move_down + jsr play_move_down + //SEG82 [41] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx + txa + jmp b31 + //SEG83 main::@31 + b31: + //SEG84 [42] (byte~) main::$12 ← (byte) play_move_down::return#3 + // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a + //SEG85 [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG70 [34] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG86 [44] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG71 [35] call play_move_leftright + //SEG87 [45] call play_move_leftright jsr play_move_leftright - //SEG72 [36] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + //SEG88 [46] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a - jmp b30 - //SEG73 main::@30 - b30: - //SEG74 [37] (byte~) main::$11 ← (byte) play_move_leftright::return#4 - // (byte~) main::$11 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG75 [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa + jmp b32 + //SEG89 main::@32 + b32: + //SEG90 [47] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a + //SEG91 [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG76 [39] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG92 [49] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG77 [40] call play_move_rotate + //SEG93 [50] call play_move_rotate jsr play_move_rotate - //SEG78 [41] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + //SEG94 [51] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a - jmp b31 - //SEG79 main::@31 - b31: - //SEG80 [42] (byte~) main::$12 ← (byte) play_move_rotate::return#4 - // (byte~) main::$12 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG81 [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa + jmp b33 + //SEG95 main::@33 + b33: + //SEG96 [52] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a + //SEG97 [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG82 [44] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG98 [54] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG83 [45] phi from main::@31 to main::@19 [phi:main::@31->main::@19] - b19_from_b31: + //SEG99 [55] phi from main::@33 to main::@19 [phi:main::@33->main::@19] + b19_from_b33: jmp b19 - //SEG84 main::@19 + //SEG100 main::@19 b19: - //SEG85 [46] call render_playfield - //SEG86 [73] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG101 [56] call render_playfield + //SEG102 [85] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b32 - //SEG87 main::@32 - b32: - //SEG88 [47] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuxx=vbuz1 + jmp b34 + //SEG103 main::@34 + b34: + //SEG104 [57] (byte~) current_ypos#78 ← (byte) current_ypos#14 -- vbuxx=vbuz1 ldx current_ypos - //SEG89 [48] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + //SEG105 [58] (byte~) current_xpos#104 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_96 - //SEG90 [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 + sta current_xpos_104 + //SEG106 [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_88 + sta current_piece_gfx_96 lda current_piece_gfx+1 - sta current_piece_gfx_88+1 - //SEG91 [50] (byte~) current_piece_char#76 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 + sta current_piece_gfx_96+1 + //SEG107 [60] (byte~) current_piece_char#84 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_76 - //SEG92 [51] call render_current - //SEG93 [53] phi from main::@32 to render_current [phi:main::@32->render_current] - render_current_from_b32: - //SEG94 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#76 [phi:main::@32->render_current#0] -- register_copy - //SEG95 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG96 [53] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG97 [53] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + sta current_piece_char_84 + //SEG108 [61] call render_current + //SEG109 [63] phi from main::@34 to render_current [phi:main::@34->render_current] + render_current_from_b34: + //SEG110 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#84 [phi:main::@34->render_current#0] -- register_copy + //SEG111 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#96 [phi:main::@34->render_current#1] -- register_copy + //SEG112 [63] phi (byte) current_xpos#48 = (byte~) current_xpos#104 [phi:main::@34->render_current#2] -- register_copy + //SEG113 [63] phi (byte) current_ypos#10 = (byte~) current_ypos#78 [phi:main::@34->render_current#3] -- register_copy jsr render_current jmp b10 - //SEG98 main::@10 + //SEG114 main::@10 b10: - //SEG99 [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG115 [62] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG100 [20] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG116 [30] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG101 [20] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy - //SEG102 [20] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG103 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy - //SEG104 [20] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy - //SEG105 [20] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy - //SEG106 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy - //SEG107 [20] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy - //SEG108 [20] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy + //SEG117 [30] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy + //SEG118 [30] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG119 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG120 [30] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG121 [30] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG122 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG123 [30] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG124 [30] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG109 render_current +//SEG125 render_current render_current: { .label ypos2 = 8 - .label l = 9 - .label screen_line = $16 + .label screen_line = $1a .label xpos = $b .label i = $a - //SEG110 [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + .label l = 9 + //SEG126 [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG111 [55] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG127 [65] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG112 [55] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i - //SEG113 [55] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG128 [65] phi (byte) render_current::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG114 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG129 [65] phi (byte) render_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG130 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG115 [55] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - b1_from_b2: - //SEG116 [55] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG117 [55] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG118 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG131 [65] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + b1_from_b3: + //SEG132 [65] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG133 [65] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG134 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy jmp b1 - //SEG119 render_current::@1 + //SEG135 render_current::@1 b1: - //SEG120 [56] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG136 [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 -- vbuz1_gt_vbuc1_then_la1 + lda ypos2 + cmp #2 + beq !+ + bcs b13 + !: + jmp b7 + //SEG137 render_current::@7 + b7: + //SEG138 [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + lda #4 + clc + adc i + sta i + //SEG139 [68] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + b3_from_b5: + b3_from_b7: + //SEG140 [68] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + jmp b3 + //SEG141 render_current::@3 + b3: + //SEG142 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG143 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + inc l + //SEG144 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + lda l + cmp #4 + bne b1_from_b3 + jmp breturn + //SEG145 render_current::@return + breturn: + //SEG146 [72] return + rts + //SEG147 render_current::@13 + b13: + //SEG148 [73] if((byte) render_current::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES - bcs b2_from_b1 - jmp b6 - //SEG121 render_current::@6 - b6: - //SEG122 [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + bcc b2 + jmp b7 + //SEG149 render_current::@2 + b2: + //SEG150 [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG123 [58] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + //SEG151 [75] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 lda current_xpos_48 sta xpos - //SEG124 [59] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - b3_from_b6: - //SEG125 [59] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG152 [76] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + b4_from_b2: + //SEG153 [76] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@2->render_current::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG126 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG127 [59] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy - jmp b3 - //SEG128 [59] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - b3_from_b4: - //SEG129 [59] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG130 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG131 [59] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy - jmp b3 - //SEG132 render_current::@3 - b3: - //SEG133 [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG154 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG155 [76] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + jmp b4 + //SEG156 [76] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + b4_from_b5: + //SEG157 [76] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG158 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG159 [76] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + jmp b4 + //SEG160 render_current::@4 + b4: + //SEG161 [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_53),y - //SEG134 [61] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG162 [78] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG135 [62] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 + //SEG163 [79] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 -- vbuaa_eq_0_then_la1 cmp #0 - beq b4 - jmp b7 - //SEG136 render_current::@7 - b7: - //SEG137 [63] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + beq b5 + jmp b9 + //SEG164 render_current::@9 + b9: + //SEG165 [80] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS - bcs b4 - jmp b8 - //SEG138 render_current::@8 - b8: - //SEG139 [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_char_62 + bcs b5 + jmp b10 + //SEG166 render_current::@10 + b10: + //SEG167 [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_63 ldy xpos sta (screen_line),y - jmp b4 - //SEG140 render_current::@4 - b4: - //SEG141 [65] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + jmp b5 + //SEG168 render_current::@5 + b5: + //SEG169 [82] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG142 [66] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG170 [83] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG143 [67] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG171 [84] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 - bne b3_from_b4 - //SEG144 [68] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - b2_from_b1: - b2_from_b4: - //SEG145 [68] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - jmp b2 - //SEG146 render_current::@2 - b2: - //SEG147 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG148 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 - inc l - //SEG149 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 - lda l - cmp #4 - bne b1_from_b2 - jmp breturn - //SEG150 render_current::@return - breturn: - //SEG151 [72] return - rts + bne b4_from_b5 + jmp b3_from_b5 } -//SEG152 render_playfield +//SEG172 render_playfield render_playfield: { - .label line = 5 + .label screen_line = 5 .label i = 7 .label l = 4 - //SEG153 [74] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG173 [86] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG154 [74] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG174 [86] 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 - //SEG155 [74] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 - lda #0 + //SEG175 [86] 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 - //SEG156 [74] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG176 [86] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG157 [74] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG158 [74] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG177 [86] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG178 [86] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG159 render_playfield::@1 + //SEG179 render_playfield::@1 b1: - //SEG160 [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG180 [87] (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 - //SEG161 [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG181 [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y - sta line + sta screen_line lda screen_lines+1,y - sta line+1 - //SEG162 [77] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + sta screen_line+1 + //SEG182 [89] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG163 [77] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 + //SEG183 [89] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG164 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG165 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG184 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG185 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG166 [77] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG186 [89] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG167 [77] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG168 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG169 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG187 [89] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG188 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG189 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG170 render_playfield::@2 + //SEG190 render_playfield::@2 b2: - //SEG171 [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG191 [90] *((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 (line),y - //SEG172 [79] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 - inc line + sta (screen_line),y + //SEG192 [91] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + inc screen_line bne !+ - inc line+1 + inc screen_line+1 !: - //SEG173 [80] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG193 [92] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG174 [81] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG194 [93] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG175 [82] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG195 [94] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG176 render_playfield::@3 + //SEG196 render_playfield::@3 b3: - //SEG177 [83] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG197 [95] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG178 [84] 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 + //SEG198 [96] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG179 render_playfield::@return + //SEG199 render_playfield::@return breturn: - //SEG180 [85] return + //SEG200 [97] return rts } -//SEG181 play_move_rotate +//SEG201 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG202 [98] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 jmp b6 - //SEG183 play_move_rotate::@6 + //SEG203 play_move_rotate::@6 b6: - //SEG184 [87] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG204 [99] 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 - //SEG185 [88] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG205 [100] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG186 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG187 [88] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG188 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG206 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG207 [100] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG208 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG189 play_move_rotate::@return + //SEG209 play_move_rotate::@return breturn: - //SEG190 [89] return + //SEG210 [101] return rts - //SEG191 play_move_rotate::@2 + //SEG211 play_move_rotate::@2 b2: - //SEG192 [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG212 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG193 [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG213 [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG194 [92] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG214 [104] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG195 [92] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG215 [104] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG196 play_move_rotate::@4 + //SEG216 play_move_rotate::@4 b4: - //SEG197 [93] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + //SEG217 [105] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG198 [94] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + //SEG218 [106] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG199 [95] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG219 [107] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG200 [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG220 [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_76 lda current_piece+1 - sta current_piece_74+1 - //SEG201 [97] call play_collision - //SEG202 [105] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_76+1 + //SEG221 [109] call play_collision + //SEG222 [117] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG203 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG204 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG205 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG206 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG223 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG224 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG225 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG226 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG207 [98] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + //SEG227 [110] (byte) play_collision::return#13 ← (byte) play_collision::return#14 // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a jmp b14 - //SEG208 play_move_rotate::@14 + //SEG228 play_move_rotate::@14 b14: - //SEG209 [99] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + //SEG229 [111] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a - //SEG210 [100] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG230 [112] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG211 play_move_rotate::@11 + //SEG231 play_move_rotate::@11 b11: - //SEG212 [101] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG232 [113] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG213 [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG233 [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -11119,38 +12622,38 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG214 [88] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG234 [100] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG215 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG216 [88] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG217 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG235 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG236 [100] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG237 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG218 play_move_rotate::@1 + //SEG238 play_move_rotate::@1 b1: - //SEG219 [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG239 [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG220 [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG240 [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4_from_b1 } -//SEG221 play_collision +//SEG241 play_collision play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 - .label playfield_line = $16 - .label i = $18 + .label playfield_line = $1a + .label i = $1c .label col = $b .label l = 9 .label i_2 = $a .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG222 [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG242 [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -11158,667 +12661,667 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG223 [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG243 [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG224 [108] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG244 [120] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG225 [108] 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 + //SEG245 [120] 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 - //SEG226 [108] 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 + //SEG246 [120] 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 - //SEG227 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG247 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG228 play_collision::@1 + //SEG248 play_collision::@1 b1: - //SEG229 [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG249 [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG230 [110] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG250 [122] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG231 [111] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG251 [123] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG232 [111] 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 + //SEG252 [123] 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 - //SEG233 [111] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG234 [111] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG253 [123] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG254 [123] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG235 play_collision::@2 + //SEG255 play_collision::@2 b2: - //SEG236 [112] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG256 [124] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG237 [113] 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 + //SEG257 [125] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG238 play_collision::@8 + //SEG258 play_collision::@8 b8: - //SEG239 [114] 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 + //SEG259 [126] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG240 [115] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG260 [127] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG241 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG261 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG242 play_collision::@return + //SEG262 play_collision::@return breturn: - //SEG243 [116] return + //SEG263 [128] return rts - //SEG244 play_collision::@4 + //SEG264 play_collision::@4 b4: - //SEG245 [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG265 [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG246 [118] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG266 [130] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG247 [115] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG267 [127] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG248 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG268 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG249 play_collision::@5 + //SEG269 play_collision::@5 b5: - //SEG250 [119] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG270 [131] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG251 [115] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG271 [127] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG252 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG272 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG253 play_collision::@6 + //SEG273 play_collision::@6 b6: - //SEG254 [120] 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 + //SEG274 [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG255 [115] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG275 [127] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG256 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG276 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG257 play_collision::@3 + //SEG277 play_collision::@3 b3: - //SEG258 [121] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG278 [133] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG259 [122] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG279 [134] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG260 [123] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG280 [135] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG261 play_collision::@17 + //SEG281 play_collision::@17 b17: - //SEG262 [124] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG282 [136] (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 - //SEG263 [125] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG283 [137] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG264 [126] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [138] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG265 [115] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG285 [127] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG266 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG286 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG267 play_collision::@20 + //SEG287 play_collision::@20 b20: - //SEG268 [127] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG288 [139] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG269 [108] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG289 [120] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG270 [108] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG271 [108] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG272 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG290 [120] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG291 [120] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG292 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG273 play_collision::@21 + //SEG293 play_collision::@21 b21: - //SEG274 [128] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG294 [140] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG275 [111] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG295 [123] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG276 [111] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG277 [111] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG278 [111] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG296 [123] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG297 [123] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG298 [123] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG279 play_move_leftright +//SEG299 play_move_leftright play_move_leftright: { - //SEG280 [129] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG300 [141] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 jmp b6 - //SEG281 play_move_leftright::@6 + //SEG301 play_move_leftright::@6 b6: - //SEG282 [130] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG302 [142] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG283 play_move_leftright::@7 + //SEG303 play_move_leftright::@7 b7: - //SEG284 [131] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG304 [143] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG285 [132] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + //SEG305 [144] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG286 [133] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG306 [145] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG287 [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG307 [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_75 lda current_piece+1 - sta current_piece_73+1 - //SEG288 [135] call play_collision - //SEG289 [105] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + sta current_piece_75+1 + //SEG308 [147] call play_collision + //SEG309 [117] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG290 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG291 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG292 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG293 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG310 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG311 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG312 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG313 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG294 [136] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + //SEG314 [148] (byte) play_collision::return#12 ← (byte) play_collision::return#14 // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a jmp b15 - //SEG295 play_move_leftright::@15 + //SEG315 play_move_leftright::@15 b15: - //SEG296 [137] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + //SEG316 [149] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a - //SEG297 [138] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG317 [150] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG298 play_move_leftright::@8 + //SEG318 play_move_leftright::@8 b8: - //SEG299 [139] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 + //SEG319 [151] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG300 [140] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG320 [152] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG301 [140] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG302 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG321 [152] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG322 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG303 [140] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG323 [152] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG304 [140] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG305 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG324 [152] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG325 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG306 play_move_leftright::@return + //SEG326 play_move_leftright::@return breturn: - //SEG307 [141] return + //SEG327 [153] return rts - //SEG308 play_move_leftright::@1 + //SEG328 play_move_leftright::@1 b1: - //SEG309 [142] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG329 [154] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG310 [143] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + //SEG330 [155] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG311 [144] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG331 [156] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG312 [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG332 [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_74 lda current_piece+1 - sta current_piece_72+1 - //SEG313 [146] call play_collision - //SEG314 [105] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + sta current_piece_74+1 + //SEG333 [158] call play_collision + //SEG334 [117] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG315 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG316 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG317 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG318 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG335 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG336 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG337 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG338 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG319 [147] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + //SEG339 [159] (byte) play_collision::return#1 ← (byte) play_collision::return#14 // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a jmp b14 - //SEG320 play_move_leftright::@14 + //SEG340 play_move_leftright::@14 b14: - //SEG321 [148] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG341 [160] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a - //SEG322 [149] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG342 [161] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG323 play_move_leftright::@11 + //SEG343 play_move_leftright::@11 b11: - //SEG324 [150] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 + //SEG344 [162] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG325 play_move_down +//SEG345 play_move_down play_move_down: { - //SEG326 [151] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + //SEG346 [163] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG327 [152] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG347 [164] 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 - //SEG328 [153] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG348 [165] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG329 play_move_down::@8 + //SEG349 play_move_down::@8 b8: - //SEG330 [154] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG350 [166] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG331 [154] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG351 [166] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG332 [154] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG352 [166] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG333 [154] 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 + //SEG353 [166] 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 - //SEG334 play_move_down::@1 + //SEG354 play_move_down::@1 b1: - //SEG335 [155] call keyboard_event_pressed - //SEG336 [238] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG355 [167] call keyboard_event_pressed + //SEG356 [250] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG337 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG357 [250] 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 - //SEG338 [156] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG358 [168] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b17 - //SEG339 play_move_down::@17 + //SEG359 play_move_down::@17 b17: - //SEG340 [157] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG360 [169] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG341 [158] 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 + //SEG361 [170] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b17 jmp b9 - //SEG342 play_move_down::@9 + //SEG362 play_move_down::@9 b9: - //SEG343 [159] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG363 [171] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG344 play_move_down::@10 + //SEG364 play_move_down::@10 b10: - //SEG345 [160] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG365 [172] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG346 [161] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG366 [173] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG347 [161] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG367 [173] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG348 play_move_down::@2 + //SEG368 play_move_down::@2 b2: - //SEG349 [162] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG369 [174] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG350 play_move_down::@11 + //SEG370 play_move_down::@11 b11: - //SEG351 [163] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG371 [175] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG352 [164] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG372 [176] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG353 [164] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG373 [176] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG354 play_move_down::@4 + //SEG374 play_move_down::@4 b4: - //SEG355 [165] 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 + //SEG375 [177] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_b4 jmp b12 - //SEG356 play_move_down::@12 + //SEG376 play_move_down::@12 b12: - //SEG357 [166] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG377 [178] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG358 [167] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG378 [179] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG359 [168] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 + //SEG379 [180] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 ldx current_orientation - //SEG360 [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG380 [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_71 + sta current_piece_73 lda current_piece+1 - sta current_piece_71+1 - //SEG361 [170] call play_collision - //SEG362 [105] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_73+1 + //SEG381 [182] call play_collision + //SEG382 [117] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG363 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG364 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG365 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG366 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG383 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG384 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG385 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG386 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG367 [171] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + //SEG387 [183] (byte) play_collision::return#0 ← (byte) play_collision::return#14 // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a jmp b18 - //SEG368 play_move_down::@18 + //SEG388 play_move_down::@18 b18: - //SEG369 [172] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG389 [184] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a - //SEG370 [173] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG390 [185] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG371 [174] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG391 [186] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG372 play_move_down::@13 + //SEG392 play_move_down::@13 b13: - //SEG373 [175] call play_lock_current + //SEG393 [187] call play_lock_current jsr play_lock_current - //SEG374 [176] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG394 [188] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG375 play_move_down::@19 + //SEG395 play_move_down::@19 b19: - //SEG376 [177] call play_remove_lines - //SEG377 [199] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG396 [189] call play_remove_lines + //SEG397 [211] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG378 [178] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG398 [190] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 - //SEG379 play_move_down::@20 + //SEG399 play_move_down::@20 b20: - //SEG380 [179] call play_spawn_current - //SEG381 [185] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG400 [191] call play_spawn_current + //SEG401 [197] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] play_spawn_current_from_b20: jsr play_spawn_current - //SEG382 [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG402 [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG383 [181] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG403 [193] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG384 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG385 [181] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG404 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG405 [193] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG386 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG387 [181] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG406 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG407 [193] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG388 [181] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG389 [181] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG408 [193] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG409 [193] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG390 play_move_down::@7 + //SEG410 play_move_down::@7 b7: - //SEG391 [182] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG411 [194] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG392 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG393 [182] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG394 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG395 [182] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG396 [182] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG397 [182] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG398 [182] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG412 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG413 [194] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG414 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG415 [194] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG416 [194] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG417 [194] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG418 [194] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG399 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG419 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG400 [182] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG420 [194] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG401 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG402 [182] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG403 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG404 [182] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG405 [182] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG406 [182] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG407 [182] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG408 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG421 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG422 [194] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG423 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG424 [194] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG425 [194] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG426 [194] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG427 [194] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG428 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG409 play_move_down::@return + //SEG429 play_move_down::@return breturn: - //SEG410 [183] return + //SEG430 [195] return rts - //SEG411 play_move_down::@6 + //SEG431 play_move_down::@6 b6: - //SEG412 [184] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 + //SEG432 [196] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG413 [181] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG433 [193] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG414 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG415 [181] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG416 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG417 [181] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG418 [181] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG419 [181] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG434 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG435 [193] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG436 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG437 [193] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG438 [193] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG439 [193] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG420 play_spawn_current +//SEG440 play_spawn_current play_spawn_current: { .label _3 = 2 - //SEG421 [186] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG441 [198] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG422 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG442 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 jmp b1 - //SEG423 play_spawn_current::@1 + //SEG443 play_spawn_current::@1 b1: - //SEG424 [187] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG444 [199] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2_from_b1 jmp b3 - //SEG425 play_spawn_current::@3 + //SEG445 play_spawn_current::@3 b3: - //SEG426 [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG446 [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG427 [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG447 [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG428 [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG448 [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char jmp breturn - //SEG429 play_spawn_current::@return + //SEG449 play_spawn_current::@return breturn: - //SEG430 [191] return + //SEG450 [203] return rts - //SEG431 [192] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG451 [204] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG432 play_spawn_current::@2 + //SEG452 play_spawn_current::@2 b2: - //SEG433 [193] call sid_rnd + //SEG453 [205] call sid_rnd jsr sid_rnd - //SEG434 [194] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG454 [206] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a jmp b7 - //SEG435 play_spawn_current::@7 + //SEG455 play_spawn_current::@7 b7: - //SEG436 [195] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG456 [207] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG437 [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG457 [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG438 [186] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG458 [198] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG439 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG459 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG440 sid_rnd +//SEG460 sid_rnd sid_rnd: { - //SEG441 [197] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG461 [209] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG442 sid_rnd::@return + //SEG462 sid_rnd::@return breturn: - //SEG443 [198] return + //SEG463 [210] return rts } -//SEG444 play_remove_lines +//SEG464 play_remove_lines play_remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG445 [200] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG465 [212] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG446 [200] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG466 [212] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG447 [200] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG467 [212] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG448 [200] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG468 [212] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG449 [200] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG469 [212] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG450 [200] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG451 [200] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG452 [200] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG470 [212] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG471 [212] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG472 [212] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy jmp b1 - //SEG453 play_remove_lines::@1 + //SEG473 play_remove_lines::@1 b1: - //SEG454 [201] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG474 [213] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG455 [201] 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 + //SEG475 [213] 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 - //SEG456 [201] 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 + //SEG476 [213] 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 - //SEG457 [201] 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 - //SEG458 [201] 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 + //SEG477 [213] 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 + //SEG478 [213] 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 - //SEG459 [201] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG479 [213] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG460 [201] 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 - //SEG461 [201] 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 - //SEG462 [201] 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 - //SEG463 [201] 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 + //SEG480 [213] 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 + //SEG481 [213] 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 + //SEG482 [213] 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 + //SEG483 [213] 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 - //SEG464 play_remove_lines::@2 + //SEG484 play_remove_lines::@2 b2: - //SEG465 [202] (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 + //SEG485 [214] (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 - //SEG466 [203] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG486 [215] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG467 [204] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG487 [216] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG468 [205] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG488 [217] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG469 [205] 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 + //SEG489 [217] 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 - //SEG470 play_remove_lines::@3 + //SEG490 play_remove_lines::@3 b3: - //SEG471 [206] *((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 + //SEG491 [218] *((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 - //SEG472 [207] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG492 [219] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG473 [208] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG493 [220] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG474 [209] 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 + //SEG494 [221] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG475 play_remove_lines::@9 + //SEG495 play_remove_lines::@9 b9: - //SEG476 [210] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG496 [222] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG477 play_remove_lines::@10 + //SEG497 play_remove_lines::@10 b10: - //SEG478 [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG498 [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG479 [212] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG499 [224] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG480 [212] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG500 [224] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy jmp b4 - //SEG481 play_remove_lines::@4 + //SEG501 play_remove_lines::@4 b4: - //SEG482 [213] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG502 [225] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG483 [214] 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 + //SEG503 [226] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG484 [215] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG504 [227] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG485 [215] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG505 [227] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG486 play_remove_lines::@5 + //SEG506 play_remove_lines::@5 b5: - //SEG487 [216] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG507 [228] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 jmp breturn - //SEG488 play_remove_lines::@return + //SEG508 play_remove_lines::@return breturn: - //SEG489 [217] return + //SEG509 [229] return rts - //SEG490 play_remove_lines::@6 + //SEG510 play_remove_lines::@6 b6: - //SEG491 [218] *((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 + //SEG511 [230] *((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 - //SEG492 [219] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG512 [231] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG493 [220] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG513 [232] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] b17_from_b2: jmp b17 - //SEG494 play_remove_lines::@17 + //SEG514 play_remove_lines::@17 b17: - //SEG495 [205] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG515 [217] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG496 [205] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy + //SEG516 [217] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG497 play_lock_current +//SEG517 play_lock_current play_lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -11829,489 +13332,489 @@ play_lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG498 [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG518 [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG499 [222] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG519 [234] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG500 [222] 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 + //SEG520 [234] 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 - //SEG501 [222] 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 + //SEG521 [234] 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 - //SEG502 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG522 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG503 play_lock_current::@1 + //SEG523 play_lock_current::@1 b1: - //SEG504 [223] (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 + //SEG524 [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG505 [224] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG525 [236] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG506 [225] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG526 [237] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG507 [225] 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 + //SEG527 [237] 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 - //SEG508 [225] 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 - //SEG509 [225] 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 + //SEG528 [237] 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 + //SEG529 [237] 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 - //SEG510 play_lock_current::@2 + //SEG530 play_lock_current::@2 b2: - //SEG511 [226] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG531 [238] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG512 [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG532 [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG513 play_lock_current::@4 + //SEG533 play_lock_current::@4 b4: - //SEG514 [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG534 [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG515 play_lock_current::@3 + //SEG535 play_lock_current::@3 b3: - //SEG516 [229] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG536 [241] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG517 [230] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG537 [242] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG518 [231] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG538 [243] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG519 play_lock_current::@5 + //SEG539 play_lock_current::@5 b5: - //SEG520 [232] (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 + //SEG540 [244] (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 - //SEG521 [233] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG541 [245] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG522 [234] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG542 [246] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG523 play_lock_current::@return + //SEG543 play_lock_current::@return breturn: - //SEG524 [235] return + //SEG544 [247] return rts - //SEG525 play_lock_current::@7 + //SEG545 play_lock_current::@7 b7: - //SEG526 [236] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG546 [248] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG527 [222] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG547 [234] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG528 [222] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG529 [222] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG530 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG548 [234] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG549 [234] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG550 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG531 play_lock_current::@8 + //SEG551 play_lock_current::@8 b8: - //SEG532 [237] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG552 [249] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG533 [225] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG553 [237] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG534 [225] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG535 [225] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG536 [225] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG554 [237] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG555 [237] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG556 [237] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG537 keyboard_event_pressed +//SEG557 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG538 [239] (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 + //SEG558 [251] (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 - //SEG539 [240] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG559 [252] (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 - //SEG540 [241] (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 + //SEG560 [253] (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 - //SEG541 [242] (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 + //SEG561 [254] (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 - //SEG542 keyboard_event_pressed::@return + //SEG562 keyboard_event_pressed::@return breturn: - //SEG543 [243] return + //SEG563 [255] return rts } -//SEG544 keyboard_event_get +//SEG564 keyboard_event_get keyboard_event_get: { - //SEG545 [244] 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 + //SEG565 [256] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG546 keyboard_event_get::@3 + //SEG566 keyboard_event_get::@3 b3: - //SEG547 [245] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG567 [257] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG548 [246] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG568 [258] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG549 [247] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG569 [259] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG550 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG551 [247] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG570 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG552 [247] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG572 [259] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG553 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG554 [247] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG573 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG574 [259] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff jmp breturn - //SEG555 keyboard_event_get::@return + //SEG575 keyboard_event_get::@return breturn: - //SEG556 [248] return + //SEG576 [260] return rts } -//SEG557 keyboard_event_scan +//SEG577 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG558 [250] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG578 [262] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG559 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG560 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG579 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG580 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG561 [250] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG581 [262] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG562 [250] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG582 [262] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG563 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG564 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG565 [250] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG583 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG584 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG585 [262] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG566 keyboard_event_scan::@1 + //SEG586 keyboard_event_scan::@1 b1: - //SEG567 [251] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG587 [263] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG568 [252] call keyboard_matrix_read + //SEG588 [264] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG569 [253] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG589 [265] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a jmp b25 - //SEG570 keyboard_event_scan::@25 + //SEG590 keyboard_event_scan::@25 b25: - //SEG571 [254] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG591 [266] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG572 [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG592 [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG573 keyboard_event_scan::@13 + //SEG593 keyboard_event_scan::@13 b13: - //SEG574 [256] (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 + //SEG594 [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG575 [257] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG595 [269] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG576 [257] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG577 [257] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG596 [269] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG597 [269] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG578 keyboard_event_scan::@3 + //SEG598 keyboard_event_scan::@3 b3: - //SEG579 [258] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG599 [270] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG580 [259] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [271] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG581 [260] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG601 [272] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG582 keyboard_event_scan::@20 + //SEG602 keyboard_event_scan::@20 b20: - //SEG583 [261] call keyboard_event_pressed - //SEG584 [238] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG603 [273] call keyboard_event_pressed + //SEG604 [250] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG585 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG605 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG586 [262] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG606 [274] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b26 - //SEG587 keyboard_event_scan::@26 + //SEG607 keyboard_event_scan::@26 b26: - //SEG588 [263] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG608 [275] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG589 [264] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG609 [276] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG590 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG610 [277] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG591 keyboard_event_scan::@21 + //SEG611 keyboard_event_scan::@21 b21: - //SEG592 [266] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG612 [278] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG593 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG613 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0|KEY_MODIFIER_LSHIFT jmp b9 - //SEG594 [266] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG614 [278] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG595 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG615 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0 jmp b9 - //SEG596 keyboard_event_scan::@9 + //SEG616 keyboard_event_scan::@9 b9: - //SEG597 [267] call keyboard_event_pressed - //SEG598 [238] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG617 [279] call keyboard_event_pressed + //SEG618 [250] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG599 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG619 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG600 [268] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG620 [280] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b27 - //SEG601 keyboard_event_scan::@27 + //SEG621 keyboard_event_scan::@27 b27: - //SEG602 [269] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG622 [281] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG603 [270] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG623 [282] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 jmp b22 - //SEG604 keyboard_event_scan::@22 + //SEG624 keyboard_event_scan::@22 b22: - //SEG605 [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG625 [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG606 [272] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG626 [284] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: - //SEG607 [272] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG627 [284] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG608 keyboard_event_scan::@10 + //SEG628 keyboard_event_scan::@10 b10: - //SEG609 [273] call keyboard_event_pressed - //SEG610 [238] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG629 [285] call keyboard_event_pressed + //SEG630 [250] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG611 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG631 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG612 [274] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG632 [286] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b28 - //SEG613 keyboard_event_scan::@28 + //SEG633 keyboard_event_scan::@28 b28: - //SEG614 [275] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG634 [287] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG615 [276] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG635 [288] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 jmp b23 - //SEG616 keyboard_event_scan::@23 + //SEG636 keyboard_event_scan::@23 b23: - //SEG617 [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG637 [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG618 [278] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG638 [290] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: - //SEG619 [278] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG639 [290] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG620 keyboard_event_scan::@11 + //SEG640 keyboard_event_scan::@11 b11: - //SEG621 [279] call keyboard_event_pressed - //SEG622 [238] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG641 [291] call keyboard_event_pressed + //SEG642 [250] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG623 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG643 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [280] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG644 [292] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b29 - //SEG625 keyboard_event_scan::@29 + //SEG645 keyboard_event_scan::@29 b29: - //SEG626 [281] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG646 [293] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG627 [282] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG647 [294] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn jmp b24 - //SEG628 keyboard_event_scan::@24 + //SEG648 keyboard_event_scan::@24 b24: - //SEG629 [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG649 [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE jmp breturn - //SEG630 keyboard_event_scan::@return + //SEG650 keyboard_event_scan::@return breturn: - //SEG631 [284] return + //SEG651 [296] return rts - //SEG632 [285] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG652 [297] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG633 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG634 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG635 [285] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG653 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG654 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG655 [297] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG636 [285] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG656 [297] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG637 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG638 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG639 [285] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG657 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG658 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG659 [297] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG640 keyboard_event_scan::@4 + //SEG660 keyboard_event_scan::@4 b4: - //SEG641 [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG661 [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG642 [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG662 [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG643 [288] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG663 [300] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG644 keyboard_event_scan::@15 + //SEG664 keyboard_event_scan::@15 b15: - //SEG645 [289] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG665 [301] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG646 keyboard_event_scan::@16 + //SEG666 keyboard_event_scan::@16 b16: - //SEG647 [290] (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 + //SEG667 [302] (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 - //SEG648 [291] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG668 [303] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG649 keyboard_event_scan::@17 + //SEG669 keyboard_event_scan::@17 b17: - //SEG650 [292] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG670 [304] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG651 [293] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG671 [305] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG652 [294] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG672 [306] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG653 [294] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG673 [306] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG654 keyboard_event_scan::@5 + //SEG674 keyboard_event_scan::@5 b5: - //SEG655 [295] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG675 [307] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG656 [296] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG676 [308] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG657 [297] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG677 [309] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG658 keyboard_event_scan::@19 + //SEG678 keyboard_event_scan::@19 b19: - //SEG659 [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG679 [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG660 keyboard_event_scan::@7 + //SEG680 keyboard_event_scan::@7 b7: - //SEG661 [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG681 [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG662 [300] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG682 [312] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG663 [301] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG683 [313] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG664 keyboard_matrix_read +//SEG684 keyboard_matrix_read keyboard_matrix_read: { - //SEG665 [302] *((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 + //SEG685 [314] *((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 - //SEG666 [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG686 [315] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG667 keyboard_matrix_read::@return + //SEG687 keyboard_matrix_read::@return breturn: - //SEG668 [304] return + //SEG688 [316] return rts } -//SEG669 play_init +//SEG689 play_init play_init: { .label pli = 5 .label idx = 2 - //SEG670 [306] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG690 [318] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG671 [306] 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 + //SEG691 [318] 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 - //SEG672 [306] 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 + //SEG692 [318] 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 - //SEG673 [306] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG693 [318] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG674 [306] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG694 [318] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG675 [306] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG676 [306] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG677 [306] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG695 [318] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG696 [318] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG697 [318] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG678 play_init::@1 + //SEG698 play_init::@1 b1: - //SEG679 [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG699 [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG680 [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG700 [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG681 [309] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG701 [321] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG682 [310] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [322] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -12319,119 +13822,216 @@ play_init: { bcc !+ inc pli+1 !: - //SEG683 [311] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG703 [323] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG684 [312] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG704 [324] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG685 [313] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG705 [325] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG686 play_init::@2 + //SEG706 play_init::@2 b2: - //SEG687 [314] *((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 + //SEG707 [326] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG688 play_init::@return + //SEG708 play_init::@return breturn: - //SEG689 [315] return + //SEG709 [327] return rts } -//SEG690 render_init +//SEG710 sprites_irq_init +sprites_irq_init: { + //SEG711 asm { sei } + sei + //SEG712 [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG713 asm { ldaCIA1_INTERRUPT } + lda CIA1_INTERRUPT + //SEG714 [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG715 [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG716 [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG717 [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG718 [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG719 [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG720 [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta HARDWARE_IRQ+1 + //SEG721 asm { cli } + cli + jmp breturn + //SEG722 sprites_irq_init::@return + breturn: + //SEG723 [339] return + rts +} +//SEG724 sprites_init +sprites_init: { + .label xpos = 2 + //SEG725 [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG726 [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG727 [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_MC + sta SPRITES_EXPAND_Y + //SEG728 [343] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + //SEG729 [344] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + b1_from_sprites_init: + //SEG730 [344] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 + //SEG731 [344] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG732 [344] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + b1_from_b1: + //SEG733 [344] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG734 [344] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + jmp b1 + //SEG735 sprites_init::@1 + b1: + //SEG736 [345] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG737 [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + tay + lda xpos + sta SPRITES_XPOS,y + //SEG738 [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + lda #BLACK + sta SPRITES_COLS,x + //SEG739 [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG740 [349] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + inx + //SEG741 [350] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #4 + bne b1_from_b1 + jmp breturn + //SEG742 sprites_init::@return + breturn: + //SEG743 [351] return + rts +} +//SEG744 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - .label _15 = $c + .label _18 = $c .label li = 5 .label line = 5 .label l = 2 jmp vicSelectGfxBank1 - //SEG691 render_init::vicSelectGfxBank1 + //SEG745 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG692 [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG746 [353] *((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 - //SEG693 [318] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG747 [354] 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 - //SEG694 render_init::vicSelectGfxBank1_toDd001 + //SEG748 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG695 render_init::vicSelectGfxBank1_@1 + //SEG749 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG696 [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG750 [355] *((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 - //SEG697 [320] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] + //SEG751 [356] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG698 render_init::toD0181 + //SEG752 render_init::toD0181 toD0181: jmp b8 - //SEG699 render_init::@8 + //SEG753 render_init::@8 b8: - //SEG700 [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG754 [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG701 [322] *((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 + //SEG755 [358] *((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 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG702 [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG756 [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG703 [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG757 [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG704 [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG758 [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG705 [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG759 [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG706 [327] call fill - //SEG707 [368] phi from render_init::@8 to fill [phi:render_init::@8->fill] + //SEG760 [363] call fill + //SEG761 [404] phi from render_init::@8 to fill [phi:render_init::@8->fill] fill_from_b8: jsr fill - //SEG708 [328] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG762 [364] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] b9_from_b8: jmp b9 - //SEG709 render_init::@9 + //SEG763 render_init::@9 b9: - //SEG710 [329] call render_screen_original - //SEG711 [346] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] + //SEG764 [365] call render_screen_original + //SEG765 [382] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] render_screen_original_from_b9: jsr render_screen_original - //SEG712 [330] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] + //SEG766 [366] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] b1_from_b9: - //SEG713 [330] phi (byte*) render_init::li#2 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@9->render_init::@1#0] -- pbuz1=pbuc1 - lda #render_init::@1#0] -- pbuz1=pbuc1 + lda #PLAYFIELD_SCREEN+$28+$10 + lda #>PLAYFIELD_SCREEN+2*$28+$10 sta li+1 - //SEG714 [330] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuxx=vbuc1 + //SEG768 [366] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG715 [330] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG769 [366] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG716 [330] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG717 [330] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG770 [366] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG771 [366] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG718 render_init::@1 + //SEG772 render_init::@1 b1: - //SEG719 [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG773 [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG720 [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG774 [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG721 [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG775 [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -12439,61 +14039,61 @@ render_init: { bcc !+ inc li+1 !: - //SEG722 [334] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG776 [370] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG723 [335] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_LINES+2+1 + //SEG777 [371] 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 - //SEG724 [336] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG778 [372] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG725 [336] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG779 [372] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + lda #2 sta l - //SEG726 [336] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 - lda #render_init::@2#1] -- pbuz1=pbuc1 + lda #COLS+$f + lda #>COLS+4*$28+$10 sta line+1 jmp b2 - //SEG727 [336] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG781 [372] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG728 [336] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG729 [336] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG782 [372] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG783 [372] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG730 render_init::@2 + //SEG784 render_init::@2 b2: - //SEG731 [337] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG785 [373] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG732 [337] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG786 [373] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG733 [337] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG787 [373] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG734 [337] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG788 [373] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG735 render_init::@3 + //SEG789 render_init::@3 b3: - //SEG736 [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG790 [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line - sta _15 + sta _18 lda #0 adc line+1 - sta _15+1 - //SEG737 [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + sta _18+1 + //SEG791 [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 - sta (_15),y - //SEG738 [340] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + sta (_18),y + //SEG792 [376] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG739 [341] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_COLS+1+1 + //SEG793 [377] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + cpx #PLAYFIELD_COLS-1+1 bne b3_from_b3 jmp b5 - //SEG740 render_init::@5 + //SEG794 render_init::@5 b5: - //SEG741 [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG795 [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -12501,173 +14101,173 @@ render_init: { bcc !+ inc line+1 !: - //SEG742 [343] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG796 [379] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG743 [344] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG797 [380] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l - cmp #PLAYFIELD_LINES+1+1 + cmp #PLAYFIELD_LINES-1+1 bne b2_from_b5 jmp breturn - //SEG744 render_init::@return + //SEG798 render_init::@return breturn: - //SEG745 [345] return + //SEG799 [381] return rts } -//SEG746 render_screen_original +//SEG800 render_screen_original render_screen_original: { .const SPACE = 0 .label screen = $c .label orig = 5 .label y = 2 - //SEG747 [347] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG801 [383] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG748 [347] 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 + //SEG802 [383] 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 - //SEG749 [347] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG803 [383] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta orig+1 - //SEG750 [347] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG804 [383] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN sta screen+1 jmp b1 - //SEG751 [347] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG805 [383] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG752 [347] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG753 [347] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG754 [347] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG806 [383] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG807 [383] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG808 [383] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG755 render_screen_original::@1 + //SEG809 render_screen_original::@1 b1: - //SEG756 [348] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG810 [384] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG757 [348] 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 + //SEG811 [384] 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 - //SEG758 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG812 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG759 [348] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG813 [384] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG760 [348] 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 - //SEG761 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG814 [384] 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 + //SEG815 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG762 render_screen_original::@2 + //SEG816 render_screen_original::@2 b2: - //SEG763 [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG817 [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG764 [350] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 + //SEG818 [386] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG765 [351] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG819 [387] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG766 [352] 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 + //SEG820 [388] 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 - //SEG767 [353] 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] + //SEG821 [389] 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: - //SEG768 [353] 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 - //SEG769 [353] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG770 [353] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG822 [389] 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 + //SEG823 [389] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG824 [389] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy jmp b3 - //SEG771 render_screen_original::@3 + //SEG825 render_screen_original::@3 b3: - //SEG772 [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_plus_1 + //SEG826 [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_plus_1 ldy #0 lda (orig),y clc adc #1 - //SEG773 [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuaa + //SEG827 [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (screen),y - //SEG774 [356] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG828 [392] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG775 [357] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG829 [393] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG776 [358] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG830 [394] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG777 [359] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG831 [395] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3_from_b3 - //SEG778 [360] 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] + //SEG832 [396] 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: - //SEG779 [360] 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 - //SEG780 [360] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG833 [396] 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 + //SEG834 [396] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy jmp b4 - //SEG781 render_screen_original::@4 + //SEG835 render_screen_original::@4 b4: - //SEG782 [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG836 [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG783 [362] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG837 [398] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG784 [363] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG838 [399] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG785 [364] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG839 [400] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4_from_b4 jmp b7 - //SEG786 render_screen_original::@7 + //SEG840 render_screen_original::@7 b7: - //SEG787 [365] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG841 [401] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG788 [366] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [402] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG789 render_screen_original::@return + //SEG843 render_screen_original::@return breturn: - //SEG790 [367] return + //SEG844 [403] return rts } -//SEG791 fill +//SEG845 fill fill: { .const size = $3e8 .label end = COLS+size .label addr = 5 - //SEG792 [369] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG846 [405] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG793 [369] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG847 [405] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 jmp b1 - //SEG794 [369] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG848 [405] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG795 [369] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG849 [405] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG796 fill::@1 + //SEG850 fill::@1 b1: - //SEG797 [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG851 [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG798 [371] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG852 [407] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG799 [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG853 [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -12675,26 +14275,162 @@ fill: { cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG804 [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG858 [411] *((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 - //SEG805 sid_rnd_init::@return + //SEG859 sid_rnd_init::@return breturn: - //SEG806 [376] return + //SEG860 [412] return rts +} +//SEG861 irq +irq: { + .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + //SEG862 entry interrupt(HARDWARE_CLOBBER) + sta rega+1 + stx regx+1 + //SEG863 [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + lda #DARK_GREY + sta BORDERCOL + //SEG864 [414] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + lda irq_sprite_ypos + //SEG865 [415] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS + //SEG866 [416] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+2 + //SEG867 [417] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+4 + //SEG868 [418] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+6 + jmp b1 + //SEG869 irq::@1 + b1: + //SEG870 [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + lda RASTER + cmp irq_sprite_ypos + bne b1 + jmp b5 + //SEG871 irq::@5 + b5: + //SEG872 [420] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 + lda irq_sprite_ptr + //SEG873 [421] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS + //SEG874 [422] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa + tax + inx + //SEG875 [423] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+1 + //SEG876 [424] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+2 + //SEG877 [425] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + inx + //SEG878 [426] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+3 + //SEG879 [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + inc irq_cnt + //SEG880 [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #$a + beq b2 + jmp b6 + //SEG881 irq::@6 + b6: + //SEG882 [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG883 [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + //SEG884 [431] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + //SEG885 [432] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + b3_from_b6: + b3_from_b9: + //SEG886 [432] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + jmp b3 + //SEG887 irq::@3 + b3: + //SEG888 [433] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + ldx irq_raster_next + //SEG889 [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + txa + and #7 + //SEG890 [435] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + cmp #3 + bne b4_from_b3 + jmp b8 + //SEG891 irq::@8 + b8: + //SEG892 [436] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + dex + //SEG893 [437] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + b4_from_b3: + b4_from_b8: + //SEG894 [437] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + jmp b4 + //SEG895 irq::@4 + b4: + //SEG896 [438] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + stx RASTER + //SEG897 [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG898 [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + jmp breturn + //SEG899 irq::@return + breturn: + //SEG900 [441] return - exit interrupt(HARDWARE_CLOBBER) + rega: + lda #00 + regx: + ldx #00 + rti + //SEG901 irq::@2 + b2: + //SEG902 [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt + //SEG903 [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next + //SEG904 [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + //SEG905 [445] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + toSpritePtr2_from_b2: + jmp toSpritePtr2 + //SEG906 irq::toSpritePtr2 + toSpritePtr2: + jmp b9 + //SEG907 irq::@9 + b9: + //SEG908 [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr2_return + sta irq_sprite_ptr + jmp b3_from_b9 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 @@ -12715,9 +14451,9 @@ sid_rnd_init: { .align $40 PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 PIECES_CHARS: .byte $57, $58, $98, $58, $57, $57, $98 + screen_lines: .fill 2*PLAYFIELD_LINES, 0 playfield_lines: .fill 2*PLAYFIELD_LINES, 0 playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 .pc = PLAYFIELD_CHARSET "Inline" @@ -12727,36 +14463,55 @@ sid_rnd_init: { .pc = PLAYFIELD_SCREEN_ORIGINAL "Inline" .import binary "nes-screen.iscr" +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + ASSEMBLER OPTIMIZATIONS Removing instruction jmp b14 -Removing instruction jmp b27 +Removing instruction jmp b18 +Removing instruction jmp b19 +Removing instruction jmp toSpritePtr1 +Removing instruction jmp b31 +Removing instruction jmp b30 Removing instruction jmp bend Removing instruction jmp b21 Removing instruction jmp b22 Removing instruction jmp b23 Removing instruction jmp b24 Removing instruction jmp b25 +Removing instruction jmp b26 +Removing instruction jmp b27 Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b7 Removing instruction jmp b9 -Removing instruction jmp b27 -Removing instruction jmp b28 Removing instruction jmp b29 Removing instruction jmp b30 Removing instruction jmp b31 -Removing instruction jmp b19 Removing instruction jmp b32 +Removing instruction jmp b33 +Removing instruction jmp b19 +Removing instruction jmp b34 Removing instruction jmp b10 Removing instruction jmp b1 -Removing instruction jmp b6 -Removing instruction jmp b3 Removing instruction jmp b7 -Removing instruction jmp b8 -Removing instruction jmp b4 -Removing instruction jmp b2 +Removing instruction jmp b3 Removing instruction jmp breturn +Removing instruction jmp b4 +Removing instruction jmp b9 +Removing instruction jmp b10 +Removing instruction jmp b5 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 @@ -12844,6 +14599,9 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn Removing instruction jmp vicSelectGfxBank1 Removing instruction jmp vicSelectGfxBank1_toDd001 Removing instruction jmp vicSelectGfxBank1_b1 @@ -12864,12 +14622,20 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b3 +Removing instruction jmp b8 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp toSpritePtr2 +Removing instruction jmp b9 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda key_event Removing instruction lda #0 -Removing instruction lda #0 Removing instruction lda current_orientation Removing instruction lda #0 Removing instruction lda #0 @@ -12878,12 +14644,14 @@ Removing instruction lda c Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda row_scan +Removing instruction lda SPRITES_MC +Removing instruction lda SPRITES_EXPAND_Y Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1 with b4 -Replacing label b2_from_b1 with b2 -Replacing label b3_from_b4 with b3 -Replacing label b1_from_b2 with b1 +Replacing label b1_from_b3 with b1 +Replacing label b4_from_b5 with b4 +Replacing label b3_from_b5 with b3 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 Replacing label breturn_from_b14 with breturn_from_b6 @@ -12910,6 +14678,7 @@ Replacing label b3_from_b19 with b3 Replacing label b5_from_b7 with b5 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 Replacing label b3_from_b3 with b3 Replacing label b2_from_b5 with b2 Replacing label b2_from_b2 with b2 @@ -12918,25 +14687,32 @@ Replacing label b4_from_b4 with b4 Replacing label b1_from_b7 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 +Replacing label b4_from_b3 with b4 +Replacing label b3_from_b9 with b3 Removing instruction b14: -Removing instruction b27_from_b14: -Removing instruction b27: -Removing instruction main_from_b27: -Removing instruction bend_from_b27: +Removing instruction b18: +Removing instruction b19: +Removing instruction toSpritePtr1_from_b19: +Removing instruction toSpritePtr1: +Removing instruction b30_from_b31: +Removing instruction main_from_b30: +Removing instruction bend_from_b30: Removing instruction b22_from_b21: -Removing instruction play_init_from_b22: Removing instruction b23_from_b22: -Removing instruction play_spawn_current_from_b23: Removing instruction b24_from_b23: -Removing instruction render_playfield_from_b24: +Removing instruction play_init_from_b24: +Removing instruction b25_from_b24: +Removing instruction play_spawn_current_from_b25: +Removing instruction b26_from_b25: +Removing instruction render_playfield_from_b26: Removing instruction b1: -Removing instruction b27_from_b9: -Removing instruction b19_from_b31: +Removing instruction b29_from_b9: +Removing instruction b19_from_b33: Removing instruction render_playfield_from_b19: -Removing instruction b1_from_b2: -Removing instruction b3_from_b4: -Removing instruction b2_from_b1: -Removing instruction b2_from_b4: +Removing instruction b1_from_b3: +Removing instruction b3_from_b5: +Removing instruction b3_from_b7: +Removing instruction b4_from_b5: Removing instruction b1_from_b3: Removing instruction b2_from_b2: Removing instruction breturn_from_b14: @@ -12989,6 +14765,7 @@ Removing instruction b5_from_b17: Removing instruction b5_from_b4: Removing instruction b5_from_b7: Removing instruction b1_from_b1: +Removing instruction b1_from_b1: Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_toDd001: Removing instruction toD0181_from_vicSelectGfxBank1_b1: @@ -13007,7 +14784,16 @@ Removing instruction b3_from_b3: Removing instruction b4_from_b3: Removing instruction b4_from_b4: Removing instruction b1_from_b1: +Removing instruction b3_from_b6: +Removing instruction b3_from_b9: +Removing instruction b4_from_b3: +Removing instruction b4_from_b8: +Removing instruction breturn: +Removing instruction toSpritePtr2_from_b2: +Removing instruction toSpritePtr2: Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b31: +Removing instruction b30: Removing instruction bend: Removing instruction b21: Removing instruction render_init_from_b21: @@ -13015,25 +14801,26 @@ Removing instruction b22: Removing instruction b23: Removing instruction b24: Removing instruction b25: -Removing instruction render_current_from_b25: -Removing instruction b1_from_b25: +Removing instruction b26: +Removing instruction b27: +Removing instruction render_current_from_b27: +Removing instruction b1_from_b27: Removing instruction b9: Removing instruction keyboard_event_scan_from_b9: -Removing instruction b27: -Removing instruction b28: Removing instruction b29: Removing instruction b30: Removing instruction b31: -Removing instruction b19: Removing instruction b32: -Removing instruction render_current_from_b32: +Removing instruction b33: +Removing instruction b19: +Removing instruction b34: +Removing instruction render_current_from_b34: Removing instruction b1_from_b10: Removing instruction b1_from_render_current: -Removing instruction b6: -Removing instruction b3_from_b6: -Removing instruction b7: -Removing instruction b8: Removing instruction breturn: +Removing instruction b4_from_b2: +Removing instruction b9: +Removing instruction b10: Removing instruction b1_from_render_playfield: Removing instruction b2_from_b1: Removing instruction b3: @@ -13116,6 +14903,9 @@ Removing instruction breturn: Removing instruction b1_from_play_init: Removing instruction b2: Removing instruction breturn: +Removing instruction breturn: +Removing instruction b1_from_sprites_init: +Removing instruction breturn: Removing instruction vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_b1: Removing instruction b8: @@ -13131,10 +14921,11 @@ Removing instruction breturn: Removing instruction b1_from_fill: Removing instruction breturn: Removing instruction breturn: +Removing instruction b5: +Removing instruction b6: +Removing instruction b8: +Removing instruction b9: Succesful ASM optimization Pass5UnusedLabelElimination -Updating BasicUpstart to call main directly -Removing instruction jsr main -Succesful ASM optimization Pass5SkipBegin Skipping double jump to b3 in bne b17 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label breturn_from_b6 to b3 @@ -13147,7 +14938,7 @@ Relabelling long label b9_from_b26 to b2 Relabelling long label b4_from_b25 to b6 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 -Removing instruction jmp b3 +Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 @@ -13156,14 +14947,13 @@ Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp b1 +Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldy ypos2 with TAY -Removing instruction bbegin: Removing instruction b17: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b3 @@ -13171,7 +14961,10 @@ Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE (label) @14 -(label) @27 +(label) @18 +(label) @19 +(label) @30 +(label) @31 (label) @begin (label) @end (byte*) BGCOL @@ -13192,6 +14985,7 @@ FINAL SYMBOL TABLE (byte) BROWN (byte*) CHARGEN (byte*) CIA1_INTERRUPT +(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -13206,6 +15000,7 @@ FINAL SYMBOL TABLE (byte*) CIA2_PORT_B (byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR +(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 (byte) COLLISION_BOTTOM (const byte) COLLISION_BOTTOM#0 COLLISION_BOTTOM = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT @@ -13231,12 +15026,18 @@ FINAL SYMBOL TABLE (byte) GREY (const byte) GREY#0 GREY = (byte/signed byte/word/signed word/dword/signed dword) 12 (void()**) HARDWARE_IRQ +(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 (byte) IRQ_COLLISION_BG (byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 (byte) IRQ_LIGHTPEN (byte) IRQ_RASTER +(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) IRQ_RASTER_FIRST +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) IRQ_STATUS +(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ (byte) KEY_0 (byte) KEY_1 @@ -13357,15 +15158,21 @@ FINAL SYMBOL TABLE (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 PLAYFIELD_SCREEN_ORIGINAL = ((byte*))(word/signed word/dword/signed dword) 11264 (byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH (byte*) PLAYFIELD_SPRITES +(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) 8192 (byte*) PLAYFIELD_SPRITE_PTRS +(const byte*) PLAYFIELD_SPRITE_PTRS#0 PLAYFIELD_SPRITE_PTRS = (const byte*) PLAYFIELD_SCREEN#0+(const word) SPRITE_PTRS#0 (byte*) PROCPORT +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR +(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK +(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) PROCPORT_KERNEL_IO (byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 @@ -13388,19 +15195,28 @@ FINAL SYMBOL TABLE (byte*) SID_VOICE3_OSC (const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299 (byte*) SPRITES_COLS +(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE +(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 (byte*) SPRITES_EXPAND_X +(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y +(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 (byte*) SPRITES_MC +(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 (byte*) SPRITES_MC2 (byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS +(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS +(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 (word) SPRITE_PTRS +(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) 1016 (byte) VIC_BMM (byte*) VIC_CONTROL +(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 (byte) VIC_CSEL (byte) VIC_DEN @@ -13434,20 +15250,20 @@ FINAL SYMBOL TABLE (byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 (byte*) current_piece#16 current_piece zp ZP_WORD:12 0.5588235294117647 (byte*) current_piece#20 current_piece zp ZP_WORD:12 6.0 -(byte*~) current_piece#70 current_piece zp ZP_WORD:12 4.0 -(byte*~) current_piece#71 current_piece#71 zp ZP_WORD:5 4.0 -(byte*~) current_piece#72 current_piece#72 zp ZP_WORD:5 4.0 +(byte*~) current_piece#72 current_piece zp ZP_WORD:12 4.0 (byte*~) current_piece#73 current_piece#73 zp ZP_WORD:5 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:5 4.0 -(byte*~) current_piece#75 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#75 current_piece#75 zp ZP_WORD:5 4.0 +(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:5 4.0 +(byte*~) current_piece#77 current_piece zp ZP_WORD:12 4.0 (byte) current_piece_char (byte) current_piece_char#11 current_piece_char zp ZP_BYTE:18 1.04 (byte) current_piece_char#13 current_piece_char zp ZP_BYTE:18 0.7272727272727273 (byte) current_piece_char#16 current_piece_char zp ZP_BYTE:18 19.96078431372549 (byte) current_piece_char#21 current_piece_char zp ZP_BYTE:18 6.0 -(byte) current_piece_char#62 current_piece_char#62 zp ZP_BYTE:7 53.368421052631575 -(byte~) current_piece_char#75 current_piece_char#75 zp ZP_BYTE:7 4.0 -(byte~) current_piece_char#76 current_piece_char#76 zp ZP_BYTE:7 22.0 +(byte) current_piece_char#63 current_piece_char#63 zp ZP_BYTE:7 48.285714285714285 +(byte~) current_piece_char#83 current_piece_char#83 zp ZP_BYTE:7 4.0 +(byte~) current_piece_char#84 current_piece_char#84 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 19.96078431372549 (byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:15 0.2962962962962963 @@ -13455,25 +15271,25 @@ FINAL SYMBOL TABLE (byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.6666666666666666 (byte*) current_piece_gfx#27 current_piece_gfx zp ZP_WORD:15 6.0 (byte*) current_piece_gfx#4 current_piece_gfx zp ZP_WORD:15 4.0 -(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 53.368421052631575 -(byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#88 current_piece_gfx#88 zp ZP_WORD:5 11.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 48.285714285714285 +(byte*~) current_piece_gfx#95 current_piece_gfx#95 zp ZP_WORD:5 2.0 +(byte*~) current_piece_gfx#96 current_piece_gfx#96 zp ZP_WORD:5 11.0 (byte) current_xpos +(byte~) current_xpos#104 current_xpos#104 zp ZP_BYTE:4 7.333333333333333 (byte) current_xpos#11 current_xpos zp ZP_BYTE:17 2.313725490196078 (byte) current_xpos#16 current_xpos zp ZP_BYTE:17 0.72 (byte) current_xpos#20 current_xpos zp ZP_BYTE:17 0.871794871794872 (byte) current_xpos#3 current_xpos zp ZP_BYTE:17 4.0 (byte) current_xpos#34 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.333333333333333 (byte) current_xpos#5 current_xpos zp ZP_BYTE:17 4.0 -(byte~) current_xpos#96 current_xpos#96 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos (byte) current_ypos#1 current_ypos zp ZP_BYTE:2 4.0 (byte) current_ypos#10 reg byte x 13.0 (byte) current_ypos#14 current_ypos zp ZP_BYTE:2 0.48484848484848475 (byte) current_ypos#22 current_ypos zp ZP_BYTE:2 0.5588235294117647 (byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 -(byte~) current_ypos#71 reg byte x 5.5 +(byte~) current_ypos#78 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -13486,6 +15302,51 @@ FINAL SYMBOL TABLE (const word) fill::size#0 size = (word/signed word/dword/signed dword) 1000 (byte*) fill::start (byte) fill::val +interrupt(HARDWARE_CLOBBER)(void()) irq() +(byte~) irq::$3 reg byte a 4.0 +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@4 +(label) irq::@5 +(label) irq::@6 +(label) irq::@8 +(label) irq::@9 +(label) irq::@return +(byte) irq::ptr +(byte) irq::ptr#0 reg byte a 3.0 +(byte) irq::ptr#1 reg byte x 2.6666666666666665 +(byte) irq::ptr#2 reg byte x 4.0 +(byte) irq::raster_next +(byte) irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) irq::raster_next#1 reg byte x 4.0 +(byte) irq::raster_next#2 reg byte x 6.0 +(label) irq::toSpritePtr2 +(word~) irq::toSpritePtr2_$0 +(word~) irq::toSpritePtr2_$1 +(byte~) irq::toSpritePtr2_$2 +(byte) irq::toSpritePtr2_return +(const byte) irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) irq::toSpritePtr2_sprite +(byte) irq::ypos +(byte) irq::ypos#0 reg byte a 2.5 +(byte) irq_cnt +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:23 0.2857142857142857 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:23 4.0 +(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:23 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:20 0.25 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:20 1.0 +(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:20 6.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:20 1.3333333333333333 +(byte) irq_sprite_ptr +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:22 0.3333333333333333 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:22 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:22 20.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:21 1.0 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:21 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:21 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 @@ -13591,9 +15452,9 @@ FINAL SYMBOL TABLE (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 (byte~) main::$12 reg byte a 22.0 +(byte~) main::$13 reg byte a 22.0 +(byte~) main::$14 reg byte a 22.0 (label) main::@1 (label) main::@10 (label) main::@19 @@ -13602,20 +15463,22 @@ FINAL SYMBOL TABLE (label) main::@23 (label) main::@24 (label) main::@25 +(label) main::@26 (label) main::@27 -(label) main::@28 (label) main::@29 (label) main::@30 (label) main::@31 (label) main::@32 +(label) main::@33 +(label) main::@34 (label) main::@4 (label) main::@7 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:20 4.0 +(byte) main::key_event#0 key_event zp ZP_BYTE:24 4.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:21 4.4 -(byte) main::render#2 render zp ZP_BYTE:21 4.4 +(byte) main::render#1 render zp ZP_BYTE:25 4.4 +(byte) main::render#2 render zp ZP_BYTE:25 4.4 (byte) main::render#3 reg byte a 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) (byte~) play_collision::$7 reg byte a 2002.0 @@ -13638,7 +15501,7 @@ FINAL SYMBOL TABLE (byte) play_collision::col#2 col zp ZP_BYTE:11 638.25 (byte~) play_collision::col#9 col zp ZP_BYTE:11 202.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte) play_collision::i#1 i zp ZP_BYTE:28 161.76923076923077 (byte~) play_collision::i#11 i#11 zp ZP_BYTE:10 202.0 (byte~) play_collision::i#13 i#13 zp ZP_BYTE:10 2002.0 (byte) play_collision::i#2 i#2 zp ZP_BYTE:10 1552.0 @@ -13655,7 +15518,7 @@ FINAL SYMBOL TABLE (byte*) play_collision::piece_gfx (byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:26 78.71428571428571 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 @@ -13842,12 +15705,14 @@ FINAL SYMBOL TABLE (const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 playfield_lines_idx = { fill( PLAYFIELD_LINES#0+1, 0) } (void()) render_current() (label) render_current::@1 +(label) render_current::@10 +(label) render_current::@13 (label) render_current::@2 (label) render_current::@3 (label) render_current::@4 -(label) render_current::@6 +(label) render_current::@5 (label) render_current::@7 -(label) render_current::@8 +(label) render_current::@9 (label) render_current::@return (byte) render_current::c (byte) render_current::c#1 reg byte x 1501.5 @@ -13855,15 +15720,16 @@ FINAL SYMBOL TABLE (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i -(byte) render_current::i#1 i zp ZP_BYTE:10 429.0 -(byte) render_current::i#2 i zp ZP_BYTE:10 1552.0 -(byte) render_current::i#4 i zp ZP_BYTE:10 75.75 +(byte) render_current::i#1 i zp ZP_BYTE:10 202.0 +(byte) render_current::i#10 i zp ZP_BYTE:10 429.0 +(byte) render_current::i#3 i zp ZP_BYTE:10 60.599999999999994 +(byte) render_current::i#4 i zp ZP_BYTE:10 1552.0 (byte) render_current::i#8 i zp ZP_BYTE:10 300.75 (byte) render_current::l (byte) render_current::l#1 l zp ZP_BYTE:9 151.5 -(byte) render_current::l#3 l zp ZP_BYTE:9 13.466666666666667 +(byte) render_current::l#4 l zp ZP_BYTE:9 11.882352941176471 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:22 100.18181818181819 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:26 100.18181818181819 (byte) render_current::xpos (byte) render_current::xpos#0 xpos zp ZP_BYTE:11 202.0 (byte) render_current::xpos#1 xpos zp ZP_BYTE:11 667.3333333333334 @@ -13871,10 +15737,10 @@ FINAL SYMBOL TABLE (byte) render_current::ypos2 (byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 (byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:8 67.33333333333333 -(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 29.000000000000004 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 31.6875 (void()) render_init() -(byte~) render_init::$10 reg byte a 22.0 -(byte*~) render_init::$15 $15 zp ZP_WORD:12 202.0 +(byte~) render_init::$11 reg byte a 22.0 +(byte*~) render_init::$18 $18 zp ZP_WORD:12 202.0 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 @@ -13924,7 +15790,7 @@ 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_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (void()) render_playfield() -(byte~) render_playfield::$1 reg byte a 202.0 +(byte~) render_playfield::$2 reg byte a 202.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -13939,10 +15805,10 @@ FINAL SYMBOL TABLE (byte) render_playfield::l (byte) render_playfield::l#1 l zp ZP_BYTE:4 151.5 (byte) render_playfield::l#2 l zp ZP_BYTE:4 33.666666666666664 -(byte*) render_playfield::line -(byte*) render_playfield::line#0 line zp ZP_WORD:5 202.0 -(byte*) render_playfield::line#1 line zp ZP_WORD:5 500.5 -(byte*) render_playfield::line#2 line zp ZP_WORD:5 1552.0 +(byte*) render_playfield::screen_line +(byte*) render_playfield::screen_line#0 screen_line zp ZP_WORD:5 202.0 +(byte*) render_playfield::screen_line#1 screen_line zp ZP_WORD:5 500.5 +(byte*) render_playfield::screen_line#2 screen_line zp ZP_WORD:5 1552.0 (void()) render_screen_original((byte*) render_screen_original::screen) (byte/signed word/word/dword/signed dword~) render_screen_original::$3 reg byte a 202.0 (label) render_screen_original::@1 @@ -13975,8 +15841,8 @@ FINAL SYMBOL TABLE (byte) render_screen_original::y (byte) render_screen_original::y#1 y zp ZP_BYTE:2 16.5 (byte) render_screen_original::y#6 y zp ZP_BYTE:2 1.2222222222222223 -(byte*[PLAYFIELD_LINES#0+3]) screen_lines -(const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) } +(byte*[PLAYFIELD_LINES#0]) screen_lines +(const byte*[PLAYFIELD_LINES#0]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0, 0) } (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return @@ -13984,17 +15850,37 @@ FINAL SYMBOL TABLE (byte) sid_rnd::return#2 reg byte a 202.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return +(void()) sprites_init() +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#1 reg byte x 16.5 +(byte) sprites_init::s#2 reg byte x 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 reg byte a 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 +(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 +(void()) sprites_irq_init() +(label) sprites_irq_init::@return +(label) toSpritePtr1 +(word~) toSpritePtr1_$0 +(word~) toSpritePtr1_$1 +(byte~) toSpritePtr1_$2 +(byte) toSpritePtr1_return +(const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) toSpritePtr1_sprite -zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 play_spawn_current::$3 ] +zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 play_spawn_current::$3 ] zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::l#6 play_lock_current::l#1 ] -reg byte x [ current_ypos#10 current_ypos#71 ] -zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] +reg byte x [ current_ypos#10 current_ypos#78 ] +zp ZP_BYTE:4 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 play_collision::l#6 play_collision::l#1 ] -zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:9 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:10 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] reg byte a [ play_move_rotate::return#1 ] @@ -14004,7 +15890,7 @@ reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_leftright::return#1 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$15 ] +zp ZP_WORD:12 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$18 ] zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] @@ -14019,30 +15905,36 @@ reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 ke reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] +reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ 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:20 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +zp ZP_BYTE:21 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:22 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:23 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] reg byte a [ keyboard_event_get::return#3 ] -zp ZP_BYTE:20 [ main::key_event#0 ] +zp ZP_BYTE:24 [ main::key_event#0 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$10 ] -zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +reg byte a [ main::$12 ] +zp ZP_BYTE:25 [ main::render#1 main::render#2 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#4 ] -reg byte a [ main::$11 ] +reg byte a [ main::$13 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::return#4 ] -reg byte a [ main::$12 ] +reg byte a [ main::$14 ] reg byte a [ main::render#3 ] -zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +zp ZP_WORD:26 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] -reg byte a [ render_playfield::$1 ] +reg byte a [ render_playfield::$2 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_collision::return#13 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:24 [ play_collision::i#1 ] +zp ZP_BYTE:28 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] @@ -14075,34 +15967,59 @@ reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ play_init::$1 ] -reg byte a [ render_init::$10 ] +reg byte a [ sprites_init::s2#0 ] +reg byte a [ render_init::$11 ] reg byte a [ render_screen_original::$3 ] +reg byte a [ irq::ypos#0 ] +reg byte a [ irq::ptr#0 ] +reg byte x [ irq::ptr#1 ] +reg byte x [ irq::ptr#2 ] +reg byte a [ irq::$3 ] FINAL ASSEMBLER -Score: 428577 +Score: 435343 //SEG0 Basic Upstart .pc = $801 "Basic" -:BasicUpstart(main) +:BasicUpstart(bbegin) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f .label CIA2_PORT_A = $dd00 .label CIA2_PORT_A_DDR = $dd02 + .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const WHITE = 1 .const CYAN = 3 @@ -14127,10 +16044,12 @@ Score: 428577 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .label PLAYFIELD_SCREEN_ORIGINAL = $2c00 + .const IRQ_RASTER_FIRST = $31 .const current_movedown_slow = $32 .const current_movedown_fast = 5 .const COLLISION_NONE = 0 @@ -14138,7 +16057,13 @@ Score: 428577 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $13 + .label irq_raster_next = $14 + .label irq_sprite_ypos = $15 + .label irq_sprite_ptr = $16 + .label irq_cnt = $17 .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 @@ -14149,465 +16074,512 @@ Score: 428577 .label current_piece_12 = 5 .label current_xpos_48 = 4 .label current_piece_gfx_53 = 5 - .label current_piece_char_62 = 7 - .label current_xpos_96 = 4 - .label current_piece_gfx_87 = 5 - .label current_piece_gfx_88 = 5 - .label current_piece_char_75 = 7 - .label current_piece_char_76 = 7 - .label current_piece_71 = 5 - .label current_piece_72 = 5 + .label current_piece_char_63 = 7 + .label current_xpos_104 = 4 + .label current_piece_gfx_95 = 5 + .label current_piece_gfx_96 = 5 + .label current_piece_char_83 = 7 + .label current_piece_char_84 = 7 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 + .label current_piece_76 = 5 //SEG2 @begin +bbegin: //SEG3 @14 //SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "nes-screen.imap" }} //SEG5 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} -//SEG6 [3] phi from @14 to @27 [phi:@14->@27] -//SEG7 @27 -//SEG8 [4] call main -//SEG9 [6] phi from @27 to main [phi:@27->main] -//SEG10 [5] phi from @27 to @end [phi:@27->@end] -//SEG11 @end -//SEG12 main +//SEG6 @18 +//SEG7 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG8 @19 +//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG10 [5] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos +//SEG11 [6] phi from @19 to toSpritePtr1 [phi:@19->toSpritePtr1] +//SEG12 toSpritePtr1 +//SEG13 @31 +//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta irq_sprite_ptr +//SEG15 [8] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG16 [9] phi from @31 to @30 [phi:@31->@30] +//SEG17 @30 +//SEG18 [10] call main +//SEG19 [12] phi from @30 to main [phi:@30->main] + jsr main +//SEG20 [11] phi from @30 to @end [phi:@30->@end] +//SEG21 @end +//SEG22 main main: { - .label key_event = $14 - .label render = $15 - //SEG13 [7] call sid_rnd_init + .label key_event = $18 + .label render = $19 + //SEG23 [13] call sid_rnd_init jsr sid_rnd_init - //SEG14 main::@21 - //SEG15 asm { sei } + //SEG24 main::@21 + //SEG25 asm { sei } sei - //SEG16 [9] call render_init - //SEG17 [316] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG26 [15] call render_init + //SEG27 [352] phi from main::@21 to render_init [phi:main::@21->render_init] jsr render_init - //SEG18 [10] phi from main::@21 to main::@22 [phi:main::@21->main::@22] - //SEG19 main::@22 - //SEG20 [11] call play_init - //SEG21 [305] phi from main::@22 to play_init [phi:main::@22->play_init] + //SEG28 [16] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG29 main::@22 + //SEG30 [17] call sprites_init + jsr sprites_init + //SEG31 [18] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG32 main::@23 + //SEG33 [19] call sprites_irq_init + jsr sprites_irq_init + //SEG34 [20] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG35 main::@24 + //SEG36 [21] call play_init + //SEG37 [317] phi from main::@24 to play_init [phi:main::@24->play_init] jsr play_init - //SEG22 [12] phi from main::@22 to main::@23 [phi:main::@22->main::@23] - //SEG23 main::@23 - //SEG24 [13] call play_spawn_current - //SEG25 [185] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] + //SEG38 [22] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG39 main::@25 + //SEG40 [23] call play_spawn_current + //SEG41 [197] phi from main::@25 to play_spawn_current [phi:main::@25->play_spawn_current] jsr play_spawn_current - //SEG26 [14] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG27 main::@24 - //SEG28 [15] call render_playfield - //SEG29 [73] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] + //SEG42 [24] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG43 main::@26 + //SEG44 [25] call render_playfield + //SEG45 [85] phi from main::@26 to render_playfield [phi:main::@26->render_playfield] jsr render_playfield - //SEG30 main::@25 - //SEG31 [16] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG46 main::@27 + //SEG47 [26] (byte*~) current_piece_gfx#95 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_95 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG32 [17] (byte~) current_piece_char#75 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 + sta current_piece_gfx_95+1 + //SEG48 [27] (byte~) current_piece_char#83 ← (byte) current_piece_char#13 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_75 - //SEG33 [18] call render_current - //SEG34 [53] phi from main::@25 to render_current [phi:main::@25->render_current] - //SEG35 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#75 [phi:main::@25->render_current#0] -- register_copy - //SEG36 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG37 [53] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + sta current_piece_char_83 + //SEG49 [28] call render_current + //SEG50 [63] phi from main::@27 to render_current [phi:main::@27->render_current] + //SEG51 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#83 [phi:main::@27->render_current#0] -- register_copy + //SEG52 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#95 [phi:main::@27->render_current#1] -- register_copy + //SEG53 [63] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_48 - //SEG38 [53] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + //SEG54 [63] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG39 [19] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG55 [29] (byte*~) current_piece#72 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG40 [20] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - //SEG41 [20] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG56 [30] phi from main::@27 to main::@1 [phi:main::@27->main::@1] + //SEG57 [30] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG42 [20] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG58 [30] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#1] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG43 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@25->main::@1#2] -- register_copy - //SEG44 [20] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG59 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#13 [phi:main::@27->main::@1#2] -- register_copy + //SEG60 [30] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#3] -- vbuz1=vbuc1 sta current_ypos - //SEG45 [20] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG61 [30] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@27->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG46 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy - //SEG47 [20] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG62 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@27->main::@1#5] -- register_copy + //SEG63 [30] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG48 [20] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy - //SEG49 main::@1 - //SEG50 main::@4 + //SEG64 [30] phi (byte*) current_piece#16 = (byte*~) current_piece#72 [phi:main::@27->main::@1#7] -- register_copy + //SEG65 main::@1 + //SEG66 main::@4 b4: - //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG67 [31] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG52 main::@7 + //SEG68 main::@7 b7: - //SEG53 [22] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG69 [32] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 - //SEG54 main::@9 - //SEG55 [23] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG70 main::@9 + //SEG71 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [24] call keyboard_event_scan - //SEG57 [249] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG72 [34] call keyboard_event_scan + //SEG73 [261] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] jsr keyboard_event_scan - //SEG58 [25] phi from main::@9 to main::@27 [phi:main::@9->main::@27] - //SEG59 main::@27 - //SEG60 [26] call keyboard_event_get + //SEG74 [35] phi from main::@9 to main::@29 [phi:main::@9->main::@29] + //SEG75 main::@29 + //SEG76 [36] call keyboard_event_get jsr keyboard_event_get - //SEG61 [27] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG77 [37] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - //SEG62 main::@28 - //SEG63 [28] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG78 main::@30 + //SEG79 [38] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG64 [29] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG65 [30] call play_move_down + //SEG80 [39] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG81 [40] call play_move_down jsr play_move_down - //SEG66 [31] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx + //SEG82 [41] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx txa - //SEG67 main::@29 - //SEG68 [32] (byte~) main::$10 ← (byte) play_move_down::return#3 - // (byte~) main::$10 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG69 [33] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa + //SEG83 main::@31 + //SEG84 [42] (byte~) main::$12 ← (byte) play_move_down::return#3 + // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a + //SEG85 [43] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG70 [34] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG86 [44] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG71 [35] call play_move_leftright + //SEG87 [45] call play_move_leftright jsr play_move_leftright - //SEG72 [36] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + //SEG88 [46] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a - //SEG73 main::@30 - //SEG74 [37] (byte~) main::$11 ← (byte) play_move_leftright::return#4 - // (byte~) main::$11 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG75 [38] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa + //SEG89 main::@32 + //SEG90 [47] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a + //SEG91 [48] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG76 [39] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG92 [49] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG77 [40] call play_move_rotate + //SEG93 [50] call play_move_rotate jsr play_move_rotate - //SEG78 [41] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + //SEG94 [51] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a - //SEG79 main::@31 - //SEG80 [42] (byte~) main::$12 ← (byte) play_move_rotate::return#4 - // (byte~) main::$12 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG81 [43] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa + //SEG95 main::@33 + //SEG96 [52] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a + //SEG97 [53] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG82 [44] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG98 [54] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG83 [45] phi from main::@31 to main::@19 [phi:main::@31->main::@19] - //SEG84 main::@19 - //SEG85 [46] call render_playfield - //SEG86 [73] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG99 [55] phi from main::@33 to main::@19 [phi:main::@33->main::@19] + //SEG100 main::@19 + //SEG101 [56] call render_playfield + //SEG102 [85] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield - //SEG87 main::@32 - //SEG88 [47] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuxx=vbuz1 + //SEG103 main::@34 + //SEG104 [57] (byte~) current_ypos#78 ← (byte) current_ypos#14 -- vbuxx=vbuz1 ldx current_ypos - //SEG89 [48] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + //SEG105 [58] (byte~) current_xpos#104 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_96 - //SEG90 [49] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 + sta current_xpos_104 + //SEG106 [59] (byte*~) current_piece_gfx#96 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_88 + sta current_piece_gfx_96 lda current_piece_gfx+1 - sta current_piece_gfx_88+1 - //SEG91 [50] (byte~) current_piece_char#76 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 + sta current_piece_gfx_96+1 + //SEG107 [60] (byte~) current_piece_char#84 ← (byte) current_piece_char#11 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_76 - //SEG92 [51] call render_current - //SEG93 [53] phi from main::@32 to render_current [phi:main::@32->render_current] - //SEG94 [53] phi (byte) current_piece_char#62 = (byte~) current_piece_char#76 [phi:main::@32->render_current#0] -- register_copy - //SEG95 [53] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG96 [53] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG97 [53] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + sta current_piece_char_84 + //SEG108 [61] call render_current + //SEG109 [63] phi from main::@34 to render_current [phi:main::@34->render_current] + //SEG110 [63] phi (byte) current_piece_char#63 = (byte~) current_piece_char#84 [phi:main::@34->render_current#0] -- register_copy + //SEG111 [63] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#96 [phi:main::@34->render_current#1] -- register_copy + //SEG112 [63] phi (byte) current_xpos#48 = (byte~) current_xpos#104 [phi:main::@34->render_current#2] -- register_copy + //SEG113 [63] phi (byte) current_ypos#10 = (byte~) current_ypos#78 [phi:main::@34->render_current#3] -- register_copy jsr render_current - //SEG98 main::@10 + //SEG114 main::@10 b10: - //SEG99 [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG115 [62] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG100 [20] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG101 [20] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy - //SEG102 [20] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG103 [20] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy - //SEG104 [20] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy - //SEG105 [20] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy - //SEG106 [20] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy - //SEG107 [20] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy - //SEG108 [20] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy + //SEG116 [30] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG117 [30] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy + //SEG118 [30] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG119 [30] phi (byte) current_piece_char#16 = (byte) current_piece_char#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG120 [30] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG121 [30] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG122 [30] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG123 [30] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG124 [30] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b4 } -//SEG109 render_current +//SEG125 render_current render_current: { .label ypos2 = 8 - .label l = 9 - .label screen_line = $16 + .label screen_line = $1a .label xpos = $b .label i = $a - //SEG110 [54] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + .label l = 9 + //SEG126 [64] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG111 [55] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] - //SEG112 [55] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG127 [65] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG128 [65] phi (byte) render_current::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 - sta i - //SEG113 [55] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG114 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy - //SEG115 [55] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - //SEG116 [55] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG117 [55] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG118 [55] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy - //SEG119 render_current::@1 + //SEG129 [65] phi (byte) render_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + sta i + //SEG130 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG131 [65] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + //SEG132 [65] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG133 [65] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG134 [65] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy + //SEG135 render_current::@1 b1: - //SEG120 [56] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG136 [66] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 -- vbuz1_gt_vbuc1_then_la1 + lda ypos2 + cmp #2 + beq !+ + bcs b13 + !: + //SEG137 render_current::@7 + b7: + //SEG138 [67] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + lda #4 + clc + adc i + sta i + //SEG139 [68] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + //SEG140 [68] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + //SEG141 render_current::@3 + b3: + //SEG142 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG143 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + inc l + //SEG144 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + lda l + cmp #4 + bne b1 + //SEG145 render_current::@return + //SEG146 [72] return + rts + //SEG147 render_current::@13 + b13: + //SEG148 [73] if((byte) render_current::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES - bcs b2 - //SEG121 render_current::@6 - //SEG122 [57] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + bcc b2 + jmp b7 + //SEG149 render_current::@2 + b2: + //SEG150 [74] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 + lda screen_lines,y + sta screen_line + lda screen_lines+1,y + sta screen_line+1 + //SEG151 [75] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + lda current_xpos_48 + sta xpos + //SEG152 [76] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + //SEG153 [76] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@2->render_current::@4#0] -- vbuxx=vbuc1 + ldx #0 + //SEG154 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG155 [76] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + //SEG156 [76] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + //SEG157 [76] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG158 [76] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG159 [76] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + //SEG160 render_current::@4 + b4: + //SEG161 [77] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + ldy i + lda (current_piece_gfx_53),y + //SEG162 [78] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 + inc i + //SEG163 [79] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 -- vbuaa_eq_0_then_la1 + cmp #0 + beq b5 + //SEG164 render_current::@9 + //SEG165 [80] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 + lda xpos + cmp #PLAYFIELD_COLS + bcs b5 + //SEG166 render_current::@10 + //SEG167 [81] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_63 + ldy xpos + sta (screen_line),y + //SEG168 render_current::@5 + b5: + //SEG169 [82] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + inc xpos + //SEG170 [83] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + inx + //SEG171 [84] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 -- vbuxx_neq_vbuc1_then_la1 + cpx #4 + bne b4 + jmp b3 +} +//SEG172 render_playfield +render_playfield: { + .label screen_line = 5 + .label i = 7 + .label l = 4 + //SEG173 [86] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG174 [86] 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 + //SEG175 [86] 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 + //SEG176 [86] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG177 [86] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG178 [86] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG179 render_playfield::@1 + b1: + //SEG180 [87] (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 + //SEG181 [88] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_playfield::$2) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG123 [58] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 - lda current_xpos_48 - sta xpos - //SEG124 [59] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - //SEG125 [59] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG182 [89] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG183 [89] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG126 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG127 [59] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy - //SEG128 [59] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - //SEG129 [59] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG130 [59] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG131 [59] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy - //SEG132 render_current::@3 - b3: - //SEG133 [60] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 - ldy i - lda (current_piece_gfx_53),y - //SEG134 [61] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG135 [62] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 - cmp #0 - beq b4 - //SEG136 render_current::@7 - //SEG137 [63] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 - lda xpos - cmp #PLAYFIELD_COLS - bcs b4 - //SEG138 render_current::@8 - //SEG139 [64] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_char_62 - ldy xpos - sta (screen_line),y - //SEG140 render_current::@4 - b4: - //SEG141 [65] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 - inc xpos - //SEG142 [66] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx - inx - //SEG143 [67] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #4 - bne b3 - //SEG144 [68] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - //SEG145 [68] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - //SEG146 render_current::@2 + //SEG184 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG185 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG186 [89] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG187 [89] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG188 [89] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG189 [89] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG190 render_playfield::@2 b2: - //SEG147 [69] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda ypos2 - clc - adc #2 - sta ypos2 - //SEG148 [70] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 - inc l - //SEG149 [71] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 - lda l - cmp #4 - bne b1 - //SEG150 render_current::@return - //SEG151 [72] return - rts -} -//SEG152 render_playfield -render_playfield: { - .label line = 5 - .label i = 7 - .label l = 4 - //SEG153 [74] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG154 [74] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i - //SEG155 [74] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 - sta l - //SEG156 [74] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG157 [74] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG158 [74] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG159 render_playfield::@1 - b1: - //SEG160 [75] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 - lda l - asl - //SEG161 [76] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa - tay - lda screen_lines,y - sta line - lda screen_lines+1,y - sta line+1 - //SEG162 [77] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG163 [77] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 - ldx #0 - //SEG164 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG165 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG166 [77] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG167 [77] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG168 [77] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG169 [77] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG170 render_playfield::@2 - b2: - //SEG171 [78] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG191 [90] *((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 (line),y - //SEG172 [79] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 - inc line + sta (screen_line),y + //SEG192 [91] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + inc screen_line bne !+ - inc line+1 + inc screen_line+1 !: - //SEG173 [80] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG193 [92] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG174 [81] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG194 [93] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG175 [82] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG195 [94] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2 - //SEG176 render_playfield::@3 - //SEG177 [83] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG196 render_playfield::@3 + //SEG197 [95] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG178 [84] 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 + //SEG198 [96] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG179 render_playfield::@return - //SEG180 [85] return + //SEG199 render_playfield::@return + //SEG200 [97] return rts } -//SEG181 play_move_rotate +//SEG201 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG202 [98] 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 - //SEG183 play_move_rotate::@6 - //SEG184 [87] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG203 play_move_rotate::@6 + //SEG204 [99] 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 - //SEG185 [88] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG205 [100] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] b3: - //SEG186 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG187 [88] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG188 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG206 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG207 [100] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG208 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG189 play_move_rotate::@return + //SEG209 play_move_rotate::@return breturn: - //SEG190 [89] return + //SEG210 [101] return rts - //SEG191 play_move_rotate::@2 + //SEG211 play_move_rotate::@2 b2: - //SEG192 [90] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG212 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG193 [91] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG213 [103] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG194 [92] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] - //SEG195 [92] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy - //SEG196 play_move_rotate::@4 + //SEG214 [104] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG215 [104] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG216 play_move_rotate::@4 b4: - //SEG197 [93] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 + //SEG217 [105] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG198 [94] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + //SEG218 [106] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG199 [95] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG219 [107] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG200 [96] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG220 [108] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_76 lda current_piece+1 - sta current_piece_74+1 - //SEG201 [97] call play_collision - //SEG202 [105] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] - //SEG203 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG204 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG205 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG206 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + sta current_piece_76+1 + //SEG221 [109] call play_collision + //SEG222 [117] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG223 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG224 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG225 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG226 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG207 [98] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + //SEG227 [110] (byte) play_collision::return#13 ← (byte) play_collision::return#14 // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a - //SEG208 play_move_rotate::@14 - //SEG209 [99] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + //SEG228 play_move_rotate::@14 + //SEG229 [111] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a - //SEG210 [100] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG230 [112] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG211 play_move_rotate::@11 - //SEG212 [101] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG231 play_move_rotate::@11 + //SEG232 [113] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG213 [102] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG233 [114] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG214 [88] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG215 [88] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG216 [88] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG217 [88] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG234 [100] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG235 [100] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG236 [100] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG237 [100] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG218 play_move_rotate::@1 + //SEG238 play_move_rotate::@1 b1: - //SEG219 [103] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG239 [115] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG220 [104] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG240 [116] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4 } -//SEG221 play_collision +//SEG241 play_collision play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 - .label playfield_line = $16 - .label i = $18 + .label playfield_line = $1a + .label i = $1c .label col = $b .label l = 9 .label i_2 = $a .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG222 [106] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG242 [118] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -14615,548 +16587,548 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG223 [107] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG243 [119] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG224 [108] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] - //SEG225 [108] 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 + //SEG244 [120] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG245 [120] 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 - //SEG226 [108] 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 + //SEG246 [120] 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 - //SEG227 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy - //SEG228 play_collision::@1 + //SEG247 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG248 play_collision::@1 b1: - //SEG229 [109] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG249 [121] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG230 [110] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG250 [122] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG231 [111] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG232 [111] 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 + //SEG251 [123] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG252 [123] 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 - //SEG233 [111] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG234 [111] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG235 play_collision::@2 + //SEG253 [123] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG254 [123] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG255 play_collision::@2 b2: - //SEG236 [112] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG256 [124] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG237 [113] 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 + //SEG257 [125] 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 - //SEG238 play_collision::@8 - //SEG239 [114] 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 + //SEG258 play_collision::@8 + //SEG259 [126] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG240 [115] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG241 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG260 [127] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG261 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG242 play_collision::@return + //SEG262 play_collision::@return breturn: - //SEG243 [116] return + //SEG263 [128] return rts - //SEG244 play_collision::@4 + //SEG264 play_collision::@4 b4: - //SEG245 [117] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG265 [129] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG246 [118] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG266 [130] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG247 [115] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG248 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG267 [127] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG268 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG249 play_collision::@5 + //SEG269 play_collision::@5 b5: - //SEG250 [119] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG270 [131] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG251 [115] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG252 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG271 [127] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG272 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG253 play_collision::@6 + //SEG273 play_collision::@6 b6: - //SEG254 [120] 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 + //SEG274 [132] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG255 [115] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG256 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG275 [127] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG276 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG257 play_collision::@3 + //SEG277 play_collision::@3 b3: - //SEG258 [121] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG278 [133] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG259 [122] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG279 [134] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG260 [123] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG280 [135] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG261 play_collision::@17 - //SEG262 [124] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG281 play_collision::@17 + //SEG282 [136] (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 - //SEG263 [125] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG283 [137] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG264 [126] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [138] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG265 [115] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] - //SEG266 [115] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG285 [127] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG286 [127] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG267 play_collision::@20 + //SEG287 play_collision::@20 b20: - //SEG268 [127] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG288 [139] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG269 [108] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] - //SEG270 [108] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG271 [108] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG272 [108] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG289 [120] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG290 [120] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG291 [120] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG292 [120] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG273 play_collision::@21 + //SEG293 play_collision::@21 b21: - //SEG274 [128] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG294 [140] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG275 [111] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] - //SEG276 [111] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG277 [111] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG278 [111] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG295 [123] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG296 [123] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG297 [123] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG298 [123] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG279 play_move_leftright +//SEG299 play_move_leftright play_move_leftright: { - //SEG280 [129] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG300 [141] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 - //SEG281 play_move_leftright::@6 - //SEG282 [130] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG301 play_move_leftright::@6 + //SEG302 [142] 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 - //SEG283 play_move_leftright::@7 - //SEG284 [131] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG303 play_move_leftright::@7 + //SEG304 [143] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG285 [132] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + //SEG305 [144] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG286 [133] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG306 [145] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG287 [134] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG307 [146] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_75 + lda current_piece+1 + sta current_piece_75+1 + //SEG308 [147] call play_collision + //SEG309 [117] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG310 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG311 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG312 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG313 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG314 [148] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a + //SEG315 play_move_leftright::@15 + //SEG316 [149] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a + //SEG317 [150] 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 + //SEG318 play_move_leftright::@8 + //SEG319 [151] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG320 [152] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + b2: + //SEG321 [152] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG322 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #1 + jmp breturn + //SEG323 [152] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + b3: + //SEG324 [152] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG325 [152] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #0 + //SEG326 play_move_leftright::@return + breturn: + //SEG327 [153] return + rts + //SEG328 play_move_leftright::@1 + b1: + //SEG329 [154] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx play_collision.xpos + //SEG330 [155] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 + ldy current_ypos + //SEG331 [156] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + ldx current_orientation + //SEG332 [157] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_74 + lda current_piece+1 + sta current_piece_74+1 + //SEG333 [158] call play_collision + //SEG334 [117] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG335 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG336 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG337 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG338 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + jsr play_collision + //SEG339 [159] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a + //SEG340 play_move_leftright::@14 + //SEG341 [160] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a + //SEG342 [161] 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 + //SEG343 play_move_leftright::@11 + //SEG344 [162] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp b2 +} +//SEG345 play_move_down +play_move_down: { + //SEG346 [163] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + inc current_movedown_counter + //SEG347 [164] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_SPACE + bne b3 + //SEG348 [165] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG349 play_move_down::@8 + //SEG350 [166] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG351 [166] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + ldx #1 + jmp b1 + //SEG352 [166] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + b3: + //SEG353 [166] 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 + //SEG354 play_move_down::@1 + b1: + //SEG355 [167] call keyboard_event_pressed + //SEG356 [250] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG357 [250] 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 + //SEG358 [168] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a + //SEG359 play_move_down::@17 + //SEG360 [169] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a + //SEG361 [170] 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 + //SEG362 play_move_down::@9 + //SEG363 [171] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_fast + bcc b2 + //SEG364 play_move_down::@10 + //SEG365 [172] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + inx + //SEG366 [173] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG367 [173] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG368 play_move_down::@2 + b2: + //SEG369 [174] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_slow + bcc b4 + //SEG370 play_move_down::@11 + //SEG371 [175] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + inx + //SEG372 [176] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG373 [176] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG374 play_move_down::@4 + b4: + //SEG375 [177] 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 + //SEG376 play_move_down::@12 + //SEG377 [178] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + ldy current_ypos + iny + //SEG378 [179] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + lda current_xpos + sta play_collision.xpos + //SEG379 [180] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 + ldx current_orientation + //SEG380 [181] (byte*~) current_piece#73 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece sta current_piece_73 lda current_piece+1 sta current_piece_73+1 - //SEG288 [135] call play_collision - //SEG289 [105] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] - //SEG290 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG291 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG292 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG293 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG381 [182] call play_collision + //SEG382 [117] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG383 [117] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG384 [117] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG385 [117] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG386 [117] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG294 [136] (byte) play_collision::return#12 ← (byte) play_collision::return#14 - // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a - //SEG295 play_move_leftright::@15 - //SEG296 [137] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a - //SEG297 [138] 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 - //SEG298 play_move_leftright::@8 - //SEG299 [139] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 - inc current_xpos - //SEG300 [140] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] - b2: - //SEG301 [140] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG302 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #1 - jmp breturn - //SEG303 [140] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] - b3: - //SEG304 [140] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG305 [140] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #0 - //SEG306 play_move_leftright::@return - breturn: - //SEG307 [141] return - rts - //SEG308 play_move_leftright::@1 - b1: - //SEG309 [142] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx play_collision.xpos - //SEG310 [143] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 - ldy current_ypos - //SEG311 [144] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 - ldx current_orientation - //SEG312 [145] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_72 - lda current_piece+1 - sta current_piece_72+1 - //SEG313 [146] call play_collision - //SEG314 [105] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG315 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG316 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG317 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG318 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy - jsr play_collision - //SEG319 [147] (byte) play_collision::return#1 ← (byte) play_collision::return#14 - // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a - //SEG320 play_move_leftright::@14 - //SEG321 [148] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a - //SEG322 [149] 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 - //SEG323 play_move_leftright::@11 - //SEG324 [150] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b2 -} -//SEG325 play_move_down -play_move_down: { - //SEG326 [151] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 - inc current_movedown_counter - //SEG327 [152] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #KEY_SPACE - bne b3 - //SEG328 [153] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG329 play_move_down::@8 - //SEG330 [154] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG331 [154] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #1 - jmp b1 - //SEG332 [154] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] - b3: - //SEG333 [154] 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 - //SEG334 play_move_down::@1 - b1: - //SEG335 [155] call keyboard_event_pressed - //SEG336 [238] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG337 [238] 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 - //SEG338 [156] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG339 play_move_down::@17 - //SEG340 [157] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG341 [158] 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 - //SEG342 play_move_down::@9 - //SEG343 [159] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_fast - bcc b2 - //SEG344 play_move_down::@10 - //SEG345 [160] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx - //SEG346 [161] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] - //SEG347 [161] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy - //SEG348 play_move_down::@2 - b2: - //SEG349 [162] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_slow - bcc b4 - //SEG350 play_move_down::@11 - //SEG351 [163] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx - //SEG352 [164] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] - //SEG353 [164] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy - //SEG354 play_move_down::@4 - b4: - //SEG355 [165] 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 - //SEG356 play_move_down::@12 - //SEG357 [166] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 - ldy current_ypos - iny - //SEG358 [167] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 - lda current_xpos - sta play_collision.xpos - //SEG359 [168] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 - ldx current_orientation - //SEG360 [169] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_71 - lda current_piece+1 - sta current_piece_71+1 - //SEG361 [170] call play_collision - //SEG362 [105] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] - //SEG363 [105] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG364 [105] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG365 [105] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG366 [105] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy - jsr play_collision - //SEG367 [171] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + //SEG387 [183] (byte) play_collision::return#0 ← (byte) play_collision::return#14 // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a - //SEG368 play_move_down::@18 - //SEG369 [172] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG388 play_move_down::@18 + //SEG389 [184] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a - //SEG370 [173] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG390 [185] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG371 [174] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG372 play_move_down::@13 - //SEG373 [175] call play_lock_current + //SEG391 [186] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG392 play_move_down::@13 + //SEG393 [187] call play_lock_current jsr play_lock_current - //SEG374 [176] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG375 play_move_down::@19 - //SEG376 [177] call play_remove_lines - //SEG377 [199] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG394 [188] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG395 play_move_down::@19 + //SEG396 [189] call play_remove_lines + //SEG397 [211] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] jsr play_remove_lines - //SEG378 [178] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] - //SEG379 play_move_down::@20 - //SEG380 [179] call play_spawn_current - //SEG381 [185] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG398 [190] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG399 play_move_down::@20 + //SEG400 [191] call play_spawn_current + //SEG401 [197] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] jsr play_spawn_current - //SEG382 [180] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG402 [192] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG383 [181] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] - //SEG384 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG385 [181] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG403 [193] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG404 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG405 [193] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG386 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG387 [181] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG406 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG407 [193] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG388 [181] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG389 [181] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG408 [193] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG409 [193] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 sta current_ypos - //SEG390 play_move_down::@7 + //SEG410 play_move_down::@7 b7: - //SEG391 [182] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG392 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG393 [182] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG394 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG395 [182] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG396 [182] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG397 [182] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG398 [182] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG411 [194] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG412 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG413 [194] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG414 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG415 [194] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG416 [194] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG417 [194] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG418 [194] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG399 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG419 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG400 [182] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG420 [194] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG401 [182] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG402 [182] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG403 [182] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG404 [182] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG405 [182] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG406 [182] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG407 [182] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG408 [182] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG421 [194] phi (byte) current_piece_char#11 = (byte) current_piece_char#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG422 [194] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG423 [194] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG424 [194] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG425 [194] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG426 [194] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG427 [194] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG428 [194] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 - //SEG409 play_move_down::@return + //SEG429 play_move_down::@return breturn: - //SEG410 [183] return + //SEG430 [195] return rts - //SEG411 play_move_down::@6 + //SEG431 play_move_down::@6 b6: - //SEG412 [184] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 + //SEG432 [196] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG413 [181] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG414 [181] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG415 [181] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG416 [181] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG417 [181] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG418 [181] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG419 [181] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG433 [193] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG434 [193] phi (byte) current_piece_char#21 = (byte) current_piece_char#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG435 [193] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG436 [193] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG437 [193] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG438 [193] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG439 [193] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG420 play_spawn_current +//SEG440 play_spawn_current play_spawn_current: { .label _3 = 2 - //SEG421 [186] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] - //SEG422 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG441 [198] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG442 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 - //SEG423 play_spawn_current::@1 + //SEG443 play_spawn_current::@1 b1: - //SEG424 [187] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG444 [199] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2 - //SEG425 play_spawn_current::@3 - //SEG426 [188] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG445 play_spawn_current::@3 + //SEG446 [200] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG427 [189] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG447 [201] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 tay lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG428 [190] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG448 [202] (byte) current_piece_char#13 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG429 play_spawn_current::@return - //SEG430 [191] return + //SEG449 play_spawn_current::@return + //SEG450 [203] return rts - //SEG431 [192] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG432 play_spawn_current::@2 + //SEG451 [204] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG452 play_spawn_current::@2 b2: - //SEG433 [193] call sid_rnd + //SEG453 [205] call sid_rnd jsr sid_rnd - //SEG434 [194] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG454 [206] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a - //SEG435 play_spawn_current::@7 - //SEG436 [195] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG455 play_spawn_current::@7 + //SEG456 [207] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG437 [196] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG457 [208] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG438 [186] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] - //SEG439 [186] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG458 [198] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG459 [198] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG440 sid_rnd +//SEG460 sid_rnd sid_rnd: { - //SEG441 [197] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG461 [209] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG442 sid_rnd::@return - //SEG443 [198] return + //SEG462 sid_rnd::@return + //SEG463 [210] return rts } -//SEG444 play_remove_lines +//SEG464 play_remove_lines play_remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG445 [200] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG446 [200] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG465 [212] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG466 [212] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG447 [200] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG467 [212] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG448 [200] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG468 [212] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG449 [200] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] - //SEG450 [200] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG451 [200] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG452 [200] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG453 play_remove_lines::@1 + //SEG469 [212] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG470 [212] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG471 [212] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG472 [212] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG473 play_remove_lines::@1 b1: - //SEG454 [201] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG455 [201] 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 + //SEG474 [213] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG475 [213] 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 - //SEG456 [201] 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 + //SEG476 [213] 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 - //SEG457 [201] 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 - //SEG458 [201] 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 - //SEG459 [201] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG460 [201] 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 - //SEG461 [201] 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 - //SEG462 [201] 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 - //SEG463 [201] 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 - //SEG464 play_remove_lines::@2 + //SEG477 [213] 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 + //SEG478 [213] 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 + //SEG479 [213] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG480 [213] 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 + //SEG481 [213] 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 + //SEG482 [213] 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 + //SEG483 [213] 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 + //SEG484 play_remove_lines::@2 b2: - //SEG465 [202] (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 + //SEG485 [214] (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 - //SEG466 [203] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG486 [215] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG467 [204] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG487 [216] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG468 [205] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG469 [205] 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 + //SEG488 [217] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG489 [217] 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 - //SEG470 play_remove_lines::@3 + //SEG490 play_remove_lines::@3 b3: - //SEG471 [206] *((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 + //SEG491 [218] *((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 - //SEG472 [207] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG492 [219] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG473 [208] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG493 [220] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG474 [209] 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 + //SEG494 [221] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG475 play_remove_lines::@9 - //SEG476 [210] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG495 play_remove_lines::@9 + //SEG496 [222] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4 - //SEG477 play_remove_lines::@10 - //SEG478 [211] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG497 play_remove_lines::@10 + //SEG498 [223] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG479 [212] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] - //SEG480 [212] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG481 play_remove_lines::@4 + //SEG499 [224] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG500 [224] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG501 play_remove_lines::@4 b4: - //SEG482 [213] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG502 [225] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG483 [214] 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 + //SEG503 [226] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG484 [215] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] - //SEG485 [215] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy - //SEG486 play_remove_lines::@5 + //SEG504 [227] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG505 [227] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG506 play_remove_lines::@5 b5: - //SEG487 [216] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG507 [228] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 - //SEG488 play_remove_lines::@return - //SEG489 [217] return + //SEG508 play_remove_lines::@return + //SEG509 [229] return rts - //SEG490 play_remove_lines::@6 + //SEG510 play_remove_lines::@6 b6: - //SEG491 [218] *((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 + //SEG511 [230] *((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 - //SEG492 [219] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG512 [231] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG493 [220] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] - //SEG494 play_remove_lines::@17 - //SEG495 [205] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] - //SEG496 [205] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy + //SEG513 [232] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG514 play_remove_lines::@17 + //SEG515 [217] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG516 [217] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy } -//SEG497 play_lock_current +//SEG517 play_lock_current play_lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -15167,401 +17139,401 @@ play_lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG498 [221] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG518 [233] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG499 [222] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG500 [222] 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 + //SEG519 [234] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG520 [234] 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 - //SEG501 [222] 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 + //SEG521 [234] 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 - //SEG502 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG503 play_lock_current::@1 + //SEG522 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG523 play_lock_current::@1 b1: - //SEG504 [223] (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 + //SEG524 [235] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG505 [224] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG525 [236] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG506 [225] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG507 [225] 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 + //SEG526 [237] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG527 [237] 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 - //SEG508 [225] 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 - //SEG509 [225] 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 - //SEG510 play_lock_current::@2 + //SEG528 [237] 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 + //SEG529 [237] 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 + //SEG530 play_lock_current::@2 b2: - //SEG511 [226] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG531 [238] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG512 [227] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG532 [239] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG513 play_lock_current::@4 - //SEG514 [228] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG533 play_lock_current::@4 + //SEG534 [240] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y - //SEG515 play_lock_current::@3 + //SEG535 play_lock_current::@3 b3: - //SEG516 [229] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG536 [241] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG517 [230] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG537 [242] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG518 [231] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG538 [243] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG519 play_lock_current::@5 - //SEG520 [232] (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 + //SEG539 play_lock_current::@5 + //SEG540 [244] (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 - //SEG521 [233] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG541 [245] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG522 [234] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG542 [246] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG523 play_lock_current::@return - //SEG524 [235] return + //SEG543 play_lock_current::@return + //SEG544 [247] return rts - //SEG525 play_lock_current::@7 + //SEG545 play_lock_current::@7 b7: - //SEG526 [236] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG546 [248] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG527 [222] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] - //SEG528 [222] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG529 [222] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG530 [222] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG547 [234] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG548 [234] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG549 [234] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG550 [234] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG531 play_lock_current::@8 + //SEG551 play_lock_current::@8 b8: - //SEG532 [237] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG552 [249] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG533 [225] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] - //SEG534 [225] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG535 [225] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG536 [225] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG553 [237] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG554 [237] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG555 [237] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG556 [237] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG537 keyboard_event_pressed +//SEG557 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG538 [239] (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 + //SEG558 [251] (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 - //SEG539 [240] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG559 [252] (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 - //SEG540 [241] (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 + //SEG560 [253] (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 - //SEG541 [242] (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 + //SEG561 [254] (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 - //SEG542 keyboard_event_pressed::@return - //SEG543 [243] return + //SEG562 keyboard_event_pressed::@return + //SEG563 [255] return rts } -//SEG544 keyboard_event_get +//SEG564 keyboard_event_get keyboard_event_get: { - //SEG545 [244] 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 + //SEG565 [256] 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 - //SEG546 keyboard_event_get::@3 - //SEG547 [245] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG566 keyboard_event_get::@3 + //SEG567 [257] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG548 [246] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG568 [258] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG549 [247] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG550 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG551 [247] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG569 [259] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG570 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG552 [247] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG572 [259] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG553 [247] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG554 [247] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG573 [259] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG574 [259] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff - //SEG555 keyboard_event_get::@return + //SEG575 keyboard_event_get::@return breturn: - //SEG556 [248] return + //SEG576 [260] return rts } -//SEG557 keyboard_event_scan +//SEG577 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG558 [250] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG559 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG560 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG578 [262] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG579 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG580 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG561 [250] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG581 [262] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG562 [250] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG563 [250] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG564 [250] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG565 [250] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy - //SEG566 keyboard_event_scan::@1 + //SEG582 [262] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG583 [262] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG584 [262] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG585 [262] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG586 keyboard_event_scan::@1 b1: - //SEG567 [251] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG587 [263] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG568 [252] call keyboard_matrix_read + //SEG588 [264] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG569 [253] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG589 [265] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a - //SEG570 keyboard_event_scan::@25 - //SEG571 [254] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG590 keyboard_event_scan::@25 + //SEG591 [266] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG572 [255] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG592 [267] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b6 - //SEG573 keyboard_event_scan::@13 - //SEG574 [256] (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 + //SEG593 keyboard_event_scan::@13 + //SEG594 [268] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG575 [257] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] - //SEG576 [257] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG577 [257] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy - //SEG578 keyboard_event_scan::@3 + //SEG595 [269] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG596 [269] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG597 [269] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG598 keyboard_event_scan::@3 b3: - //SEG579 [258] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG599 [270] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG580 [259] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [271] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG581 [260] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG582 keyboard_event_scan::@20 - //SEG583 [261] call keyboard_event_pressed - //SEG584 [238] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG585 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG601 [272] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG602 keyboard_event_scan::@20 + //SEG603 [273] call keyboard_event_pressed + //SEG604 [250] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG605 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG586 [262] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG606 [274] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG587 keyboard_event_scan::@26 - //SEG588 [263] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG607 keyboard_event_scan::@26 + //SEG608 [275] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG589 [264] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG609 [276] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG590 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG591 keyboard_event_scan::@21 - //SEG592 [266] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG593 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG610 [277] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG611 keyboard_event_scan::@21 + //SEG612 [278] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG613 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0|KEY_MODIFIER_LSHIFT jmp b9 - //SEG594 [266] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG614 [278] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG595 [266] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG615 [278] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0 - //SEG596 keyboard_event_scan::@9 + //SEG616 keyboard_event_scan::@9 b9: - //SEG597 [267] call keyboard_event_pressed - //SEG598 [238] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG599 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG617 [279] call keyboard_event_pressed + //SEG618 [250] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG619 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG600 [268] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG620 [280] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG601 keyboard_event_scan::@27 - //SEG602 [269] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG621 keyboard_event_scan::@27 + //SEG622 [281] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG603 [270] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG623 [282] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG604 keyboard_event_scan::@22 - //SEG605 [271] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG624 keyboard_event_scan::@22 + //SEG625 [283] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG606 [272] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] - //SEG607 [272] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy - //SEG608 keyboard_event_scan::@10 + //SEG626 [284] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG627 [284] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG628 keyboard_event_scan::@10 b10: - //SEG609 [273] call keyboard_event_pressed - //SEG610 [238] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG611 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG629 [285] call keyboard_event_pressed + //SEG630 [250] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG631 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG612 [274] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG632 [286] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG613 keyboard_event_scan::@28 - //SEG614 [275] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG633 keyboard_event_scan::@28 + //SEG634 [287] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG615 [276] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG635 [288] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG616 keyboard_event_scan::@23 - //SEG617 [277] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG636 keyboard_event_scan::@23 + //SEG637 [289] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG618 [278] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] - //SEG619 [278] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy - //SEG620 keyboard_event_scan::@11 + //SEG638 [290] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG639 [290] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG640 keyboard_event_scan::@11 b11: - //SEG621 [279] call keyboard_event_pressed - //SEG622 [238] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG623 [238] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG641 [291] call keyboard_event_pressed + //SEG642 [250] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG643 [250] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [280] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG644 [292] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG625 keyboard_event_scan::@29 - //SEG626 [281] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG645 keyboard_event_scan::@29 + //SEG646 [293] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG627 [282] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG647 [294] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG628 keyboard_event_scan::@24 - //SEG629 [283] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG648 keyboard_event_scan::@24 + //SEG649 [295] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE - //SEG630 keyboard_event_scan::@return + //SEG650 keyboard_event_scan::@return breturn: - //SEG631 [284] return + //SEG651 [296] return rts - //SEG632 [285] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG652 [297] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b6: - //SEG633 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG634 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG635 [285] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG653 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG654 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG655 [297] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG636 [285] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG637 [285] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG638 [285] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG639 [285] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy - //SEG640 keyboard_event_scan::@4 + //SEG656 [297] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG657 [297] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG658 [297] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG659 [297] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG660 keyboard_event_scan::@4 b4: - //SEG641 [286] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG661 [298] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG642 [287] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG662 [299] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG643 [288] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG663 [300] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG644 keyboard_event_scan::@15 - //SEG645 [289] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG664 keyboard_event_scan::@15 + //SEG665 [301] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG646 keyboard_event_scan::@16 - //SEG647 [290] (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 + //SEG666 keyboard_event_scan::@16 + //SEG667 [302] (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 - //SEG648 [291] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG668 [303] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG649 keyboard_event_scan::@17 - //SEG650 [292] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG669 keyboard_event_scan::@17 + //SEG670 [304] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG651 [293] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG671 [305] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG652 [294] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] - //SEG653 [294] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG654 keyboard_event_scan::@5 + //SEG672 [306] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG673 [306] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG674 keyboard_event_scan::@5 b5: - //SEG655 [295] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG675 [307] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG656 [296] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG676 [308] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG657 [297] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG677 [309] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG658 keyboard_event_scan::@19 - //SEG659 [298] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG678 keyboard_event_scan::@19 + //SEG679 [310] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG660 keyboard_event_scan::@7 + //SEG680 keyboard_event_scan::@7 b7: - //SEG661 [299] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG681 [311] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG662 [300] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG682 [312] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG663 [301] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG683 [313] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG664 keyboard_matrix_read +//SEG684 keyboard_matrix_read keyboard_matrix_read: { - //SEG665 [302] *((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 + //SEG685 [314] *((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 - //SEG666 [303] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG686 [315] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG667 keyboard_matrix_read::@return - //SEG668 [304] return + //SEG687 keyboard_matrix_read::@return + //SEG688 [316] return rts } -//SEG669 play_init +//SEG689 play_init play_init: { .label pli = 5 .label idx = 2 - //SEG670 [306] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG671 [306] 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 + //SEG690 [318] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG691 [318] 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 - //SEG672 [306] 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 + //SEG692 [318] 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 - //SEG673 [306] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG693 [318] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG674 [306] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG675 [306] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG676 [306] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG677 [306] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG678 play_init::@1 + //SEG694 [318] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG695 [318] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG696 [318] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG697 [318] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG698 play_init::@1 b1: - //SEG679 [307] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG699 [319] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG680 [308] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG700 [320] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG681 [309] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG701 [321] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG682 [310] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [322] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -15569,94 +17541,181 @@ play_init: { bcc !+ inc pli+1 !: - //SEG683 [311] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG703 [323] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG684 [312] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG704 [324] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG685 [313] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG705 [325] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG686 play_init::@2 - //SEG687 [314] *((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 + //SEG706 play_init::@2 + //SEG707 [326] *((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 - //SEG688 play_init::@return - //SEG689 [315] return + //SEG708 play_init::@return + //SEG709 [327] return rts } -//SEG690 render_init +//SEG710 sprites_irq_init +sprites_irq_init: { + //SEG711 asm { sei } + sei + //SEG712 [329] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG713 asm { ldaCIA1_INTERRUPT } + lda CIA1_INTERRUPT + //SEG714 [331] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG715 [332] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG716 [333] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG717 [334] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG718 [335] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG719 [336] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG720 [337] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta HARDWARE_IRQ+1 + //SEG721 asm { cli } + cli + //SEG722 sprites_irq_init::@return + //SEG723 [339] return + rts +} +//SEG724 sprites_init +sprites_init: { + .label xpos = 2 + //SEG725 [340] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG726 [341] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG727 [342] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + sta SPRITES_EXPAND_Y + //SEG728 [343] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + sta SPRITES_EXPAND_X + //SEG729 [344] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG730 [344] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(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 + //SEG731 [344] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + ldx #0 + //SEG732 [344] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG733 [344] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG734 [344] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG735 sprites_init::@1 + b1: + //SEG736 [345] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + txa + asl + //SEG737 [346] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + tay + lda xpos + sta SPRITES_XPOS,y + //SEG738 [347] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + lda #BLACK + sta SPRITES_COLS,x + //SEG739 [348] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG740 [349] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + inx + //SEG741 [350] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #4 + bne b1 + //SEG742 sprites_init::@return + //SEG743 [351] return + rts +} +//SEG744 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - .label _15 = $c + .label _18 = $c .label li = 5 .label line = 5 .label l = 2 - //SEG691 render_init::vicSelectGfxBank1 - //SEG692 [317] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG745 render_init::vicSelectGfxBank1 + //SEG746 [353] *((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 - //SEG693 [318] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG694 render_init::vicSelectGfxBank1_toDd001 - //SEG695 render_init::vicSelectGfxBank1_@1 - //SEG696 [319] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG747 [354] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG748 render_init::vicSelectGfxBank1_toDd001 + //SEG749 render_init::vicSelectGfxBank1_@1 + //SEG750 [355] *((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 - //SEG697 [320] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] - //SEG698 render_init::toD0181 - //SEG699 render_init::@8 - //SEG700 [321] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG751 [356] phi from render_init::vicSelectGfxBank1_@1 to render_init::toD0181 [phi:render_init::vicSelectGfxBank1_@1->render_init::toD0181] + //SEG752 render_init::toD0181 + //SEG753 render_init::@8 + //SEG754 [357] *((const byte*) D018#0) ← (const byte) render_init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG701 [322] *((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 + //SEG755 [358] *((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 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG702 [323] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG756 [359] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG703 [324] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG757 [360] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG704 [325] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG758 [361] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG705 [326] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG759 [362] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG706 [327] call fill - //SEG707 [368] phi from render_init::@8 to fill [phi:render_init::@8->fill] + //SEG760 [363] call fill + //SEG761 [404] phi from render_init::@8 to fill [phi:render_init::@8->fill] jsr fill - //SEG708 [328] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] - //SEG709 render_init::@9 - //SEG710 [329] call render_screen_original - //SEG711 [346] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] + //SEG762 [364] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG763 render_init::@9 + //SEG764 [365] call render_screen_original + //SEG765 [382] phi from render_init::@9 to render_screen_original [phi:render_init::@9->render_screen_original] jsr render_screen_original - //SEG712 [330] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] - //SEG713 [330] phi (byte*) render_init::li#2 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@9->render_init::@1#0] -- pbuz1=pbuc1 - lda #render_init::@1] + //SEG767 [366] phi (byte*) render_init::li#2 = (const byte*) PLAYFIELD_SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@9->render_init::@1#0] -- pbuz1=pbuc1 + lda #PLAYFIELD_SCREEN+$28+$10 + lda #>PLAYFIELD_SCREEN+2*$28+$10 sta li+1 - //SEG714 [330] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuxx=vbuc1 + //SEG768 [366] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@9->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG715 [330] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG716 [330] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG717 [330] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG718 render_init::@1 + //SEG769 [366] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG770 [366] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG771 [366] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG772 render_init::@1 b1: - //SEG719 [331] (byte~) render_init::$10 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG773 [367] (byte~) render_init::$11 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG720 [332] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$10) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG774 [368] *((const byte*[PLAYFIELD_LINES#0]) screen_lines#0 + (byte~) render_init::$11) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG721 [333] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG775 [369] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -15664,51 +17723,51 @@ render_init: { bcc !+ inc li+1 !: - //SEG722 [334] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG776 [370] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG723 [335] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_LINES+2+1 + //SEG777 [371] 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 - //SEG724 [336] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] - //SEG725 [336] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG778 [372] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG779 [372] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + lda #2 sta l - //SEG726 [336] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 - lda #render_init::@2#1] -- pbuz1=pbuc1 + lda #COLS+$f + lda #>COLS+4*$28+$10 sta line+1 - //SEG727 [336] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] - //SEG728 [336] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG729 [336] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy - //SEG730 render_init::@2 + //SEG781 [372] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG782 [372] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG783 [372] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG784 render_init::@2 b2: - //SEG731 [337] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] - //SEG732 [337] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG785 [373] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG786 [373] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG733 [337] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] - //SEG734 [337] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG735 render_init::@3 + //SEG787 [373] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG788 [373] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG789 render_init::@3 b3: - //SEG736 [338] (byte*~) render_init::$15 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG790 [374] (byte*~) render_init::$18 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line - sta _15 + sta _18 lda #0 adc line+1 - sta _15+1 - //SEG737 [339] *((byte*~) render_init::$15) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + sta _18+1 + //SEG791 [375] *((byte*~) render_init::$18) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 - sta (_15),y - //SEG738 [340] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + sta (_18),y + //SEG792 [376] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG739 [341] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_COLS+1+1 + //SEG793 [377] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + cpx #PLAYFIELD_COLS-1+1 bne b3 - //SEG740 render_init::@5 - //SEG741 [342] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG794 render_init::@5 + //SEG795 [378] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -15716,171 +17775,287 @@ render_init: { bcc !+ inc line+1 !: - //SEG742 [343] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG796 [379] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG743 [344] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG797 [380] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l - cmp #PLAYFIELD_LINES+1+1 + cmp #PLAYFIELD_LINES-1+1 bne b2 - //SEG744 render_init::@return - //SEG745 [345] return + //SEG798 render_init::@return + //SEG799 [381] return rts } -//SEG746 render_screen_original +//SEG800 render_screen_original render_screen_original: { .const SPACE = 0 .label screen = $c .label orig = 5 .label y = 2 - //SEG747 [347] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] - //SEG748 [347] 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 + //SEG801 [383] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG802 [383] 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 - //SEG749 [347] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG803 [383] phi (byte*) render_screen_original::orig#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta orig+1 - //SEG750 [347] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG804 [383] phi (byte*) render_screen_original::screen#7 = (const byte*) PLAYFIELD_SCREEN#0 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN sta screen+1 - //SEG751 [347] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] - //SEG752 [347] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG753 [347] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG754 [347] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG755 render_screen_original::@1 + //SEG805 [383] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG806 [383] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG807 [383] phi (byte*) render_screen_original::orig#4 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG808 [383] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG809 render_screen_original::@1 b1: - //SEG756 [348] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG757 [348] 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 + //SEG810 [384] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG811 [384] 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 - //SEG758 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG759 [348] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG760 [348] 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 - //SEG761 [348] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG762 render_screen_original::@2 + //SEG812 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG813 [384] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG814 [384] 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 + //SEG815 [384] phi (byte*) render_screen_original::screen#4 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG816 render_screen_original::@2 b2: - //SEG763 [349] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG817 [385] *((byte*) render_screen_original::screen#4) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG764 [350] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 + //SEG818 [386] (byte*) render_screen_original::screen#1 ← ++ (byte*) render_screen_original::screen#4 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG765 [351] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG819 [387] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG766 [352] 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 + //SEG820 [388] 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 - //SEG767 [353] 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] - //SEG768 [353] 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 - //SEG769 [353] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG770 [353] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG771 render_screen_original::@3 + //SEG821 [389] 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] + //SEG822 [389] 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 + //SEG823 [389] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG824 [389] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG825 render_screen_original::@3 b3: - //SEG772 [354] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_plus_1 + //SEG826 [390] (byte/signed word/word/dword/signed dword~) render_screen_original::$3 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_plus_1 ldy #0 lda (orig),y clc adc #1 - //SEG773 [355] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuaa + //SEG827 [391] *((byte*) render_screen_original::screen#5) ← (byte/signed word/word/dword/signed dword~) render_screen_original::$3 -- _deref_pbuz1=vbuaa sta (screen),y - //SEG774 [356] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG828 [392] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG775 [357] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG829 [393] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG776 [358] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG830 [394] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG777 [359] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG831 [395] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3 - //SEG778 [360] 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] - //SEG779 [360] 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 - //SEG780 [360] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG781 render_screen_original::@4 + //SEG832 [396] 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] + //SEG833 [396] 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 + //SEG834 [396] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG835 render_screen_original::@4 b4: - //SEG782 [361] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG836 [397] *((byte*) render_screen_original::screen#6) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG783 [362] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG837 [398] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG784 [363] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG838 [399] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG785 [364] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG839 [400] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4 - //SEG786 render_screen_original::@7 - //SEG787 [365] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG840 render_screen_original::@7 + //SEG841 [401] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG788 [366] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [402] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG789 render_screen_original::@return - //SEG790 [367] return + //SEG843 render_screen_original::@return + //SEG844 [403] return rts } -//SEG791 fill +//SEG845 fill fill: { .const size = $3e8 .label end = COLS+size .label addr = 5 - //SEG792 [369] phi from fill to fill::@1 [phi:fill->fill::@1] - //SEG793 [369] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG846 [405] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG847 [405] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 - //SEG794 [369] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] - //SEG795 [369] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy - //SEG796 fill::@1 + //SEG848 [405] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG849 [405] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG850 fill::@1 b1: - //SEG797 [370] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG851 [406] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG798 [371] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG852 [407] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG799 [372] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG853 [408] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1 lda addr cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG804 [375] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG858 [411] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG805 sid_rnd_init::@return - //SEG806 [376] return + //SEG859 sid_rnd_init::@return + //SEG860 [412] return rts +} +//SEG861 irq +irq: { + .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + //SEG862 entry interrupt(HARDWARE_CLOBBER) + sta rega+1 + stx regx+1 + //SEG863 [413] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + lda #DARK_GREY + sta BORDERCOL + //SEG864 [414] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + lda irq_sprite_ypos + //SEG865 [415] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS + //SEG866 [416] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+2 + //SEG867 [417] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+4 + //SEG868 [418] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + sta SPRITES_YPOS+6 + //SEG869 irq::@1 + b1: + //SEG870 [419] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + lda RASTER + cmp irq_sprite_ypos + bne b1 + //SEG871 irq::@5 + //SEG872 [420] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 + lda irq_sprite_ptr + //SEG873 [421] *((const byte*) PLAYFIELD_SPRITE_PTRS#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS + //SEG874 [422] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa + tax + inx + //SEG875 [423] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+1 + //SEG876 [424] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+2 + //SEG877 [425] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + inx + //SEG878 [426] *((const byte*) PLAYFIELD_SPRITE_PTRS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS+3 + //SEG879 [427] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + inc irq_cnt + //SEG880 [428] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #$a + beq b2 + //SEG881 irq::@6 + //SEG882 [429] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG883 [430] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + //SEG884 [431] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + //SEG885 [432] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] + //SEG886 [432] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy + //SEG887 irq::@3 + b3: + //SEG888 [433] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + ldx irq_raster_next + //SEG889 [434] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + txa + and #7 + //SEG890 [435] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + cmp #3 + bne b4 + //SEG891 irq::@8 + //SEG892 [436] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + dex + //SEG893 [437] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] + //SEG894 [437] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy + //SEG895 irq::@4 + b4: + //SEG896 [438] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + stx RASTER + //SEG897 [439] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG898 [440] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG899 irq::@return + //SEG900 [441] return - exit interrupt(HARDWARE_CLOBBER) + rega: + lda #00 + regx: + ldx #00 + rti + //SEG901 irq::@2 + b2: + //SEG902 [442] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt + //SEG903 [443] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next + //SEG904 [444] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + //SEG905 [445] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] + //SEG906 irq::toSpritePtr2 + //SEG907 irq::@9 + //SEG908 [446] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + lda #toSpritePtr2_return + sta irq_sprite_ptr + jmp b3 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 @@ -15901,9 +18076,9 @@ sid_rnd_init: { .align $40 PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 PIECES_CHARS: .byte $57, $58, $98, $58, $57, $57, $98 + screen_lines: .fill 2*PLAYFIELD_LINES, 0 playfield_lines: .fill 2*PLAYFIELD_LINES, 0 playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 .pc = PLAYFIELD_CHARSET "Inline" @@ -15913,4 +18088,17 @@ sid_rnd_init: { .pc = PLAYFIELD_SCREEN_ORIGINAL "Inline" .import binary "nes-screen.iscr" +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index 97723af4f..6ea5a996a 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,5 +1,8 @@ (label) @14 -(label) @27 +(label) @18 +(label) @19 +(label) @30 +(label) @31 (label) @begin (label) @end (byte*) BGCOL @@ -20,6 +23,7 @@ (byte) BROWN (byte*) CHARGEN (byte*) CIA1_INTERRUPT +(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -34,6 +38,7 @@ (byte*) CIA2_PORT_B (byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR +(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 (byte) COLLISION_BOTTOM (const byte) COLLISION_BOTTOM#0 COLLISION_BOTTOM = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT @@ -59,12 +64,18 @@ (byte) GREY (const byte) GREY#0 GREY = (byte/signed byte/word/signed word/dword/signed dword) 12 (void()**) HARDWARE_IRQ +(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 (byte) IRQ_COLLISION_BG (byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 (byte) IRQ_LIGHTPEN (byte) IRQ_RASTER +(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) IRQ_RASTER_FIRST +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) IRQ_STATUS +(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ (byte) KEY_0 (byte) KEY_1 @@ -185,15 +196,21 @@ (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 PLAYFIELD_SCREEN_ORIGINAL = ((byte*))(word/signed word/dword/signed dword) 11264 (byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH (byte*) PLAYFIELD_SPRITES +(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) 8192 (byte*) PLAYFIELD_SPRITE_PTRS +(const byte*) PLAYFIELD_SPRITE_PTRS#0 PLAYFIELD_SPRITE_PTRS = (const byte*) PLAYFIELD_SCREEN#0+(const word) SPRITE_PTRS#0 (byte*) PROCPORT +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR +(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK +(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) PROCPORT_KERNEL_IO (byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 @@ -216,19 +233,28 @@ (byte*) SID_VOICE3_OSC (const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299 (byte*) SPRITES_COLS +(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE +(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 (byte*) SPRITES_EXPAND_X +(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y +(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 (byte*) SPRITES_MC +(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 (byte*) SPRITES_MC2 (byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS +(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS +(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 (word) SPRITE_PTRS +(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) 1016 (byte) VIC_BMM (byte*) VIC_CONTROL +(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 (byte) VIC_CSEL (byte) VIC_DEN @@ -262,20 +288,20 @@ (byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 (byte*) current_piece#16 current_piece zp ZP_WORD:12 0.5588235294117647 (byte*) current_piece#20 current_piece zp ZP_WORD:12 6.0 -(byte*~) current_piece#70 current_piece zp ZP_WORD:12 4.0 -(byte*~) current_piece#71 current_piece#71 zp ZP_WORD:5 4.0 -(byte*~) current_piece#72 current_piece#72 zp ZP_WORD:5 4.0 +(byte*~) current_piece#72 current_piece zp ZP_WORD:12 4.0 (byte*~) current_piece#73 current_piece#73 zp ZP_WORD:5 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:5 4.0 -(byte*~) current_piece#75 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#75 current_piece#75 zp ZP_WORD:5 4.0 +(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:5 4.0 +(byte*~) current_piece#77 current_piece zp ZP_WORD:12 4.0 (byte) current_piece_char (byte) current_piece_char#11 current_piece_char zp ZP_BYTE:18 1.04 (byte) current_piece_char#13 current_piece_char zp ZP_BYTE:18 0.7272727272727273 (byte) current_piece_char#16 current_piece_char zp ZP_BYTE:18 19.96078431372549 (byte) current_piece_char#21 current_piece_char zp ZP_BYTE:18 6.0 -(byte) current_piece_char#62 current_piece_char#62 zp ZP_BYTE:7 53.368421052631575 -(byte~) current_piece_char#75 current_piece_char#75 zp ZP_BYTE:7 4.0 -(byte~) current_piece_char#76 current_piece_char#76 zp ZP_BYTE:7 22.0 +(byte) current_piece_char#63 current_piece_char#63 zp ZP_BYTE:7 48.285714285714285 +(byte~) current_piece_char#83 current_piece_char#83 zp ZP_BYTE:7 4.0 +(byte~) current_piece_char#84 current_piece_char#84 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 19.96078431372549 (byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:15 0.2962962962962963 @@ -283,25 +309,25 @@ (byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.6666666666666666 (byte*) current_piece_gfx#27 current_piece_gfx zp ZP_WORD:15 6.0 (byte*) current_piece_gfx#4 current_piece_gfx zp ZP_WORD:15 4.0 -(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 53.368421052631575 -(byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#88 current_piece_gfx#88 zp ZP_WORD:5 11.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 48.285714285714285 +(byte*~) current_piece_gfx#95 current_piece_gfx#95 zp ZP_WORD:5 2.0 +(byte*~) current_piece_gfx#96 current_piece_gfx#96 zp ZP_WORD:5 11.0 (byte) current_xpos +(byte~) current_xpos#104 current_xpos#104 zp ZP_BYTE:4 7.333333333333333 (byte) current_xpos#11 current_xpos zp ZP_BYTE:17 2.313725490196078 (byte) current_xpos#16 current_xpos zp ZP_BYTE:17 0.72 (byte) current_xpos#20 current_xpos zp ZP_BYTE:17 0.871794871794872 (byte) current_xpos#3 current_xpos zp ZP_BYTE:17 4.0 (byte) current_xpos#34 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.333333333333333 (byte) current_xpos#5 current_xpos zp ZP_BYTE:17 4.0 -(byte~) current_xpos#96 current_xpos#96 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos (byte) current_ypos#1 current_ypos zp ZP_BYTE:2 4.0 (byte) current_ypos#10 reg byte x 13.0 (byte) current_ypos#14 current_ypos zp ZP_BYTE:2 0.48484848484848475 (byte) current_ypos#22 current_ypos zp ZP_BYTE:2 0.5588235294117647 (byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 -(byte~) current_ypos#71 reg byte x 5.5 +(byte~) current_ypos#78 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -314,6 +340,51 @@ (const word) fill::size#0 size = (word/signed word/dword/signed dword) 1000 (byte*) fill::start (byte) fill::val +interrupt(HARDWARE_CLOBBER)(void()) irq() +(byte~) irq::$3 reg byte a 4.0 +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@4 +(label) irq::@5 +(label) irq::@6 +(label) irq::@8 +(label) irq::@9 +(label) irq::@return +(byte) irq::ptr +(byte) irq::ptr#0 reg byte a 3.0 +(byte) irq::ptr#1 reg byte x 2.6666666666666665 +(byte) irq::ptr#2 reg byte x 4.0 +(byte) irq::raster_next +(byte) irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) irq::raster_next#1 reg byte x 4.0 +(byte) irq::raster_next#2 reg byte x 6.0 +(label) irq::toSpritePtr2 +(word~) irq::toSpritePtr2_$0 +(word~) irq::toSpritePtr2_$1 +(byte~) irq::toSpritePtr2_$2 +(byte) irq::toSpritePtr2_return +(const byte) irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) irq::toSpritePtr2_sprite +(byte) irq::ypos +(byte) irq::ypos#0 reg byte a 2.5 +(byte) irq_cnt +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:23 0.2857142857142857 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:23 4.0 +(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:23 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:20 0.25 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:20 1.0 +(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:20 6.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:20 1.3333333333333333 +(byte) irq_sprite_ptr +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:22 0.3333333333333333 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:22 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:22 20.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:21 1.0 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:21 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:21 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 @@ -419,9 +490,9 @@ (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 (byte~) main::$12 reg byte a 22.0 +(byte~) main::$13 reg byte a 22.0 +(byte~) main::$14 reg byte a 22.0 (label) main::@1 (label) main::@10 (label) main::@19 @@ -430,20 +501,22 @@ (label) main::@23 (label) main::@24 (label) main::@25 +(label) main::@26 (label) main::@27 -(label) main::@28 (label) main::@29 (label) main::@30 (label) main::@31 (label) main::@32 +(label) main::@33 +(label) main::@34 (label) main::@4 (label) main::@7 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:20 4.0 +(byte) main::key_event#0 key_event zp ZP_BYTE:24 4.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:21 4.4 -(byte) main::render#2 render zp ZP_BYTE:21 4.4 +(byte) main::render#1 render zp ZP_BYTE:25 4.4 +(byte) main::render#2 render zp ZP_BYTE:25 4.4 (byte) main::render#3 reg byte a 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) (byte~) play_collision::$7 reg byte a 2002.0 @@ -466,7 +539,7 @@ (byte) play_collision::col#2 col zp ZP_BYTE:11 638.25 (byte~) play_collision::col#9 col zp ZP_BYTE:11 202.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte) play_collision::i#1 i zp ZP_BYTE:28 161.76923076923077 (byte~) play_collision::i#11 i#11 zp ZP_BYTE:10 202.0 (byte~) play_collision::i#13 i#13 zp ZP_BYTE:10 2002.0 (byte) play_collision::i#2 i#2 zp ZP_BYTE:10 1552.0 @@ -483,7 +556,7 @@ (byte*) play_collision::piece_gfx (byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:26 78.71428571428571 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 @@ -670,12 +743,14 @@ (const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 playfield_lines_idx = { fill( PLAYFIELD_LINES#0+1, 0) } (void()) render_current() (label) render_current::@1 +(label) render_current::@10 +(label) render_current::@13 (label) render_current::@2 (label) render_current::@3 (label) render_current::@4 -(label) render_current::@6 +(label) render_current::@5 (label) render_current::@7 -(label) render_current::@8 +(label) render_current::@9 (label) render_current::@return (byte) render_current::c (byte) render_current::c#1 reg byte x 1501.5 @@ -683,15 +758,16 @@ (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i -(byte) render_current::i#1 i zp ZP_BYTE:10 429.0 -(byte) render_current::i#2 i zp ZP_BYTE:10 1552.0 -(byte) render_current::i#4 i zp ZP_BYTE:10 75.75 +(byte) render_current::i#1 i zp ZP_BYTE:10 202.0 +(byte) render_current::i#10 i zp ZP_BYTE:10 429.0 +(byte) render_current::i#3 i zp ZP_BYTE:10 60.599999999999994 +(byte) render_current::i#4 i zp ZP_BYTE:10 1552.0 (byte) render_current::i#8 i zp ZP_BYTE:10 300.75 (byte) render_current::l (byte) render_current::l#1 l zp ZP_BYTE:9 151.5 -(byte) render_current::l#3 l zp ZP_BYTE:9 13.466666666666667 +(byte) render_current::l#4 l zp ZP_BYTE:9 11.882352941176471 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:22 100.18181818181819 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:26 100.18181818181819 (byte) render_current::xpos (byte) render_current::xpos#0 xpos zp ZP_BYTE:11 202.0 (byte) render_current::xpos#1 xpos zp ZP_BYTE:11 667.3333333333334 @@ -699,10 +775,10 @@ (byte) render_current::ypos2 (byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 (byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:8 67.33333333333333 -(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 29.000000000000004 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 31.6875 (void()) render_init() -(byte~) render_init::$10 reg byte a 22.0 -(byte*~) render_init::$15 $15 zp ZP_WORD:12 202.0 +(byte~) render_init::$11 reg byte a 22.0 +(byte*~) render_init::$18 $18 zp ZP_WORD:12 202.0 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 @@ -752,7 +828,7 @@ (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_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (void()) render_playfield() -(byte~) render_playfield::$1 reg byte a 202.0 +(byte~) render_playfield::$2 reg byte a 202.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -767,10 +843,10 @@ (byte) render_playfield::l (byte) render_playfield::l#1 l zp ZP_BYTE:4 151.5 (byte) render_playfield::l#2 l zp ZP_BYTE:4 33.666666666666664 -(byte*) render_playfield::line -(byte*) render_playfield::line#0 line zp ZP_WORD:5 202.0 -(byte*) render_playfield::line#1 line zp ZP_WORD:5 500.5 -(byte*) render_playfield::line#2 line zp ZP_WORD:5 1552.0 +(byte*) render_playfield::screen_line +(byte*) render_playfield::screen_line#0 screen_line zp ZP_WORD:5 202.0 +(byte*) render_playfield::screen_line#1 screen_line zp ZP_WORD:5 500.5 +(byte*) render_playfield::screen_line#2 screen_line zp ZP_WORD:5 1552.0 (void()) render_screen_original((byte*) render_screen_original::screen) (byte/signed word/word/dword/signed dword~) render_screen_original::$3 reg byte a 202.0 (label) render_screen_original::@1 @@ -803,8 +879,8 @@ (byte) render_screen_original::y (byte) render_screen_original::y#1 y zp ZP_BYTE:2 16.5 (byte) render_screen_original::y#6 y zp ZP_BYTE:2 1.2222222222222223 -(byte*[PLAYFIELD_LINES#0+3]) screen_lines -(const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) } +(byte*[PLAYFIELD_LINES#0]) screen_lines +(const byte*[PLAYFIELD_LINES#0]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0, 0) } (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return @@ -812,17 +888,37 @@ (byte) sid_rnd::return#2 reg byte a 202.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return +(void()) sprites_init() +(label) sprites_init::@1 +(label) sprites_init::@return +(byte) sprites_init::s +(byte) sprites_init::s#1 reg byte x 16.5 +(byte) sprites_init::s#2 reg byte x 8.8 +(byte) sprites_init::s2 +(byte) sprites_init::s2#0 reg byte a 22.0 +(byte) sprites_init::xpos +(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 +(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 +(void()) sprites_irq_init() +(label) sprites_irq_init::@return +(label) toSpritePtr1 +(word~) toSpritePtr1_$0 +(word~) toSpritePtr1_$1 +(byte~) toSpritePtr1_$2 +(byte) toSpritePtr1_return +(const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) toSpritePtr1_sprite -zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 play_spawn_current::$3 ] +zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 render_screen_original::y#6 render_screen_original::y#1 play_spawn_current::$3 ] zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::l#6 play_lock_current::l#1 ] -reg byte x [ current_ypos#10 current_ypos#71 ] -zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_piece_char#62 current_piece_char#75 current_piece_char#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] +reg byte x [ current_ypos#10 current_ypos#78 ] +zp ZP_BYTE:4 [ current_xpos#48 current_xpos#104 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#95 current_piece_gfx#96 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 render_screen_original::orig#2 render_screen_original::orig#4 render_screen_original::orig#1 fill::addr#2 fill::addr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_char#63 current_piece_char#83 current_piece_char#84 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 play_collision::l#6 play_collision::l#1 ] -zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:9 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:10 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] reg byte a [ play_move_rotate::return#1 ] @@ -832,7 +928,7 @@ reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_leftright::return#1 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$15 ] +zp ZP_WORD:12 [ current_piece#20 current_piece#77 current_piece#16 current_piece#10 current_piece#72 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#4 render_screen_original::screen#7 render_screen_original::screen#3 render_screen_original::screen#1 render_screen_original::screen#2 render_init::$18 ] zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] @@ -847,30 +943,36 @@ reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 ke reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] +reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ 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:20 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] +zp ZP_BYTE:21 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:22 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:23 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] reg byte a [ keyboard_event_get::return#3 ] -zp ZP_BYTE:20 [ main::key_event#0 ] +zp ZP_BYTE:24 [ main::key_event#0 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$10 ] -zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +reg byte a [ main::$12 ] +zp ZP_BYTE:25 [ main::render#1 main::render#2 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#4 ] -reg byte a [ main::$11 ] +reg byte a [ main::$13 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::return#4 ] -reg byte a [ main::$12 ] +reg byte a [ main::$14 ] reg byte a [ main::render#3 ] -zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +zp ZP_WORD:26 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] -reg byte a [ render_playfield::$1 ] +reg byte a [ render_playfield::$2 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_collision::return#13 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:24 [ play_collision::i#1 ] +zp ZP_BYTE:28 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] @@ -903,5 +1005,11 @@ reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ play_init::$1 ] -reg byte a [ render_init::$10 ] +reg byte a [ sprites_init::s2#0 ] +reg byte a [ render_init::$11 ] reg byte a [ render_screen_original::$3 ] +reg byte a [ irq::ypos#0 ] +reg byte a [ irq::ptr#0 ] +reg byte x [ irq::ptr#1 ] +reg byte x [ irq::ptr#2 ] +reg byte a [ irq::$3 ]