From 76b13d6b55708d7b829ccfb4501bb4fe0d4f430a Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sat, 29 Dec 2018 18:52:23 +0100 Subject: [PATCH] Fixed sprite multiplexer when double buffering. --- .../dk/camelot64/kickc/test/TestPrograms.java | 21 +- src/test/kc/examples/tetris/tetris-data.kc | 9 +- src/test/kc/examples/tetris/tetris-render.kc | 7 +- src/test/kc/examples/tetris/tetris-sprites.kc | 30 +- src/test/kc/examples/tetris/tetris.kc | 4 +- src/test/ref/examples/tetris/test-sprites.asm | 57 +- src/test/ref/examples/tetris/test-sprites.cfg | 206 +- src/test/ref/examples/tetris/test-sprites.log | 2376 +-- src/test/ref/examples/tetris/test-sprites.sym | 112 +- src/test/ref/examples/tetris/tetris.asm | 161 +- src/test/ref/examples/tetris/tetris.cfg | 950 +- src/test/ref/examples/tetris/tetris.log | 12094 ++++++++-------- src/test/ref/examples/tetris/tetris.sym | 452 +- 13 files changed, 8474 insertions(+), 8005 deletions(-) diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 166f283fe..a342cae9d 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -44,6 +44,17 @@ public class TestPrograms { AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); } + @Test + public void testTetrisSprites() throws IOException, URISyntaxException { + compileAndCompare("examples/tetris/test-sprites"); + } + + @Test + public void testTetris() throws IOException, URISyntaxException { + compileAndCompare("examples/tetris/tetris"); + } + + @Test public void testClobberAProblem() throws IOException, URISyntaxException { compileAndCompare("clobber-a-problem"); @@ -74,16 +85,6 @@ public class TestPrograms { compileAndCompare("longbranch-interrupt-problem"); } - @Test - public void testTetrisSprites() throws IOException, URISyntaxException { - compileAndCompare("examples/tetris/test-sprites"); - } - - @Test - public void testTetris() throws IOException, URISyntaxException { - compileAndCompare("examples/tetris/tetris"); - } - @Test public void testVarInitProblem() throws IOException, URISyntaxException { compileAndCompare("var-init-problem"); diff --git a/src/test/kc/examples/tetris/tetris-data.kc b/src/test/kc/examples/tetris/tetris-data.kc index f5a2c16a5..8df48f9b6 100644 --- a/src/test/kc/examples/tetris/tetris-data.kc +++ b/src/test/kc/examples/tetris/tetris-data.kc @@ -31,4 +31,11 @@ byte current_piece_char; // Position of top left corner of current moving piece on the playfield byte current_xpos; -byte current_ypos; \ No newline at end of file +byte current_ypos; + +// The screen currently being rendered to. $00 for screen 1 / $40 for screen 2. +byte render_screen_render = $40; +// The screen currently to show next to the user. $00 for screen 1 / $40 for screen 2. +byte render_screen_show = 0; +// The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. +volatile byte render_screen_showing = 0; diff --git a/src/test/kc/examples/tetris/tetris-render.kc b/src/test/kc/examples/tetris/tetris-render.kc index 0774122e7..4cfb69287 100644 --- a/src/test/kc/examples/tetris/tetris-render.kc +++ b/src/test/kc/examples/tetris/tetris-render.kc @@ -16,16 +16,12 @@ kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "nes-screen.iscr") {{ align($80) byte*[PLAYFIELD_LINES] screen_lines_1; align($40) byte*[PLAYFIELD_LINES] screen_lines_2; -// The screen currently being showed to the user. $00 for screen 1 / $40 for screen 2. -byte render_screen_show; -// The screen currently being rendered to. $00 for screen 1 / $40 for screen 2. -byte render_screen_render; - // Initialize rendering void render_init() { vicSelectGfxBank(PLAYFIELD_CHARSET); // Enable Extended Background Color Mode *D011 = VIC_ECM | VIC_DEN | VIC_RSEL | 3; + *BORDERCOL = BLACK; *BGCOL1 = BLACK; *BGCOL2 = BLUE; *BGCOL3 = CYAN; @@ -69,6 +65,7 @@ void render_show() { d018val = toD018(PLAYFIELD_SCREEN_2, PLAYFIELD_CHARSET); } *D018 = d018val; + render_screen_showing = render_screen_show; } // Swap rendering to the other screen (used for double buffering) diff --git a/src/test/kc/examples/tetris/tetris-sprites.kc b/src/test/kc/examples/tetris/tetris-sprites.kc index ea8c65700..9f55c1900 100644 --- a/src/test/kc/examples/tetris/tetris-sprites.kc +++ b/src/test/kc/examples/tetris/tetris-sprites.kc @@ -58,16 +58,17 @@ void sprites_irq_init() { // Enable Raster Interrupt *IRQ_ENABLE = IRQ_RASTER; // Set the IRQ routine - *HARDWARE_IRQ = &irq; + *HARDWARE_IRQ = &sprites_irq; asm { cli } } // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 21 lines from line IRQ_RASTER_FIRST -interrupt(hardware_clobber) void irq() { +interrupt(hardware_clobber) void sprites_irq() { + + //*BORDERCOL = DARK_GREY; - *BORDERCOL = DARK_GREY; // Place the sprites byte ypos = irq_sprite_ypos; SPRITES_YPOS[0] = ypos; @@ -77,17 +78,20 @@ interrupt(hardware_clobber) void irq() { // Wait for the y-position before changing sprite pointers do { - } while(*RASTER!=irq_sprite_ypos); + } while(*RASTER>4; + //*BORDERCOL = render_screen_show>>4; // Update D018 to show the selected screen render_show(); // Scan keyboard events @@ -36,6 +36,6 @@ void main() { render_current(); render_screen_swap(); } - *BORDERCOL = 0; + //*BORDERCOL = 0; } } diff --git a/src/test/ref/examples/tetris/test-sprites.asm b/src/test/ref/examples/tetris/test-sprites.asm index 671750c2e..06f0f2b4b 100644 --- a/src/test/ref/examples/tetris/test-sprites.asm +++ b/src/test/ref/examples/tetris/test-sprites.asm @@ -13,7 +13,6 @@ .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D018 = $d018 @@ -26,7 +25,6 @@ .label CIA2_PORT_A_DDR = $dd02 .label HARDWARE_IRQ = $fffe .const BLACK = 0 - .const DARK_GREY = $b .label PLAYFIELD_SCREEN_1 = $400 .label PLAYFIELD_SCREEN_2 = $2c00 .label PLAYFIELD_SPRITES = $2000 @@ -37,11 +35,14 @@ .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .label render_screen_showing = 4 .label irq_raster_next = 3 - .label irq_sprite_ypos = 4 - .label irq_sprite_ptr = 5 - .label irq_cnt = 6 + .label irq_sprite_ypos = 5 + .label irq_sprite_ptr = 6 + .label irq_cnt = 7 bbegin: + lda #0 + sta render_screen_showing lda #IRQ_RASTER_FIRST sta irq_raster_next lda #$32 @@ -84,9 +85,9 @@ sprites_irq_init: { sta RASTER lda #IRQ_RASTER sta IRQ_ENABLE - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 cli rts @@ -119,12 +120,10 @@ sprites_init: { bne b1 rts } -irq: { +sprites_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 @@ -133,23 +132,22 @@ irq: { b1: lda RASTER cmp irq_sprite_ypos - bne b1 - lda irq_sprite_ptr - sta PLAYFIELD_SPRITE_PTRS_1 - sta PLAYFIELD_SPRITE_PTRS_2 - tax + bcc b1 + ldx irq_sprite_ptr + lda render_screen_showing + cmp #0 + beq b2 + stx PLAYFIELD_SPRITE_PTRS_2 inx - stx PLAYFIELD_SPRITE_PTRS_1+1 stx PLAYFIELD_SPRITE_PTRS_2+1 - stx PLAYFIELD_SPRITE_PTRS_1+2 stx PLAYFIELD_SPRITE_PTRS_2+2 inx - stx PLAYFIELD_SPRITE_PTRS_1+3 stx PLAYFIELD_SPRITE_PTRS_2+3 + b3: inc irq_cnt lda irq_cnt cmp #$a - beq b2 + beq b4 lda #$15 clc adc irq_raster_next @@ -162,25 +160,23 @@ irq: { clc adc irq_sprite_ptr sta irq_sprite_ptr - b3: + b5: ldx irq_raster_next txa and #7 cmp #3 - bne b4 + bne b6 dex - b4: + b6: stx RASTER lda #IRQ_RASTER sta IRQ_STATUS - lda #BLACK - sta BORDERCOL rega: lda #00 regx: ldx #00 rti - b2: + b4: lda #0 sta irq_cnt lda #IRQ_RASTER_FIRST @@ -189,6 +185,17 @@ irq: { sta irq_sprite_ypos lda #toSpritePtr2_return sta irq_sprite_ptr + jmp b5 + b2: + stx PLAYFIELD_SPRITE_PTRS_1 + txa + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_1+1 + sta PLAYFIELD_SPRITE_PTRS_1+2 + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" diff --git a/src/test/ref/examples/tetris/test-sprites.cfg b/src/test/ref/examples/tetris/test-sprites.cfg index 75cb4d475..26cef438c 100644 --- a/src/test/ref/examples/tetris/test-sprites.cfg +++ b/src/test/ref/examples/tetris/test-sprites.cfg @@ -2,6 +2,7 @@ [0] phi() to:@4 @4: scope:[] from @begin + [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 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++) { @@ -16,140 +17,147 @@ }} to:@5 @5: scope:[] from @4 - [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - [4] phi() + [5] phi() to:@9 @9: scope:[] from toSpritePtr1 - [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 - [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 @8: scope:[] from @9 - [7] phi() - [8] call main + [8] phi() + [9] call main to:@end @end: scope:[] from @8 - [9] phi() -main: scope:[main] from @8 [10] phi() +main: scope:[main] from @8 + [11] phi() 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 + [12] *((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] phi() 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 + [14] *((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() + [15] 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 + [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [17] call sprites_init to:main::@9 main::@9: scope:[main] from main::@8 - [17] phi() - [18] call sprites_irq_init + [18] phi() + [19] call sprites_irq_init to:main::@2 main::@2: scope:[main] from main::@2 main::@9 - [19] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) + [20] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) to:main::@2 sprites_irq_init: scope:[sprites_irq_init] from main::@9 asm { sei } - [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [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() + [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [27] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [30] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [31] return + [32] return to:@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) + [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: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 + [37] (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 ) + [37] (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 ) + [38] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [41] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [42] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [43] 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 + [44] return to:@return -irq: scope:[irq] from - [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 - [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 - to:irq::@5 -irq::@5: scope:[irq] from irq::@1 - [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [52] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 - [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 - [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [59] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [60] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [63] 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 - [64] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [65] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [66] (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 - [67] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [68] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [69] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [70] 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 - [71] (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 - [72] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [73] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - to:irq::@return -irq::@return: scope:[irq] from irq::@4 - [76] return +sprites_irq: scope:[sprites_irq] from + [45] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + [50] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + [51] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [54] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [57] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + [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 sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + [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 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + [64] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) + [65] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 + [66] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [67] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + [68] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + [69] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + [70] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 + [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + to:sprites_irq::@return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + [72] return to:@return -irq::@2: scope:[irq] from irq::@5 - [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [78] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [79] (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 - [80] phi() - to:irq::@9 -irq::@9: scope:[irq] from irq::toSpritePtr2 - [81] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 - to:irq::@3 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 + [73] (byte) irq_cnt#14 ← (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:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + [76] phi() + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [77] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@5 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + [78] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [79] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [82] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 diff --git a/src/test/ref/examples/tetris/test-sprites.log b/src/test/ref/examples/tetris/test-sprites.log index 220212acf..53d3c4965 100644 --- a/src/test/ref/examples/tetris/test-sprites.log +++ b/src/test/ref/examples/tetris/test-sprites.log @@ -1,7 +1,7 @@ -Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() +Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call (byte~) $3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES -Inlined call (byte~) irq::$2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) sprites_irq::$3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN_1 Inlined call (byte~) main::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 (byte*) PLAYFIELD_CHARSET @@ -101,6 +101,9 @@ CONTROL FLOW GRAPH SSA (byte) PLAYFIELD_COLS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte~) $2 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 (byte[$2]) playfield#0 ← { fill( $2, 0) } + (byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 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++) { @@ -141,14 +144,16 @@ sprites_init::@return: scope:[sprites_init] from sprites_init::@1 return to:@return @5: scope:[] from @4 + (byte) render_screen_showing#8 ← phi( @4/(byte) render_screen_showing#0 ) (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - (byte) irq_raster_next#18 ← phi( @5/(byte) irq_raster_next#0 ) - (byte) irq_sprite_ypos#16 ← phi( @5/(byte) irq_sprite_ypos#0 ) + (byte) irq_raster_next#21 ← phi( @5/(byte) irq_raster_next#0 ) + (byte) render_screen_showing#7 ← phi( @5/(byte) render_screen_showing#8 ) + (byte) irq_sprite_ypos#19 ← phi( @5/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @5/(byte*) toSpritePtr1_sprite#0 ) (word) toSpritePtr1_$0#0 ← ((word)) (byte*) toSpritePtr1_sprite#1 (word) toSpritePtr1_$1#0 ← (word) toSpritePtr1_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 @@ -156,14 +161,16 @@ toSpritePtr1: scope:[] from @5 (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 to:toSpritePtr1_@return toSpritePtr1_@return: scope:[] from toSpritePtr1 - (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) irq_raster_next#20 ← phi( toSpritePtr1/(byte) irq_raster_next#21 ) + (byte) render_screen_showing#6 ← phi( toSpritePtr1/(byte) render_screen_showing#7 ) + (byte) irq_sprite_ypos#16 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#19 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 to:@9 @9: scope:[] from toSpritePtr1_@return - (byte) irq_raster_next#16 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#17 ) - (byte) irq_sprite_ypos#13 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#14 ) + (byte) irq_raster_next#19 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#20 ) + (byte) render_screen_showing#5 ← phi( toSpritePtr1_@return/(byte) render_screen_showing#6 ) + (byte) irq_sprite_ypos#15 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#16 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) (byte~) $3 ← (byte) toSpritePtr1_return#3 (byte) irq_sprite_ptr#0 ← (byte~) $3 @@ -179,127 +186,152 @@ sprites_irq_init: scope:[sprites_irq_init] from main::@9 *((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()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) sprites_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( @8/(byte) irq_raster_next#15 ) - (byte) irq_cnt#8 ← phi( @8/(byte) irq_cnt#11 ) - (byte) irq_sprite_ptr#9 ← phi( @8/(byte) irq_sprite_ptr#12 ) +sprites_irq: scope:[sprites_irq] from + (byte) irq_raster_next#17 ← phi( @8/(byte) irq_raster_next#18 ) + (byte) irq_cnt#15 ← phi( @8/(byte) irq_cnt#17 ) + (byte) render_screen_showing#3 ← phi( @8/(byte) render_screen_showing#4 ) + (byte) irq_sprite_ptr#10 ← phi( @8/(byte) irq_sprite_ptr#15 ) (byte) irq_sprite_ypos#4 ← phi( @8/(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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) irq::ptr#0 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + (byte) irq_raster_next#16 ← phi( sprites_irq/(byte) irq_raster_next#17 sprites_irq::@1/(byte) irq_raster_next#16 ) + (byte) irq_cnt#12 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) render_screen_showing#2 ← phi( sprites_irq/(byte) render_screen_showing#3 sprites_irq::@1/(byte) render_screen_showing#2 ) + (byte) irq_sprite_ptr#7 ← phi( sprites_irq/(byte) irq_sprite_ptr#10 sprites_irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) irq_sprite_ypos#5 ← phi( sprites_irq/(byte) irq_sprite_ypos#4 sprites_irq::@1/(byte) irq_sprite_ypos#5 ) + (bool~) sprites_irq::$0 ← *((byte*) RASTER#0) < (byte) irq_sprite_ypos#5 + if((bool~) sprites_irq::$0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + (byte) irq_sprite_ypos#17 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#5 ) + (byte) irq_raster_next#14 ← phi( sprites_irq::@1/(byte) irq_raster_next#16 ) + (byte) irq_cnt#9 ← phi( sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) render_screen_showing#1 ← phi( sprites_irq::@1/(byte) render_screen_showing#2 ) + (byte) irq_sprite_ptr#4 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#4 + (bool~) sprites_irq::$1 ← (byte) render_screen_showing#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) sprites_irq::$1) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) + (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#17 ) + (byte) irq_raster_next#10 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) + (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#5 + (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#5 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) + (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#17 ) + (byte) irq_raster_next#11 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) + (byte) irq_cnt#7 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#6 + (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#6 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#11 sprites_irq::@8/(byte) irq_sprite_ptr#12 ) + (byte) irq_sprite_ypos#9 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#11 sprites_irq::@8/(byte) irq_sprite_ypos#12 ) + (byte) irq_raster_next#7 ← phi( sprites_irq::@2/(byte) irq_raster_next#10 sprites_irq::@8/(byte) irq_raster_next#11 ) + (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#6 sprites_irq::@8/(byte) irq_cnt#7 ) (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 + (bool~) sprites_irq::$2 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) sprites_irq::$2) goto sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 (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#18 ← phi( irq::@2/(byte) irq_sprite_ypos#1 ) - (byte) irq_cnt#15 ← phi( irq::@2/(byte) irq_cnt#2 ) - (byte) irq_raster_next#14 ← phi( irq::@2/(byte) irq_raster_next#1 ) - (byte*) irq::toSpritePtr2_sprite#1 ← phi( irq::@2/(byte*) irq::toSpritePtr2_sprite#0 ) - (word) irq::toSpritePtr2_$0#0 ← ((word)) (byte*) irq::toSpritePtr2_sprite#1 - (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#17 ← phi( irq::toSpritePtr2/(byte) irq_sprite_ypos#18 ) - (byte) irq_cnt#14 ← phi( irq::toSpritePtr2/(byte) irq_cnt#15 ) - (byte) irq_raster_next#11 ← phi( irq::toSpritePtr2/(byte) irq_raster_next#14 ) - (byte) irq::toSpritePtr2_return#2 ← phi( irq::toSpritePtr2/(byte) irq::toSpritePtr2_return#0 ) - (byte) irq::toSpritePtr2_return#1 ← (byte) irq::toSpritePtr2_return#2 - to:irq::@9 -irq::@9: scope:[irq] from irq::toSpritePtr2_@return - (byte) irq_sprite_ypos#15 ← phi( irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#17 ) - (byte) irq_cnt#13 ← phi( irq::toSpritePtr2_@return/(byte) irq_cnt#14 ) - (byte) irq_raster_next#8 ← phi( irq::toSpritePtr2_@return/(byte) irq_raster_next#11 ) - (byte) irq::toSpritePtr2_return#3 ← phi( irq::toSpritePtr2_@return/(byte) irq::toSpritePtr2_return#1 ) - (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*) sprites_irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 + to:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + (byte) irq_sprite_ypos#21 ← phi( sprites_irq::@4/(byte) irq_sprite_ypos#1 ) + (byte) irq_cnt#18 ← phi( sprites_irq::@4/(byte) irq_cnt#2 ) + (byte) irq_raster_next#15 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) + (byte*) sprites_irq::toSpritePtr2_sprite#1 ← phi( sprites_irq::@4/(byte*) sprites_irq::toSpritePtr2_sprite#0 ) + (word) sprites_irq::toSpritePtr2_$0#0 ← ((word)) (byte*) sprites_irq::toSpritePtr2_sprite#1 + (word) sprites_irq::toSpritePtr2_$1#0 ← (word) sprites_irq::toSpritePtr2_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) sprites_irq::toSpritePtr2_$2#0 ← ((byte)) (word) sprites_irq::toSpritePtr2_$1#0 + (byte) sprites_irq::toSpritePtr2_return#0 ← (byte) sprites_irq::toSpritePtr2_$2#0 + to:sprites_irq::toSpritePtr2_@return +sprites_irq::toSpritePtr2_@return: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + (byte) irq_sprite_ypos#20 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#21 ) + (byte) irq_cnt#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#18 ) + (byte) irq_raster_next#12 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#15 ) + (byte) sprites_irq::toSpritePtr2_return#2 ← phi( sprites_irq::toSpritePtr2/(byte) sprites_irq::toSpritePtr2_return#0 ) + (byte) sprites_irq::toSpritePtr2_return#1 ← (byte) sprites_irq::toSpritePtr2_return#2 + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return + (byte) irq_sprite_ypos#18 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#20 ) + (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#16 ) + (byte) irq_raster_next#8 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#12 ) + (byte) sprites_irq::toSpritePtr2_return#3 ← phi( sprites_irq::toSpritePtr2_@return/(byte) sprites_irq::toSpritePtr2_return#1 ) + (byte~) sprites_irq::$3 ← (byte) sprites_irq::toSpritePtr2_return#3 + (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$3 + to:sprites_irq::@5 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + (byte) irq_cnt#13 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#8 ) + (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#9 ) + (byte) irq_raster_next#4 ← phi( sprites_irq::@3/(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#15 ) - (byte) irq_cnt#9 ← phi( irq::@6/(byte) irq_cnt#12 irq::@9/(byte) irq_cnt#13 ) - (byte) irq_raster_next#5 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#8 ) - (byte) irq::raster_next#0 ← (byte) irq_raster_next#5 - (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 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + (byte) irq_sprite_ptr#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ptr#2 sprites_irq::@13/(byte) irq_sprite_ptr#1 ) + (byte) irq_sprite_ypos#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ypos#2 sprites_irq::@13/(byte) irq_sprite_ypos#18 ) + (byte) irq_cnt#11 ← phi( sprites_irq::@10/(byte) irq_cnt#13 sprites_irq::@13/(byte) irq_cnt#14 ) + (byte) irq_raster_next#5 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#8 ) + (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#5 + (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 + (bool~) sprites_irq::$6 ← ! (bool~) sprites_irq::$5 + if((bool~) sprites_irq::$6) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + (byte) irq_sprite_ptr#9 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#13 sprites_irq::@5/(byte) irq_sprite_ptr#14 ) + (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#14 ) + (byte) irq_raster_next#9 ← phi( sprites_irq::@12/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#5 ) + (byte) irq_cnt#8 ← phi( sprites_irq::@12/(byte) irq_cnt#10 sprites_irq::@5/(byte) irq_cnt#11 ) + (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + *((byte*) RASTER#0) ← (byte) sprites_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 ) + to:sprites_irq::@return +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ptr#14 ) + (byte) irq_sprite_ypos#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ypos#14 ) + (byte) irq_raster_next#13 ← phi( sprites_irq::@5/(byte) irq_raster_next#5 ) + (byte) irq_cnt#10 ← phi( sprites_irq::@5/(byte) irq_cnt#11 ) + (byte) sprites_irq::raster_next#3 ← phi( sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@6/(byte) irq_sprite_ptr#9 ) + (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@6/(byte) irq_sprite_ypos#10 ) + (byte) irq_raster_next#6 ← phi( sprites_irq::@6/(byte) irq_raster_next#9 ) + (byte) irq_cnt#5 ← phi( sprites_irq::@6/(byte) irq_cnt#8 ) (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 @@ -374,10 +406,11 @@ main::@return: scope:[main] from main::@1 return to:@return @8: scope:[] from @9 - (byte) irq_raster_next#15 ← phi( @9/(byte) irq_raster_next#16 ) - (byte) irq_cnt#11 ← phi( @9/(byte) irq_cnt#0 ) - (byte) irq_sprite_ptr#12 ← phi( @9/(byte) irq_sprite_ptr#0 ) - (byte) irq_sprite_ypos#8 ← phi( @9/(byte) irq_sprite_ypos#13 ) + (byte) irq_raster_next#18 ← phi( @9/(byte) irq_raster_next#19 ) + (byte) irq_cnt#17 ← phi( @9/(byte) irq_cnt#0 ) + (byte) render_screen_showing#4 ← phi( @9/(byte) render_screen_showing#5 ) + (byte) irq_sprite_ptr#15 ← phi( @9/(byte) irq_sprite_ptr#0 ) + (byte) irq_sprite_ypos#8 ← phi( @9/(byte) irq_sprite_ypos#15 ) call main to:@10 @10: scope:[] from @8 @@ -578,49 +611,6 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -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 @@ -630,6 +620,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_cnt#13 (byte) irq_cnt#14 (byte) irq_cnt#15 +(byte) irq_cnt#16 +(byte) irq_cnt#17 +(byte) irq_cnt#18 (byte) irq_cnt#2 (byte) irq_cnt#3 (byte) irq_cnt#4 @@ -650,7 +643,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_raster_next#16 (byte) irq_raster_next#17 (byte) irq_raster_next#18 +(byte) irq_raster_next#19 (byte) irq_raster_next#2 +(byte) irq_raster_next#20 +(byte) irq_raster_next#21 (byte) irq_raster_next#3 (byte) irq_raster_next#4 (byte) irq_raster_next#5 @@ -664,6 +660,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#12 +(byte) irq_sprite_ptr#13 +(byte) irq_sprite_ptr#14 +(byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#2 (byte) irq_sprite_ptr#3 (byte) irq_sprite_ptr#4 @@ -684,7 +683,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#18 +(byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#2 +(byte) irq_sprite_ypos#20 +(byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#3 (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#5 @@ -759,6 +761,20 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte[$2]) playfield (byte[$2]) playfield#0 +(byte) render_screen_render +(byte) render_screen_render#0 +(byte) render_screen_show +(byte) render_screen_show#0 +(byte) render_screen_showing +(byte) render_screen_showing#0 +(byte) render_screen_showing#1 +(byte) render_screen_showing#2 +(byte) render_screen_showing#3 +(byte) render_screen_showing#4 +(byte) render_screen_showing#5 +(byte) render_screen_showing#6 +(byte) render_screen_showing#7 +(byte) render_screen_showing#8 (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 @@ -777,6 +793,57 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) sprites_init::xpos#0 (byte) sprites_init::xpos#1 (byte) sprites_init::xpos#2 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(bool~) sprites_irq::$0 +(bool~) sprites_irq::$1 +(bool~) sprites_irq::$2 +(byte~) sprites_irq::$3 +(byte~) sprites_irq::$4 +(bool~) sprites_irq::$5 +(bool~) sprites_irq::$6 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 +(byte) sprites_irq::ptr#1 +(byte) sprites_irq::ptr#2 +(byte) sprites_irq::ptr#3 +(byte) sprites_irq::ptr#4 +(byte) sprites_irq::ptr#5 +(byte) sprites_irq::ptr#6 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 +(byte) sprites_irq::raster_next#1 +(byte) sprites_irq::raster_next#2 +(byte) sprites_irq::raster_next#3 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word) sprites_irq::toSpritePtr2_$0#0 +(word~) sprites_irq::toSpritePtr2_$1 +(word) sprites_irq::toSpritePtr2_$1#0 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_$2#0 +(label) sprites_irq::toSpritePtr2_@return +(byte) sprites_irq::toSpritePtr2_return +(byte) sprites_irq::toSpritePtr2_return#0 +(byte) sprites_irq::toSpritePtr2_return#1 +(byte) sprites_irq::toSpritePtr2_return#2 +(byte) sprites_irq::toSpritePtr2_return#3 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte*) sprites_irq::toSpritePtr2_sprite#0 +(byte*) sprites_irq::toSpritePtr2_sprite#1 +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 (void()) sprites_irq_init() (void()*~) sprites_irq_init::$0 (label) sprites_irq_init::@return @@ -800,81 +867,95 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() 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 +Inversing boolean not (bool~) sprites_irq::$6 ← (byte~) sprites_irq::$4 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 Successful SSA optimization Pass2UnaryNotSimplification -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#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#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 candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS_1#0 = (byte*~) $0 Alias (byte*) PLAYFIELD_SPRITE_PTRS_2#0 = (byte*~) $1 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) render_screen_showing#0 = (byte) render_screen_showing#8 (byte) render_screen_showing#7 (byte) render_screen_showing#6 (byte) render_screen_showing#5 (byte) render_screen_showing#4 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 -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#15 (byte) irq_cnt#2 (byte) irq_cnt#14 -Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#15 -Alias (byte) irq_cnt#1 = (byte) irq_cnt#12 -Alias (byte) irq::raster_next#0 = (byte) irq::raster_next#3 -Alias (byte) irq_cnt#10 = (byte) irq_cnt#9 -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_sprite_ypos#0 = (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#8 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#4 (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#12 +Alias (byte) render_screen_showing#1 = (byte) render_screen_showing#2 +Alias (byte) irq_cnt#12 = (byte) irq_cnt#9 (byte) irq_cnt#6 (byte) irq_cnt#7 +Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#14 (byte) irq_raster_next#16 (byte) irq_raster_next#11 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#12 +Alias (byte) sprites_irq::ptr#0 = (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 +Alias (byte*) sprites_irq::toSpritePtr2_sprite#0 = (byte*) sprites_irq::toSpritePtr2_sprite#1 +Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#15 (byte) irq_raster_next#12 (byte) irq_raster_next#8 +Alias (byte) irq_cnt#14 = (byte) irq_cnt#18 (byte) irq_cnt#2 (byte) irq_cnt#16 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#18 +Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#7 +Alias (byte) irq_sprite_ypos#6 = (byte) irq_sprite_ypos#9 +Alias (byte) irq_sprite_ptr#5 = (byte) irq_sprite_ptr#8 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#13 +Alias (byte) sprites_irq::raster_next#0 = (byte) sprites_irq::raster_next#3 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#11 +Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#5 +Alias (byte) irq_sprite_ypos#13 = (byte) irq_sprite_ypos#14 +Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#14 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#8 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_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#9 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 +Alias (byte) irq_cnt#0 = (byte) irq_cnt#17 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 -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#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 candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 +Alias (byte) irq_cnt#12 = (byte) irq_cnt#4 +Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#4 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#6 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#5 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) irq_raster_next#13 = (byte) irq_raster_next#3 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#13 +Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#3 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#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#12 -Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 -Self Phi Eliminated (byte) irq_sprite_ypos#5 -Self Phi Eliminated (byte) irq_sprite_ptr#4 -Self Phi Eliminated (byte) irq_cnt#4 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 +Self Phi Eliminated (byte) irq_sprite_ypos#11 +Self Phi Eliminated (byte) irq_sprite_ptr#11 +Self Phi Eliminated (byte) render_screen_showing#1 +Self Phi Eliminated (byte) irq_cnt#12 Self Phi Eliminated (byte) irq_raster_next#10 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#0 +Redundant Phi (byte) irq_raster_next#21 (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 +Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#21 Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 -Redundant Phi (byte) irq_raster_next#16 (byte) irq_raster_next#17 +Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#20 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#12 (byte) irq_sprite_ptr#0 -Redundant Phi (byte) irq_raster_next#15 (byte) irq_raster_next#16 +Redundant Phi (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#15 +Redundant Phi (byte) render_screen_showing#3 (byte) render_screen_showing#0 +Redundant Phi (byte) irq_cnt#15 (byte) irq_cnt#0 +Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 +Redundant Phi (byte) irq_sprite_ypos#11 (byte) irq_sprite_ypos#4 +Redundant Phi (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#10 +Redundant Phi (byte) render_screen_showing#1 (byte) render_screen_showing#3 +Redundant Phi (byte) irq_cnt#12 (byte) irq_cnt#15 +Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#0 +Redundant Phi (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSpritePtr2_return#1 +Redundant Phi (byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#0 +Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 Successful SSA optimization Pass2RedundantPhiElimination 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~) sprites_irq::$0 if(*((byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 +Simple Condition (bool~) sprites_irq::$1 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 +Simple Condition (bool~) sprites_irq::$2 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 +Simple Condition (bool~) sprites_irq::$6 if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -962,63 +1043,65 @@ Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240 Constant (const byte) PLAYFIELD_LINES#0 = 22 Constant (const byte) PLAYFIELD_COLS#0 = 10 +Constant (const byte) render_screen_render#0 = 64 +Constant (const byte) render_screen_show#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 void()*) sprites_irq_init::$0 = &sprites_irq Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) PLAYFIELD_SPRITE_PTRS_1#0 = PLAYFIELD_SCREEN_1#0+SPRITE_PTRS#0 Constant (const byte*) PLAYFIELD_SPRITE_PTRS_2#0 = PLAYFIELD_SCREEN_2#0+SPRITE_PTRS#0 Constant (const byte) $2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#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*) sprites_irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN_1#0 Constant (const byte*) main::toD0181_screen#0 = PLAYFIELD_SCREEN_1#0 Constant (const byte*) main::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[$2]) playfield#0 = { fill( $2, 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) sprites_irq::toSpritePtr2_$0#0 = ((word))sprites_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) toSpritePtr1_$2#0 = ((byte))toSpritePtr1_$1#0 -Constant (const word) irq::toSpritePtr2_$1#0 = irq::toSpritePtr2_$0#0>>6 +Constant (const word) sprites_irq::toSpritePtr2_$1#0 = sprites_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) toSpritePtr1_return#0 = toSpritePtr1_$2#0 -Constant (const byte) irq::toSpritePtr2_$2#0 = ((byte))irq::toSpritePtr2_$1#0 +Constant (const byte) sprites_irq::toSpritePtr2_$2#0 = ((byte))sprites_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) toSpritePtr1_return#1 = toSpritePtr1_return#0 -Constant (const byte) irq::toSpritePtr2_return#0 = irq::toSpritePtr2_$2#0 +Constant (const byte) sprites_irq::toSpritePtr2_return#0 = sprites_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) $3 = toSpritePtr1_return#1 -Constant (const byte) irq::toSpritePtr2_return#1 = irq::toSpritePtr2_return#0 +Constant (const byte) sprites_irq::toSpritePtr2_return#1 = sprites_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 +Constant (const byte) sprites_irq::$3 = sprites_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_1#0+0) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+0) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+1) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+1) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+2) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+2) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+3) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+0) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+1) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+2) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+3) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@2 @@ -1029,7 +1112,7 @@ Successful SSA optimization Pass2EliminateUnusedBlocks 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) sprites_irq::toSpritePtr2_@return Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::@7 Culled Empty Block (label) main::toD0181_@return @@ -1037,24 +1120,28 @@ Culled Empty Block (label) main::@1 Successful SSA optimization Pass2CullEmptyBlocks 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) sprites_irq::toSpritePtr2_return#1 Inlining constant with different constant siblings (const byte) toSpritePtr1_return#1 Constant inlined main::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined main::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 +Constant inlined sprites_irq::$3 = (const byte) sprites_irq::toSpritePtr2_return#0 +Constant inlined sprites_irq::toSpritePtr2_return#1 = (const byte) sprites_irq::toSpritePtr2_return#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) toSpritePtr1_return#0 -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 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_1#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN_1#0 -Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() +Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined main::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined main::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383 +Constant inlined sprites_irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SPRITES#0 +Constant inlined sprites_irq::toSpritePtr2_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined main::toD0181_$6#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined sprites_irq::toSpritePtr2_$2#0 = (const byte) sprites_irq::toSpritePtr2_return#0 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 sprites_irq::toSpritePtr2_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 Constant inlined main::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#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_1#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 @@ -1065,16 +1152,12 @@ 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 -Constant inlined irq::$2 = (const byte) irq::toSpritePtr2_return#0 -Constant inlined irq::toSpritePtr2_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 -Constant inlined irq::toSpritePtr2_$2#0 = (const byte) irq::toSpritePtr2_return#0 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero SPRITES_YPOS#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_1#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_2#0+0 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) +Added new block during phi lifting sprites_irq::@14(between sprites_irq::@5 and sprites_irq::@6) Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 @@ -1083,21 +1166,21 @@ Adding NOP phi() at start of main 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 +Adding NOP phi() at start of sprites_irq::toSpritePtr2 CALL GRAPH -Calls in [] to main:8 -Calls in [main] to sprites_init:16 sprites_irq_init:18 +Calls in [] to main:9 +Calls in [main] to sprites_init:17 sprites_irq_init:19 Created 4 initial phi equivalence classes -Coalesced [44] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [45] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [69] irq_raster_next#19 ← irq_raster_next#2 -Coalesced [75] irq::raster_next#5 ← irq::raster_next#1 -Coalesced [81] irq::raster_next#4 ← irq::raster_next#0 -Coalesced [87] irq_raster_next#20 ← irq_raster_next#1 +Coalesced [45] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [46] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [66] irq_raster_next#22 ← irq_raster_next#2 +Coalesced [72] sprites_irq::raster_next#4 ← sprites_irq::raster_next#1 +Coalesced [77] sprites_irq::raster_next#5 ← sprites_irq::raster_next#0 +Coalesced [83] irq_raster_next#23 ← irq_raster_next#1 Coalesced down to 4 phi equivalence classes Culled Empty Block (label) sprites_init::@3 -Culled Empty Block (label) irq::@10 +Culled Empty Block (label) sprites_irq::@14 Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 @@ -1106,13 +1189,14 @@ Adding NOP phi() at start of main 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 +Adding NOP phi() at start of sprites_irq::toSpritePtr2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() to:@4 @4: scope:[] from @begin + [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 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++) { @@ -1127,143 +1211,150 @@ FINAL CONTROL FLOW GRAPH }} to:@5 @5: scope:[] from @4 - [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - [4] phi() + [5] phi() to:@9 @9: scope:[] from toSpritePtr1 - [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 - [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 @8: scope:[] from @9 - [7] phi() - [8] call main + [8] phi() + [9] call main to:@end @end: scope:[] from @8 - [9] phi() -main: scope:[main] from @8 [10] phi() +main: scope:[main] from @8 + [11] phi() 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 + [12] *((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] phi() 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 + [14] *((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() + [15] 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 + [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [17] call sprites_init to:main::@9 main::@9: scope:[main] from main::@8 - [17] phi() - [18] call sprites_irq_init + [18] phi() + [19] call sprites_irq_init to:main::@2 main::@2: scope:[main] from main::@2 main::@9 - [19] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) + [20] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) to:main::@2 sprites_irq_init: scope:[sprites_irq_init] from main::@9 asm { sei } - [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [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() + [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [27] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [30] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [31] return + [32] return to:@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) + [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: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 + [37] (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 ) + [37] (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 ) + [38] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [41] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [42] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [43] 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 + [44] return to:@return -irq: scope:[irq] from - [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 - [50] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 - to:irq::@5 -irq::@5: scope:[irq] from irq::@1 - [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [52] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 - [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 - [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [59] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [60] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [63] 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 - [64] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [65] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [66] (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 - [67] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [68] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [69] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [70] 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 - [71] (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 - [72] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [73] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - to:irq::@return -irq::@return: scope:[irq] from irq::@4 - [76] return +sprites_irq: scope:[sprites_irq] from + [45] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + [50] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + [51] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [54] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [57] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + [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 sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + [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 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + [64] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) + [65] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 + [66] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [67] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + [68] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + [69] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + [70] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 + [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + to:sprites_irq::@return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + [72] return to:@return -irq::@2: scope:[irq] from irq::@5 - [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [78] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [79] (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 - [80] phi() - to:irq::@9 -irq::@9: scope:[irq] from irq::toSpritePtr2 - [81] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 - to:irq::@3 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 + [73] (byte) irq_cnt#14 ← (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:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + [76] phi() + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [77] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@5 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + [78] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [79] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [82] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 VARIABLE REGISTER WEIGHTS @@ -1360,38 +1451,21 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -interrupt(HARDWARE_CLOBBER)(void()) irq() -(byte~) irq::$3 4.0 -(byte) irq::ptr -(byte) irq::ptr#0 2.6666666666666665 -(byte) irq::ptr#1 2.4 -(byte) irq::ptr#2 3.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.2222222222222222 +(byte) irq_cnt#0 0.2 (byte) irq_cnt#1 4.0 -(byte) irq_cnt#13 20.0 +(byte) irq_cnt#14 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 0.2 +(byte) irq_raster_next#0 0.18181818181818182 (byte) irq_raster_next#1 1.0 -(byte) irq_raster_next#12 6.0 +(byte) irq_raster_next#13 6.0 (byte) irq_raster_next#2 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 0.2727272727272727 +(byte) irq_sprite_ptr#0 0.25 (byte) irq_sprite_ptr#1 20.0 (byte) irq_sprite_ptr#2 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 0.8095238095238095 +(byte) irq_sprite_ypos#0 0.7391304347826086 (byte) irq_sprite_ypos#1 20.0 (byte) irq_sprite_ypos#2 20.0 (void()) main() @@ -1416,6 +1490,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*) main::vicSelectGfxBank1_toDd001_gfx (byte) main::vicSelectGfxBank1_toDd001_return (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(byte) render_screen_render +(byte) render_screen_show +(byte) render_screen_showing +(byte) render_screen_showing#0 0.5714285714285714 (void()) sprites_init() (byte) sprites_init::s (byte) sprites_init::s#1 16.5 @@ -1425,6 +1503,25 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) sprites_init::xpos (byte) sprites_init::xpos#1 7.333333333333333 (byte) sprites_init::xpos#2 8.25 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 4.0 +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 2.5 +(byte) sprites_irq::ptr#1 2.6666666666666665 +(byte) sprites_irq::ptr#2 4.0 +(byte) sprites_irq::ptr#3 2.6666666666666665 +(byte) sprites_irq::ptr#4 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 2.6666666666666665 +(byte) sprites_irq::raster_next#1 4.0 +(byte) sprites_irq::raster_next#2 6.0 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 2.5 (void()) sprites_irq_init() (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 @@ -1435,65 +1532,74 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() Initial phi equivalence classes [ 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#13 irq_raster_next#2 irq_raster_next#1 ] +[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Added variable render_screen_showing#0 to zero page equivalence class [ render_screen_showing#0 ] 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 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 ] -Added variable irq::ptr#2 to zero page equivalence class [ irq::ptr#2 ] +Added variable sprites_irq::ypos#0 to zero page equivalence class [ sprites_irq::ypos#0 ] +Added variable sprites_irq::ptr#0 to zero page equivalence class [ sprites_irq::ptr#0 ] +Added variable sprites_irq::ptr#3 to zero page equivalence class [ sprites_irq::ptr#3 ] +Added variable sprites_irq::ptr#4 to zero page equivalence class [ sprites_irq::ptr#4 ] 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 sprites_irq::$4 to zero page equivalence class [ sprites_irq::$4 ] +Added variable irq_cnt#14 to zero page equivalence class [ irq_cnt#14 ] 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 ] +Added variable sprites_irq::ptr#1 to zero page equivalence class [ sprites_irq::ptr#1 ] +Added variable sprites_irq::ptr#2 to zero page equivalence class [ sprites_irq::ptr#2 ] Complete equivalence classes [ 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#13 irq_raster_next#2 irq_raster_next#1 ] +[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ render_screen_showing#0 ] [ irq_raster_next#0 ] [ irq_sprite_ypos#0 ] [ irq_sprite_ptr#0 ] [ irq_cnt#0 ] [ sprites_init::s2#0 ] -[ irq::ypos#0 ] -[ irq::ptr#0 ] -[ irq::ptr#1 ] -[ irq::ptr#2 ] +[ sprites_irq::ypos#0 ] +[ sprites_irq::ptr#0 ] +[ sprites_irq::ptr#3 ] +[ sprites_irq::ptr#4 ] [ irq_cnt#1 ] [ irq_sprite_ypos#2 ] [ irq_sprite_ptr#2 ] -[ irq::$3 ] -[ irq_cnt#13 ] +[ sprites_irq::$4 ] +[ irq_cnt#14 ] [ irq_sprite_ypos#1 ] [ irq_sprite_ptr#1 ] +[ sprites_irq::ptr#1 ] +[ sprites_irq::ptr#2 ] 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 [ 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 ] -Allocated zp ZP_BYTE:14 [ irq::ptr#2 ] -Allocated zp ZP_BYTE:15 [ irq_cnt#1 ] -Allocated zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] -Allocated zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] -Allocated zp ZP_BYTE:18 [ irq::$3 ] -Allocated zp ZP_BYTE:19 [ irq_cnt#13 ] -Allocated zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] -Allocated zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] +Allocated zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Allocated zp ZP_BYTE:6 [ render_screen_showing#0 ] +Allocated zp ZP_BYTE:7 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] +Allocated zp ZP_BYTE:10 [ irq_cnt#0 ] +Allocated zp ZP_BYTE:11 [ sprites_init::s2#0 ] +Allocated zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] +Allocated zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] +Allocated zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] +Allocated zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] +Allocated zp ZP_BYTE:16 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] +Allocated zp ZP_BYTE:19 [ sprites_irq::$4 ] +Allocated zp ZP_BYTE:20 [ irq_cnt#14 ] +Allocated zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] +Allocated zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -1513,7 +1619,6 @@ INITIAL ASM .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D018 = $d018 @@ -1526,7 +1631,6 @@ INITIAL ASM .label CIA2_PORT_A_DDR = $dd02 .label HARDWARE_IRQ = $fffe .const BLACK = 0 - .const DARK_GREY = $b .label PLAYFIELD_SCREEN_1 = $400 .label PLAYFIELD_SCREEN_2 = $2c00 .label PLAYFIELD_SPRITES = $2000 @@ -1537,358 +1641,356 @@ INITIAL ASM .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label irq_raster_next = 6 - .label irq_sprite_ypos = 7 - .label irq_sprite_ptr = 8 - .label irq_cnt = 9 - .label irq_cnt_1 = $f + .label render_screen_showing = 6 + .label irq_raster_next = 7 + .label irq_sprite_ypos = 8 + .label irq_sprite_ptr = 9 + .label irq_cnt = $a + .label irq_cnt_1 = $10 .label irq_raster_next_1 = 4 - .label irq_sprite_ypos_1 = $14 - .label irq_sprite_ptr_1 = $15 + .label irq_sprite_ypos_1 = $15 + .label irq_sprite_ptr_1 = $16 .label irq_raster_next_2 = 4 - .label irq_sprite_ypos_2 = $10 - .label irq_sprite_ptr_2 = $11 - .label irq_raster_next_12 = 4 - .label irq_cnt_13 = $13 + .label irq_sprite_ypos_2 = $11 + .label irq_sprite_ptr_2 = $12 + .label irq_raster_next_13 = 4 + .label irq_cnt_14 = $14 //SEG2 @begin bbegin: jmp b4 //SEG3 @4 b4: -//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} jmp b5 -//SEG5 @5 +//SEG6 @5 b5: -//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG9 toSpritePtr1 +//SEG10 toSpritePtr1 toSpritePtr1: jmp b9 -//SEG10 @9 +//SEG11 @9 b9: -//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG13 [7] phi from @9 to @8 [phi:@9->@8] +//SEG14 [8] phi from @9 to @8 [phi:@9->@8] b8_from_b9: jmp b8 -//SEG14 @8 +//SEG15 @8 b8: -//SEG15 [8] call main -//SEG16 [10] phi from @8 to main [phi:@8->main] +//SEG16 [9] call main +//SEG17 [11] phi from @8 to main [phi:@8->main] main_from_b8: jsr main -//SEG17 [9] phi from @8 to @end [phi:@8->@end] +//SEG18 [10] phi from @8 to @end [phi:@8->@end] bend_from_b8: jmp bend -//SEG18 @end +//SEG19 @end bend: -//SEG19 main +//SEG20 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f jmp vicSelectGfxBank1 - //SEG20 main::vicSelectGfxBank1 + //SEG21 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 + //SEG22 [12] *((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 [13] 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 + //SEG24 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG24 main::vicSelectGfxBank1_@1 + //SEG25 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG25 [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG26 [14] *((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 [15] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG27 main::toD0181 + //SEG28 main::toD0181 toD0181: jmp b8 - //SEG28 main::@8 + //SEG29 main::@8 b8: - //SEG29 [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG30 [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG30 [16] call sprites_init + //SEG31 [17] call sprites_init jsr sprites_init - //SEG31 [17] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG32 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG32 main::@9 + //SEG33 main::@9 b9: - //SEG33 [18] call sprites_irq_init + //SEG34 [19] call sprites_irq_init jsr sprites_irq_init jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN_1 jmp b2 } -//SEG36 sprites_irq_init +//SEG37 sprites_irq_init sprites_irq_init: { - //SEG37 asm { sei } + //SEG38 asm { sei } sei - //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG39 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG39 asm { ldaCIA1_INTERRUPT } + //SEG40 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG43 [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //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 + //SEG44 [27] *((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 - //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG46 [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG47 asm { cli } + //SEG48 asm { cli } cli jmp breturn - //SEG48 sprites_irq_init::@return + //SEG49 sprites_irq_init::@return breturn: - //SEG49 [31] return + //SEG50 [32] return rts } -//SEG50 sprites_init +//SEG51 sprites_init sprites_init: { - .label s2 = $a + .label s2 = $b .label xpos = 3 .label s = 2 - //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG55 [36] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG56 [37] 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 + //SEG57 [37] 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 - //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 + //SEG58 [37] 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 - //SEG58 [36] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG59 [37] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //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 + //SEG60 [37] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG61 [37] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG61 sprites_init::@1 + //SEG62 sprites_init::@1 b1: - //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 + //SEG63 [38] (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 - //SEG63 [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG64 [39] *((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 - //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG65 [40] *((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 - //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 + //SEG66 [41] (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 - //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG67 [42] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //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 + //SEG68 [43] 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 - //SEG68 sprites_init::@return + //SEG69 sprites_init::@return breturn: - //SEG69 [43] return + //SEG70 [44] return rts } -//SEG70 irq -irq: { +//SEG71 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - .label _3 = $12 - .label ypos = $b - .label ptr = $c - .label ptr_1 = $d - .label ptr_2 = $e + .label _4 = $13 + .label ypos = $c + .label ptr = $d + .label ptr_1 = $17 + .label ptr_2 = $18 + .label ptr_3 = $e + .label ptr_4 = $f .label raster_next = 5 - //SEG71 entry interrupt(HARDWARE_CLOBBER) + //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG73 [45] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG75 [47] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG76 [48] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG77 [49] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 jmp b1 - //SEG78 irq::@1 + //SEG78 sprites_irq::@1 b1: - //SEG79 [50] 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 sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - jmp b5 - //SEG80 irq::@5 - b5: - //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + bcc b1 + jmp b7 + //SEG80 sprites_irq::@7 + b7: + //SEG81 [51] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 - lda ptr - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG82 [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + jmp b8 + //SEG83 sprites_irq::@8 + b8: + //SEG84 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG85 [54] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny - sty ptr_1 - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 - lda ptr_1 + sty ptr_3 + //SEG86 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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_1+2 - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 - lda ptr_1 + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [59] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuz1=_inc_vbuz2 - ldy ptr_1 + //SEG88 [57] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + ldy ptr_3 iny - sty ptr_2 - //SEG90 [60] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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_1+3 - //SEG91 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuz1 - lda ptr_2 + sty ptr_4 + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG92 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + jmp b3 + //SEG90 sprites_irq::@3 + b3: + //SEG91 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG93 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG92 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a - beq b2 - jmp b6 - //SEG94 irq::@6 - b6: - //SEG95 [64] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + beq b4 + jmp b10 + //SEG93 sprites_irq::@10 + b10: + //SEG94 [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 lda #$15 clc adc irq_raster_next sta irq_raster_next_2 - //SEG96 [65] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG95 [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 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos_2 - //SEG97 [66] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG96 [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 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_2 - //SEG98 [67] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - b3_from_b6: - b3_from_b9: - //SEG99 [67] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - jmp b3 - //SEG100 irq::@3 - b3: - //SEG101 [68] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuz1=vbuz2 - lda irq_raster_next_12 + //SEG97 [64] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + b5_from_b10: + b5_from_b13: + //SEG98 [64] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + jmp b5 + //SEG99 sprites_irq::@5 + b5: + //SEG100 [65] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuz1=vbuz2 + lda irq_raster_next_13 sta raster_next - //SEG102 [69] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG101 [66] (byte~) sprites_irq::$4 ← (byte) sprites_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 - //SEG103 [70] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuz1_neq_vbuc1_then_la1 - lda _3 + sta _4 + //SEG102 [67] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuz1_neq_vbuc1_then_la1 + lda _4 cmp #3 - bne b4_from_b3 - jmp b8 - //SEG104 irq::@8 - b8: - //SEG105 [71] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 + bne b6_from_b5 + jmp b12 + //SEG103 sprites_irq::@12 + b12: + //SEG104 [68] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 dec raster_next - //SEG106 [72] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - b4_from_b3: - b4_from_b8: - //SEG107 [72] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - jmp b4 - //SEG108 irq::@4 - b4: - //SEG109 [73] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 + //SEG105 [69] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + b6_from_b12: + b6_from_b5: + //SEG106 [69] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + jmp b6 + //SEG107 sprites_irq::@6 + b6: + //SEG108 [70] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuz1 lda raster_next sta RASTER - //SEG110 [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG109 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG111 [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL jmp breturn - //SEG112 irq::@return + //SEG110 sprites_irq::@return breturn: - //SEG113 [76] return - exit interrupt(HARDWARE_CLOBBER) + //SEG111 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -1896,29 +1998,52 @@ irq: { regy: ldy #00 rti - //SEG114 irq::@2 - b2: - //SEG115 [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG112 sprites_irq::@4 + b4: + //SEG113 [73] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 - sta irq_cnt_13 - //SEG116 [78] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + sta irq_cnt_14 + //SEG114 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next_1 - //SEG117 [79] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG115 [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 - //SEG118 [80] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - toSpritePtr2_from_b2: + //SEG116 [76] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG119 irq::toSpritePtr2 + //SEG117 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b9 - //SEG120 irq::@9 - b9: - //SEG121 [81] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b13 + //SEG118 sprites_irq::@13 + b13: + //SEG119 [77] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 - jmp b3_from_b9 + jmp b5_from_b13 + //SEG120 sprites_irq::@2 + b2: + //SEG121 [78] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + lda ptr + sta PLAYFIELD_SPRITE_PTRS_1 + //SEG122 [79] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + ldy ptr + iny + sty ptr_1 + //SEG123 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG125 [82] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + ldy ptr_1 + iny + sty ptr_2 + //SEG126 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + lda ptr_2 + sta PLAYFIELD_SPRITE_PTRS_1+3 + jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) @@ -1935,165 +2060,176 @@ irq: { REGISTER UPLIFT POTENTIAL REGISTERS -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 [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 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } 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 +Statement [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [30] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [38] (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:9::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: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 [62] (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 [63] 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 [64] (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 [65] (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 [66] (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 [69] (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 [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [76] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [78] (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 [79] (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 [81] (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 [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 [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [41] (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:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [50] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] +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 sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [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~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Statement [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#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#14 ← (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) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a +Statement [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } 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 -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 [62] (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 [63] 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 [64] (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 [65] (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 [66] (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 [69] (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 [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [76] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [78] (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 [79] (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 [81] (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 [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [30] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:9::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:9::sprites_init:17 [ ] ) always clobbers reg byte a +Statement [38] (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:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [41] (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:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [50] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [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 sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [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~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a +Statement [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#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#14 ← (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) sprites_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 [ 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 , -Potential registers zp ZP_BYTE:14 [ irq::ptr#2 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:15 [ irq_cnt#1 ] : zp ZP_BYTE:15 , -Potential registers zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:16 , -Potential registers zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:17 , -Potential registers zp ZP_BYTE:18 [ irq::$3 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:19 [ irq_cnt#13 ] : zp ZP_BYTE:19 , -Potential registers zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:20 , -Potential registers zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:21 , +Potential registers zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:4 , +Potential registers zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ render_screen_showing#0 ] : zp ZP_BYTE:6 , +Potential registers zp ZP_BYTE:7 [ irq_raster_next#0 ] : zp ZP_BYTE:7 , +Potential registers zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:8 , +Potential registers zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:9 , +Potential registers zp ZP_BYTE:10 [ irq_cnt#0 ] : zp ZP_BYTE:10 , +Potential registers zp ZP_BYTE:11 [ sprites_init::s2#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ irq_cnt#1 ] : zp ZP_BYTE:16 , +Potential registers zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:17 , +Potential registers zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:18 , +Potential registers zp ZP_BYTE:19 [ sprites_irq::$4 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ irq_cnt#14 ] : zp ZP_BYTE:20 , +Potential registers zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:21 , +Potential registers zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:22 , +Potential registers zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , 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 ] 0.81: zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] 0.27: zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] 0.22: zp ZP_BYTE:9 [ irq_cnt#0 ] 0.2: zp ZP_BYTE:6 [ irq_raster_next#0 ] -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:18 [ irq::$3 ] 3: zp ZP_BYTE:14 [ irq::ptr#2 ] 2.67: zp ZP_BYTE:12 [ irq::ptr#0 ] 2.5: zp ZP_BYTE:11 [ irq::ypos#0 ] 2.4: zp ZP_BYTE:13 [ irq::ptr#1 ] +Uplift Scope [] 20: zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:20 [ irq_cnt#14 ] 20: zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] 8.33: zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] 4: zp ZP_BYTE:16 [ irq_cnt#1 ] 0.74: zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] 0.57: zp ZP_BYTE:6 [ render_screen_showing#0 ] 0.25: zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] 0.2: zp ZP_BYTE:10 [ irq_cnt#0 ] 0.18: zp ZP_BYTE:7 [ irq_raster_next#0 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:11 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [sprites_irq] 12.67: zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] 4: zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:19 [ sprites_irq::$4 ] 4: zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] Uplift Scope [sprites_irq_init] Uplift Scope [main] -Uplifting [] best 1929 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 [sprites_init] best 1759 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 1724 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte a [ irq::$3 ] reg byte x [ irq::ptr#2 ] reg byte a [ irq::ptr#0 ] zp ZP_BYTE:11 [ irq::ypos#0 ] zp ZP_BYTE:13 [ irq::ptr#1 ] -Limited combination testing to 100 combinations of 3072 possible. -Uplifting [sprites_irq_init] best 1724 combination -Uplifting [main] best 1724 combination -Attempting to uplift remaining variables inzp ZP_BYTE:16 [ irq_sprite_ypos#2 ] -Uplifting [] best 1724 combination zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ irq_sprite_ptr#2 ] -Uplifting [] best 1724 combination zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:19 [ irq_cnt#13 ] -Uplifting [] best 1724 combination zp ZP_BYTE:19 [ irq_cnt#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ irq_sprite_ypos#1 ] -Uplifting [] best 1724 combination zp ZP_BYTE:20 [ irq_sprite_ypos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ irq_sprite_ptr#1 ] -Uplifting [] best 1724 combination zp ZP_BYTE:21 [ irq_sprite_ptr#1 ] +Uplifting [] best 1954 combination zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] zp ZP_BYTE:20 [ irq_cnt#14 ] zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:16 [ irq_cnt#1 ] zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] zp ZP_BYTE:6 [ render_screen_showing#0 ] zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] zp ZP_BYTE:10 [ irq_cnt#0 ] zp ZP_BYTE:7 [ irq_raster_next#0 ] +Uplifting [sprites_init] best 1784 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 [sprites_irq] best 1758 combination reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] reg byte x [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::$4 ] reg byte a [ sprites_irq::ptr#2 ] zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] +Limited combination testing to 100 combinations of 36864 possible. +Uplifting [sprites_irq_init] best 1758 combination +Uplifting [main] best 1758 combination +Attempting to uplift remaining variables inzp ZP_BYTE:17 [ irq_sprite_ypos#2 ] +Uplifting [] best 1758 combination zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:18 [ irq_sprite_ptr#2 ] +Uplifting [] best 1758 combination zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ irq_cnt#14 ] +Uplifting [] best 1758 combination zp ZP_BYTE:20 [ irq_cnt#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ irq_sprite_ypos#1 ] +Uplifting [] best 1758 combination zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:22 [ irq_sprite_ptr#1 ] +Uplifting [] best 1758 combination zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 1724 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 1724 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 ] -Uplifting [] best 1724 combination zp ZP_BYTE:15 [ irq_cnt#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:11 [ irq::ypos#0 ] -Uplifting [irq] best 1709 combination reg byte a [ irq::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ irq::ptr#1 ] -Uplifting [irq] best 1691 combination reg byte x [ irq::ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:7 [ irq_sprite_ypos#0 ] -Uplifting [] best 1691 combination zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ irq_sprite_ptr#0 ] -Uplifting [] best 1691 combination zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ irq_cnt#0 ] -Uplifting [] best 1691 combination zp ZP_BYTE:9 [ irq_cnt#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:6 [ irq_raster_next#0 ] -Uplifting [] best 1691 combination zp ZP_BYTE:6 [ irq_raster_next#0 ] -Coalescing zero page register with common assignment [ zp ZP_BYTE:4 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:6 [ irq_raster_next#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:16 [ irq_sprite_ypos#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:17 [ irq_sprite_ptr#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:15 [ irq_cnt#1 ] ] - score: 1 -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 ] ] +Uplifting [sprites_init] best 1758 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#13 irq_raster_next#2 irq_raster_next#1 ] +Uplifting [] best 1758 combination zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:16 [ irq_cnt#1 ] +Uplifting [] best 1758 combination zp ZP_BYTE:16 [ irq_cnt#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ sprites_irq::ptr#3 ] +Uplifting [sprites_irq] best 1746 combination reg byte x [ sprites_irq::ptr#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 1736 combination reg byte a [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 1721 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 1708 combination reg byte x [ sprites_irq::ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Uplifting [] best 1708 combination zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_screen_showing#0 ] +Uplifting [] best 1708 combination zp ZP_BYTE:6 [ render_screen_showing#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ irq_sprite_ptr#0 ] +Uplifting [] best 1708 combination zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:10 [ irq_cnt#0 ] +Uplifting [] best 1708 combination zp ZP_BYTE:10 [ irq_cnt#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ irq_raster_next#0 ] +Uplifting [] best 1708 combination zp ZP_BYTE:7 [ irq_raster_next#0 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:7 [ irq_raster_next#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:16 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:20 [ irq_cnt#14 ] ] 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 SEG71 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG113 [76] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG113 [76] return - exit interrupt(HARDWARE_CLOBBER) +Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ render_screen_showing#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] +Interrupt procedure sprites_irq clobbers AXCNZV +Removing interrupt register storage sty regy+1 in SEG72 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG111 [72] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG111 [72] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2113,7 +2249,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D018 = $d018 @@ -2126,7 +2261,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label CIA2_PORT_A_DDR = $dd02 .label HARDWARE_IRQ = $fffe .const BLACK = 0 - .const DARK_GREY = $b .label PLAYFIELD_SCREEN_1 = $400 .label PLAYFIELD_SCREEN_2 = $2c00 .label PLAYFIELD_SPRITES = $2000 @@ -2137,341 +2271,358 @@ ASSEMBLER BEFORE OPTIMIZATION .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .label render_screen_showing = 4 .label irq_raster_next = 3 - .label irq_sprite_ypos = 4 - .label irq_sprite_ptr = 5 - .label irq_cnt = 6 + .label irq_sprite_ypos = 5 + .label irq_sprite_ptr = 6 + .label irq_cnt = 7 //SEG2 @begin bbegin: jmp b4 //SEG3 @4 b4: -//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} jmp b5 -//SEG5 @5 +//SEG6 @5 b5: -//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG9 toSpritePtr1 +//SEG10 toSpritePtr1 toSpritePtr1: jmp b9 -//SEG10 @9 +//SEG11 @9 b9: -//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG13 [7] phi from @9 to @8 [phi:@9->@8] +//SEG14 [8] phi from @9 to @8 [phi:@9->@8] b8_from_b9: jmp b8 -//SEG14 @8 +//SEG15 @8 b8: -//SEG15 [8] call main -//SEG16 [10] phi from @8 to main [phi:@8->main] +//SEG16 [9] call main +//SEG17 [11] phi from @8 to main [phi:@8->main] main_from_b8: jsr main -//SEG17 [9] phi from @8 to @end [phi:@8->@end] +//SEG18 [10] phi from @8 to @end [phi:@8->@end] bend_from_b8: jmp bend -//SEG18 @end +//SEG19 @end bend: -//SEG19 main +//SEG20 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f jmp vicSelectGfxBank1 - //SEG20 main::vicSelectGfxBank1 + //SEG21 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 + //SEG22 [12] *((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 [13] 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 + //SEG24 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG24 main::vicSelectGfxBank1_@1 + //SEG25 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG25 [13] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG26 [14] *((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 [15] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG27 main::toD0181 + //SEG28 main::toD0181 toD0181: jmp b8 - //SEG28 main::@8 + //SEG29 main::@8 b8: - //SEG29 [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG30 [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG30 [16] call sprites_init + //SEG31 [17] call sprites_init jsr sprites_init - //SEG31 [17] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG32 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG32 main::@9 + //SEG33 main::@9 b9: - //SEG33 [18] call sprites_irq_init + //SEG34 [19] call sprites_irq_init jsr sprites_irq_init jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN_1 jmp b2 } -//SEG36 sprites_irq_init +//SEG37 sprites_irq_init sprites_irq_init: { - //SEG37 asm { sei } + //SEG38 asm { sei } sei - //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG39 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG39 asm { ldaCIA1_INTERRUPT } + //SEG40 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG43 [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //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 + //SEG44 [27] *((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 - //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG46 [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG47 asm { cli } + //SEG48 asm { cli } cli jmp breturn - //SEG48 sprites_irq_init::@return + //SEG49 sprites_irq_init::@return breturn: - //SEG49 [31] return + //SEG50 [32] return rts } -//SEG50 sprites_init +//SEG51 sprites_init sprites_init: { .label xpos = 2 - //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG55 [36] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG56 [37] 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 + //SEG57 [37] 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 - //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 + //SEG58 [37] 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 - //SEG58 [36] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG59 [37] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //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 + //SEG60 [37] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG61 [37] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG61 sprites_init::@1 + //SEG62 sprites_init::@1 b1: - //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 + //SEG63 [38] (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 - //SEG63 [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG64 [39] *((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 - //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG65 [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //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 + //SEG66 [41] (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 - //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG67 [42] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG68 [43] 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 - //SEG68 sprites_init::@return + //SEG69 sprites_init::@return breturn: - //SEG69 [43] return + //SEG70 [44] return rts } -//SEG70 irq -irq: { +//SEG71 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG71 entry interrupt(HARDWARE_CLOBBER) + //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG73 [45] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG75 [47] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG76 [48] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG77 [49] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 jmp b1 - //SEG78 irq::@1 + //SEG78 sprites_irq::@1 b1: - //SEG79 [50] 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 sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - jmp b5 - //SEG80 irq::@5 - b5: - //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 - lda irq_sprite_ptr - //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_2 - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa - tax + bcc b1 + jmp b7 + //SEG80 sprites_irq::@7 + b7: + //SEG81 [51] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + ldx irq_sprite_ptr + //SEG82 [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + jmp b8 + //SEG83 sprites_irq::@8 + b8: + //SEG84 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_2 + //SEG85 [54] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG86 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [59] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG88 [57] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx inx - //SEG90 [60] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+3 - //SEG91 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG92 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + jmp b3 + //SEG90 sprites_irq::@3 + b3: + //SEG91 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG93 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG92 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b2 - jmp b6 - //SEG94 irq::@6 - b6: - //SEG95 [64] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + beq b4 + jmp b10 + //SEG93 sprites_irq::@10 + b10: + //SEG94 [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 lda #$15 clc adc irq_raster_next sta irq_raster_next - //SEG96 [65] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG95 [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 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG97 [66] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG96 [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 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG98 [67] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - b3_from_b6: - b3_from_b9: - //SEG99 [67] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - jmp b3 - //SEG100 irq::@3 - b3: - //SEG101 [68] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG97 [64] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + b5_from_b10: + b5_from_b13: + //SEG98 [64] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + jmp b5 + //SEG99 sprites_irq::@5 + b5: + //SEG100 [65] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG102 [69] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG101 [66] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG103 [70] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG102 [67] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #3 - bne b4_from_b3 - jmp b8 - //SEG104 irq::@8 - b8: - //SEG105 [71] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + bne b6_from_b5 + jmp b12 + //SEG103 sprites_irq::@12 + b12: + //SEG104 [68] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG106 [72] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - b4_from_b3: - b4_from_b8: - //SEG107 [72] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - jmp b4 - //SEG108 irq::@4 - b4: - //SEG109 [73] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG105 [69] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + b6_from_b12: + b6_from_b5: + //SEG106 [69] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + jmp b6 + //SEG107 sprites_irq::@6 + b6: + //SEG108 [70] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG110 [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG109 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG111 [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL jmp breturn - //SEG112 irq::@return + //SEG110 sprites_irq::@return breturn: - //SEG113 [76] return - exit interrupt(HARDWARE_CLOBBER) + //SEG111 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG114 irq::@2 - b2: - //SEG115 [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG112 sprites_irq::@4 + b4: + //SEG113 [73] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG116 [78] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG114 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG117 [79] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG115 [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG118 [80] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - toSpritePtr2_from_b2: + //SEG116 [76] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG119 irq::toSpritePtr2 + //SEG117 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b9 - //SEG120 irq::@9 - b9: - //SEG121 [81] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b13 + //SEG118 sprites_irq::@13 + b13: + //SEG119 [77] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b3_from_b9 + jmp b5_from_b13 + //SEG120 sprites_irq::@2 + b2: + //SEG121 [78] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_1 + //SEG122 [79] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG123 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG125 [82] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG126 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+3 + jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) @@ -2505,23 +2656,24 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b5 -Removing instruction jmp b6 -Removing instruction jmp b3 +Removing instruction jmp b7 Removing instruction jmp b8 -Removing instruction jmp b4 +Removing instruction jmp b3 +Removing instruction jmp b10 +Removing instruction jmp b5 +Removing instruction jmp b12 +Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp toSpritePtr2 -Removing instruction jmp b9 +Removing instruction jmp b13 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda SPRITES_MC Removing instruction lda SPRITES_EXPAND_Y Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 -Replacing label b4_from_b3 with b4 -Replacing label b3_from_b9 with b3 +Replacing label b6_from_b5 with b6 +Replacing label b5_from_b13 with b5 Removing instruction b4: -Removing instruction b5: Removing instruction toSpritePtr1_from_b5: Removing instruction toSpritePtr1: Removing instruction b8_from_b9: @@ -2533,14 +2685,15 @@ 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: -Removing instruction b4_from_b3: -Removing instruction b4_from_b8: +Removing instruction b5_from_b10: +Removing instruction b5_from_b13: +Removing instruction b6_from_b12: +Removing instruction b6_from_b5: Removing instruction breturn: -Removing instruction toSpritePtr2_from_b2: +Removing instruction toSpritePtr2_from_b4: Removing instruction toSpritePtr2: Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b5: Removing instruction b9: Removing instruction b8: Removing instruction bend: @@ -2551,10 +2704,11 @@ Removing instruction b9: Removing instruction breturn: Removing instruction b1_from_sprites_init: Removing instruction breturn: -Removing instruction b5: -Removing instruction b6: +Removing instruction b7: Removing instruction b8: -Removing instruction b9: +Removing instruction b10: +Removing instruction b12: +Removing instruction b13: Succesful ASM optimization Pass5UnusedLabelElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination @@ -2575,7 +2729,6 @@ FINAL SYMBOL TABLE (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) BLUE (byte*) BORDERCOL -(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 (byte) BROWN (byte*) CHARGEN (byte*) CIA1_INTERRUPT @@ -2600,7 +2753,6 @@ FINAL SYMBOL TABLE (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY -(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 (byte) GREEN (byte) GREY (void()**) HARDWARE_IRQ @@ -2694,51 +2846,23 @@ FINAL SYMBOL TABLE (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -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 2.6666666666666665 -(byte) irq::ptr#1 reg byte x 2.4 -(byte) irq::ptr#2 reg byte x 3.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:6 0.2222222222222222 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:6 4.0 -(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:6 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.2 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 4.0 +(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:7 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.2 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.18181818181818182 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:3 1.0 -(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:3 6.0 +(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:3 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:5 0.2727272727272727 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:5 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.25 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:6 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:4 0.8095238095238095 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:4 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:4 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.7391304347826086 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:5 20.0 (void()) main() (label) main::@2 (label) main::@8 @@ -2770,6 +2894,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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_1#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(byte) render_screen_render +(byte) render_screen_show +(byte) render_screen_showing +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.5714285714285714 (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return @@ -2781,6 +2909,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 reg byte a 4.0 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 reg byte x 2.5 +(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#2 reg byte a 4.0 +(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte x 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) sprites_irq::raster_next#1 reg byte x 4.0 +(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(const byte) sprites_irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 reg byte a 2.5 (void()) sprites_irq_init() (label) sprites_irq_init::@return (label) toSpritePtr1 @@ -2793,21 +2954,24 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() 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 ] +zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:4 [ render_screen_showing#0 ] +zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] 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 ] -reg byte x [ irq::ptr#2 ] -reg byte a [ irq::$3 ] +reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::ptr#0 ] +reg byte x [ sprites_irq::ptr#3 ] +reg byte x [ sprites_irq::ptr#4 ] +reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#1 ] +reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 1290 +Score: 1301 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -2826,7 +2990,6 @@ Score: 1290 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D018 = $d018 @@ -2839,7 +3002,6 @@ Score: 1290 .label CIA2_PORT_A_DDR = $dd02 .label HARDWARE_IRQ = $fffe .const BLACK = 0 - .const DARK_GREY = $b .label PLAYFIELD_SCREEN_1 = $400 .label PLAYFIELD_SCREEN_2 = $2c00 .label PLAYFIELD_SPRITES = $2000 @@ -2850,278 +3012,292 @@ Score: 1290 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .label render_screen_showing = 4 .label irq_raster_next = 3 - .label irq_sprite_ypos = 4 - .label irq_sprite_ptr = 5 - .label irq_cnt = 6 + .label irq_sprite_ypos = 5 + .label irq_sprite_ptr = 6 + .label irq_cnt = 7 //SEG2 @begin bbegin: //SEG3 @4 -//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} -//SEG5 @5 -//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 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 } } }} +//SEG6 @5 +//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] -//SEG9 toSpritePtr1 -//SEG10 @9 -//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG10 toSpritePtr1 +//SEG11 @9 +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG13 [7] phi from @9 to @8 [phi:@9->@8] -//SEG14 @8 -//SEG15 [8] call main -//SEG16 [10] phi from @8 to main [phi:@8->main] +//SEG14 [8] phi from @9 to @8 [phi:@9->@8] +//SEG15 @8 +//SEG16 [9] call main +//SEG17 [11] phi from @8 to main [phi:@8->main] jsr main -//SEG17 [9] phi from @8 to @end [phi:@8->@end] -//SEG18 @end -//SEG19 main +//SEG18 [10] phi from @8 to @end [phi:@8->@end] +//SEG19 @end +//SEG20 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$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 + //SEG21 main::vicSelectGfxBank1 + //SEG22 [12] *((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 + //SEG23 [13] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG24 main::vicSelectGfxBank1_toDd001 + //SEG25 main::vicSelectGfxBank1_@1 + //SEG26 [14] *((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 + //SEG27 [15] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG28 main::toD0181 + //SEG29 main::@8 + //SEG30 [16] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG30 [16] call sprites_init + //SEG31 [17] 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 + //SEG32 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG33 main::@9 + //SEG34 [19] call sprites_irq_init jsr sprites_irq_init - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [19] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) PLAYFIELD_SCREEN_1#0) ← ++ *((const byte*) PLAYFIELD_SCREEN_1#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc PLAYFIELD_SCREEN_1 jmp b2 } -//SEG36 sprites_irq_init +//SEG37 sprites_irq_init sprites_irq_init: { - //SEG37 asm { sei } + //SEG38 asm { sei } sei - //SEG38 [21] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG39 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG39 asm { ldaCIA1_INTERRUPT } + //SEG40 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG40 [23] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG41 [24] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG42 [25] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG42 [25] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG43 [26] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //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 + //SEG44 [27] *((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 - //SEG44 [27] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG45 [28] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG45 [28] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG46 [29] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG46 [29] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG47 asm { cli } + //SEG48 asm { cli } cli - //SEG48 sprites_irq_init::@return - //SEG49 [31] return + //SEG49 sprites_irq_init::@return + //SEG50 [32] return rts } -//SEG50 sprites_init +//SEG51 sprites_init sprites_init: { .label xpos = 2 - //SEG51 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG52 [33] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG53 [34] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG53 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG54 [35] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG54 [35] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG55 [36] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //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 + //SEG56 [37] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG57 [37] 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 - //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 + //SEG58 [37] 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 - //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 + //SEG59 [37] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG60 [37] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG61 [37] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG62 sprites_init::@1 b1: - //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 + //SEG63 [38] (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 - //SEG63 [38] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG64 [39] *((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 - //SEG64 [39] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG65 [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //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 + //SEG66 [41] (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 - //SEG66 [41] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG67 [42] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG68 [43] 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 - //SEG68 sprites_init::@return - //SEG69 [43] return + //SEG69 sprites_init::@return + //SEG70 [44] return rts } -//SEG70 irq -irq: { +//SEG71 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG71 entry interrupt(HARDWARE_CLOBBER) + //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG72 [44] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG73 [45] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG73 [45] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG74 [46] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG75 [47] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG76 [48] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG77 [49] *((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) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG78 irq::@1 + //SEG78 sprites_irq::@1 b1: - //SEG79 [50] 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 sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - //SEG80 irq::@5 - //SEG81 [51] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 - lda irq_sprite_ptr - //SEG82 [52] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG83 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_2 - //SEG84 [54] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa - tax + bcc b1 + //SEG80 sprites_irq::@7 + //SEG81 [51] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + ldx irq_sprite_ptr + //SEG82 [52] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + //SEG83 sprites_irq::@8 + //SEG84 [53] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_2 + //SEG85 [54] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG85 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG86 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG86 [55] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG87 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG88 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [59] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG88 [57] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx inx - //SEG90 [60] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+3 - //SEG91 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG92 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG90 sprites_irq::@3 + b3: + //SEG91 [59] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG93 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG92 [60] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b2 - //SEG94 irq::@6 - //SEG95 [64] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + beq b4 + //SEG93 sprites_irq::@10 + //SEG94 [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 lda #$15 clc adc irq_raster_next sta irq_raster_next - //SEG96 [65] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG95 [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 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG97 [66] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG96 [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 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG98 [67] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - //SEG99 [67] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - //SEG100 irq::@3 - b3: - //SEG101 [68] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG97 [64] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + //SEG98 [64] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + //SEG99 sprites_irq::@5 + b5: + //SEG100 [65] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG102 [69] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG101 [66] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG103 [70] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG102 [67] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #3 - bne b4 - //SEG104 irq::@8 - //SEG105 [71] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + bne b6 + //SEG103 sprites_irq::@12 + //SEG104 [68] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG106 [72] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - //SEG107 [72] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - //SEG108 irq::@4 - b4: - //SEG109 [73] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG105 [69] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + //SEG106 [69] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + //SEG107 sprites_irq::@6 + b6: + //SEG108 [70] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG110 [74] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG109 [71] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG111 [75] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL - //SEG112 irq::@return - //SEG113 [76] return - exit interrupt(HARDWARE_CLOBBER) + //SEG110 sprites_irq::@return + //SEG111 [72] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG114 irq::@2 - b2: - //SEG115 [77] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG112 sprites_irq::@4 + b4: + //SEG113 [73] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG116 [78] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG114 [74] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG117 [79] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG115 [75] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG118 [80] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - //SEG119 irq::toSpritePtr2 - //SEG120 irq::@9 - //SEG121 [81] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG116 [76] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG117 sprites_irq::toSpritePtr2 + //SEG118 sprites_irq::@13 + //SEG119 [77] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr + jmp b5 + //SEG120 sprites_irq::@2 + b2: + //SEG121 [78] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_1 + //SEG122 [79] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG123 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG125 [82] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG126 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" diff --git a/src/test/ref/examples/tetris/test-sprites.sym b/src/test/ref/examples/tetris/test-sprites.sym index 78f4f1431..eb081b36f 100644 --- a/src/test/ref/examples/tetris/test-sprites.sym +++ b/src/test/ref/examples/tetris/test-sprites.sym @@ -13,7 +13,6 @@ (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) BLUE (byte*) BORDERCOL -(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 (byte) BROWN (byte*) CHARGEN (byte*) CIA1_INTERRUPT @@ -38,7 +37,6 @@ (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY -(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 (byte) GREEN (byte) GREY (void()**) HARDWARE_IRQ @@ -132,51 +130,23 @@ (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos -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 2.6666666666666665 -(byte) irq::ptr#1 reg byte x 2.4 -(byte) irq::ptr#2 reg byte x 3.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:6 0.2222222222222222 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:6 4.0 -(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:6 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.2 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 4.0 +(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:7 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.2 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.18181818181818182 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:3 1.0 -(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:3 6.0 +(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:3 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:5 0.2727272727272727 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:5 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.25 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:6 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:4 0.8095238095238095 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:4 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:4 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.7391304347826086 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:5 20.0 (void()) main() (label) main::@2 (label) main::@8 @@ -208,6 +178,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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_1#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield +(byte) render_screen_render +(byte) render_screen_show +(byte) render_screen_showing +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.5714285714285714 (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return @@ -219,6 +193,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 reg byte a 4.0 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 reg byte x 2.5 +(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#2 reg byte a 4.0 +(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte x 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) sprites_irq::raster_next#1 reg byte x 4.0 +(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(const byte) sprites_irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 reg byte a 2.5 (void()) sprites_irq_init() (label) sprites_irq_init::@return (label) toSpritePtr1 @@ -231,14 +238,17 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() 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 ] +zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:4 [ render_screen_showing#0 ] +zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] 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 ] -reg byte x [ irq::ptr#2 ] -reg byte a [ irq::$3 ] +reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::ptr#0 ] +reg byte x [ sprites_irq::ptr#3 ] +reg byte x [ sprites_irq::ptr#4 ] +reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#1 ] +reg byte a [ sprites_irq::ptr#2 ] diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index e3adc5d54..2f9af33e1 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -78,10 +78,11 @@ .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $16 + .label render_screen_showing = $18 .label irq_raster_next = $17 - .label irq_sprite_ypos = $18 - .label irq_sprite_ptr = $19 - .label irq_cnt = $1a + .label irq_sprite_ypos = $19 + .label irq_sprite_ptr = $1a + .label irq_cnt = $1b .label current_movedown_counter = 4 .label current_ypos = $e .label current_piece_gfx = $12 @@ -92,22 +93,21 @@ .label render_screen_show = 2 .label current_piece = $f .label current_piece_12 = 7 - .label render_screen_render_27 = 5 + .label render_screen_render_28 = 5 .label current_xpos_47 = 6 - .label current_piece_gfx_52 = 7 - .label current_piece_char_62 = 9 - .label render_screen_render_68 = 5 - .label current_xpos_109 = 6 + .label current_piece_gfx_53 = 7 + .label render_screen_render_62 = 5 .label current_xpos_110 = 6 - .label current_piece_gfx_99 = 7 + .label current_xpos_111 = 6 .label current_piece_gfx_100 = 7 - .label current_piece_char_87 = 9 - .label current_piece_char_88 = 9 - .label current_piece_73 = 7 + .label current_piece_gfx_101 = 7 .label current_piece_74 = 7 .label current_piece_75 = 7 .label current_piece_76 = 7 + .label current_piece_77 = 7 bbegin: + lda #0 + sta render_screen_showing lda #IRQ_RASTER_FIRST sta irq_raster_next lda #$32 @@ -119,7 +119,7 @@ bbegin: jsr main main: { .label key_event = $d - .label render = $1b + .label render = $1c jsr sid_rnd_init sei jsr render_init @@ -129,17 +129,16 @@ main: { jsr play_spawn_current ldx #$40 jsr render_playfield - ldx current_ypos + ldy current_ypos lda current_xpos - sta current_xpos_109 + sta current_xpos_110 lda current_piece_gfx - sta current_piece_gfx_99 + sta current_piece_gfx_100 lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - lda current_piece_char - sta current_piece_char_87 + sta current_piece_gfx_100+1 + ldx current_piece_char lda #$40 - sta render_screen_render_27 + sta render_screen_render_28 jsr render_current ldy play_spawn_current._3 lda PIECES,y @@ -158,12 +157,6 @@ main: { lda RASTER cmp #$ff bne b4 - lda render_screen_show - lsr - lsr - lsr - lsr - sta BORDERCOL jsr render_show jsr keyboard_event_scan jsr keyboard_event_get @@ -183,25 +176,21 @@ main: { clc adc render cmp #0 - beq b7 + beq b4 ldx render_screen_render jsr render_playfield - ldx current_ypos + ldy current_ypos lda render_screen_render - sta render_screen_render_68 + sta render_screen_render_62 lda current_xpos - sta current_xpos_110 + sta current_xpos_111 lda current_piece_gfx - sta current_piece_gfx_100 + sta current_piece_gfx_101 lda current_piece_gfx+1 - sta current_piece_gfx_100+1 - lda current_piece_char - sta current_piece_char_88 + sta current_piece_gfx_101+1 + ldx current_piece_char jsr render_current jsr render_screen_swap - b7: - lda #0 - sta BORDERCOL jmp b4 } render_screen_swap: { @@ -214,12 +203,13 @@ render_screen_swap: { rts } render_current: { - .label ypos2 = $a - .label screen_line = $1c - .label xpos = $d - .label i = $c - .label l = $b - txa + .label ypos2 = 9 + .label screen_line = $1d + .label xpos = $c + .label i = $b + .label l = $a + .label c = $d + tya asl sta ypos2 lda #0 @@ -252,7 +242,7 @@ render_current: { bcc b2 jmp b7 b2: - lda render_screen_render_27 + lda render_screen_render_28 clc adc ypos2 tay @@ -262,23 +252,25 @@ render_current: { sta screen_line+1 lda current_xpos_47 sta xpos - ldx #0 + lda #0 + sta c b4: ldy i - lda (current_piece_gfx_52),y + lda (current_piece_gfx_53),y inc i cmp #0 beq b5 lda xpos cmp #PLAYFIELD_COLS bcs b5 - lda current_piece_char_62 - ldy xpos + tay + txa sta (screen_line),y b5: inc xpos - inx - cpx #4 + inc c + lda c + cmp #4 bne b4 jmp b3 } @@ -346,9 +338,9 @@ play_move_rotate: { ldy current_ypos ldx orientation lda current_piece - sta current_piece_76 + sta current_piece_77 lda current_piece+1 - sta current_piece_76+1 + sta current_piece_77+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -374,8 +366,8 @@ play_collision: { .label xpos = 6 .label piece_gfx = 7 .label ypos2 = 9 - .label playfield_line = $1c - .label i = $1e + .label playfield_line = $1d + .label i = $1f .label col = $c .label l = $a .label i_2 = $b @@ -473,9 +465,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_75 + sta current_piece_76 lda current_piece+1 - sta current_piece_75+1 + sta current_piece_76+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -494,9 +486,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_75+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -535,9 +527,9 @@ play_move_down: { sta play_collision.xpos ldx current_orientation lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_74+1 jsr play_collision cmp #COLLISION_NONE beq b6 @@ -847,6 +839,8 @@ render_show: { lda #toD0182_return b2: sta D018 + lda render_screen_show + sta render_screen_showing rts toD0181: lda #toD0181_return @@ -908,9 +902,9 @@ sprites_irq_init: { sta RASTER lda #IRQ_RASTER sta IRQ_ENABLE - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 cli rts @@ -957,6 +951,7 @@ render_init: { lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 lda #BLACK + sta BORDERCOL sta BGCOL1 lda #BLUE sta BGCOL2 @@ -1159,12 +1154,10 @@ sid_rnd_init: { sta SID_VOICE3_CONTROL rts } -irq: { +sprites_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 @@ -1173,23 +1166,22 @@ irq: { b1: lda RASTER cmp irq_sprite_ypos - bne b1 - lda irq_sprite_ptr - sta PLAYFIELD_SPRITE_PTRS_1 - sta PLAYFIELD_SPRITE_PTRS_2 - tax + bcc b1 + ldx irq_sprite_ptr + lda render_screen_showing + cmp #0 + beq b2 + stx PLAYFIELD_SPRITE_PTRS_2 inx - stx PLAYFIELD_SPRITE_PTRS_1+1 stx PLAYFIELD_SPRITE_PTRS_2+1 - stx PLAYFIELD_SPRITE_PTRS_1+2 stx PLAYFIELD_SPRITE_PTRS_2+2 inx - stx PLAYFIELD_SPRITE_PTRS_1+3 stx PLAYFIELD_SPRITE_PTRS_2+3 + b3: inc irq_cnt lda irq_cnt cmp #$a - beq b2 + beq b4 lda #$15 clc adc irq_raster_next @@ -1202,25 +1194,23 @@ irq: { clc adc irq_sprite_ptr sta irq_sprite_ptr - b3: + b5: ldx irq_raster_next txa and #7 cmp #3 - bne b4 + bne b6 dex - b4: + b6: stx RASTER lda #IRQ_RASTER sta IRQ_STATUS - lda #BLACK - sta BORDERCOL rega: lda #00 regx: ldx #00 rti - b2: + b4: lda #0 sta irq_cnt lda #IRQ_RASTER_FIRST @@ -1229,6 +1219,17 @@ irq: { sta irq_sprite_ypos lda #toSpritePtr2_return sta irq_sprite_ptr + jmp b5 + b2: + stx PLAYFIELD_SPRITE_PTRS_1 + txa + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_1+1 + sta PLAYFIELD_SPRITE_PTRS_1+2 + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index 97e0e8e70..992dfb162 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -2,6 +2,7 @@ [0] phi() to:@14 @14: scope:[] from @begin + [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 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" }} @@ -23,76 +24,75 @@ }} to:@21 @21: scope:[] from @20 - [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 + [5] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [6] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:toSpritePtr1 toSpritePtr1: scope:[] from @21 - [6] phi() + [7] phi() to:@33 @33: 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 + [8] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [9] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@32 @32: scope:[] from @33 - [9] phi() - [10] call main + [10] phi() + [11] call main to:@end @end: scope:[] from @32 - [11] phi() -main: scope:[main] from @32 [12] phi() - [13] call sid_rnd_init +main: scope:[main] from @32 + [13] phi() + [14] call sid_rnd_init to:main::@15 main::@15: scope:[main] from main asm { sei } - [15] call render_init + [16] call render_init to:main::@16 main::@16: scope:[main] from main::@15 - [16] phi() - [17] call sprites_init + [17] phi() + [18] call sprites_init to:main::@17 main::@17: scope:[main] from main::@16 - [18] phi() - [19] call sprites_irq_init + [19] phi() + [20] call sprites_irq_init to:main::@18 main::@18: scope:[main] from main::@17 - [20] phi() - [21] call play_init + [21] phi() + [22] call play_init to:main::@19 main::@19: scope:[main] from main::@18 - [22] phi() - [23] call play_spawn_current + [23] phi() + [24] call play_spawn_current to:main::@20 main::@20: scope:[main] from main::@19 - [24] phi() - [25] call render_playfield + [25] phi() + [26] call render_playfield to:main::@21 main::@21: scope:[main] from main::@20 - [26] (byte~) current_ypos#83 ← (byte) current_ypos#18 - [27] (byte~) current_xpos#109 ← (byte) current_xpos#23 - [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 - [29] (byte~) current_piece_char#87 ← (byte) current_piece_char#12 - [30] call render_current - [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [27] (byte~) current_ypos#84 ← (byte) current_ypos#18 + [28] (byte~) current_xpos#110 ← (byte) current_xpos#23 + [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 + [30] (byte~) current_piece_char#88 ← (byte) current_piece_char#12 + [31] call render_current + [32] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@21 main::@7 - [32] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) current_movedown_counter#10 ) - [32] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) keyboard_events_size#16 ) - [32] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@7/(byte) current_piece_char#1 ) - [32] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@7/(byte) current_ypos#13 ) - [32] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@7/(byte) current_xpos#19 ) - [32] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@7/(byte*) current_piece_gfx#14 ) - [32] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) current_orientation#19 ) - [32] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#71 main::@7/(byte*) current_piece#10 ) - [32] (byte) render_screen_render#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@7/(byte) render_screen_render#31 ) - [32] (byte) render_screen_show#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) render_screen_show#24 ) +main::@1: scope:[main] from main::@21 main::@28 main::@30 + [33] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) current_movedown_counter#10 main::@28/(byte) current_movedown_counter#10 ) + [33] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) keyboard_events_size#16 main::@28/(byte) keyboard_events_size#16 ) + [33] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@30/(byte) current_piece_char#1 main::@28/(byte) current_piece_char#1 ) + [33] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@30/(byte) current_ypos#13 main::@28/(byte) current_ypos#13 ) + [33] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@30/(byte) current_xpos#19 main::@28/(byte) current_xpos#19 ) + [33] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@30/(byte*) current_piece_gfx#14 main::@28/(byte*) current_piece_gfx#14 ) + [33] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) current_orientation#19 main::@28/(byte) current_orientation#19 ) + [33] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#71 main::@30/(byte*) current_piece#10 main::@28/(byte*) current_piece#10 ) + [33] (byte) render_screen_render#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@30/(byte) render_screen_render#11 ) + [33] (byte) render_screen_show#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) render_screen_show#13 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [34] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 - [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 + [35] phi() [36] call render_show to:main::@23 main::@23: scope:[main] from main::@6 @@ -111,688 +111,685 @@ main::@25: scope:[main] from main::@24 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@26 main::@26: scope:[main] from main::@25 - [46] (byte~) main::$13 ← (byte) play_move_down::return#3 - [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 + [46] (byte~) main::$12 ← (byte) play_move_down::return#3 + [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 [49] call play_move_leftright [50] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@27 main::@27: scope:[main] from main::@26 - [51] (byte~) main::$14 ← (byte) play_move_leftright::return#4 - [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 + [51] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 [54] call play_move_rotate [55] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 to:main::@28 main::@28: scope:[main] from main::@27 - [56] (byte~) main::$15 ← (byte) play_move_rotate::return#4 - [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 - [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 + [56] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 + [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 to:main::@13 main::@13: scope:[main] from main::@28 - [59] (byte~) render_screen_render#69 ← (byte) render_screen_render#15 + [59] (byte~) render_screen_render#63 ← (byte) render_screen_render#16 [60] call render_playfield to:main::@29 main::@29: scope:[main] from main::@13 - [61] (byte~) current_ypos#84 ← (byte) current_ypos#13 - [62] (byte~) render_screen_render#68 ← (byte) render_screen_render#15 - [63] (byte~) current_xpos#110 ← (byte) current_xpos#19 - [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 - [65] (byte~) current_piece_char#88 ← (byte) current_piece_char#1 + [61] (byte~) current_ypos#85 ← (byte) current_ypos#13 + [62] (byte~) render_screen_render#62 ← (byte) render_screen_render#16 + [63] (byte~) current_xpos#111 ← (byte) current_xpos#19 + [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 + [65] (byte~) current_piece_char#89 ← (byte) current_piece_char#1 [66] call render_current to:main::@30 main::@30: scope:[main] from main::@29 [67] phi() [68] call render_screen_swap - to:main::@7 -main::@7: scope:[main] from main::@28 main::@30 - [69] (byte) render_screen_render#31 ← phi( main::@28/(byte) render_screen_render#15 main::@30/(byte) render_screen_render#10 ) - [69] (byte) render_screen_show#24 ← phi( main::@28/(byte) render_screen_show#15 main::@30/(byte) render_screen_show#11 ) - [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@30 - [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 - [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [73] return + [71] return to:@return render_current: scope:[render_current] from main::@21 main::@29 - [74] (byte) current_piece_char#62 ← phi( main::@21/(byte~) current_piece_char#87 main::@29/(byte~) current_piece_char#88 ) - [74] (byte*) current_piece_gfx#52 ← phi( main::@21/(byte*~) current_piece_gfx#99 main::@29/(byte*~) current_piece_gfx#100 ) - [74] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#109 main::@29/(byte~) current_xpos#110 ) - [74] (byte) render_screen_render#27 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#68 ) - [74] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#83 main::@29/(byte~) current_ypos#84 ) - [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [72] (byte) current_piece_char#63 ← phi( main::@21/(byte~) current_piece_char#88 main::@29/(byte~) current_piece_char#89 ) + [72] (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*~) current_piece_gfx#100 main::@29/(byte*~) current_piece_gfx#101 ) + [72] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#110 main::@29/(byte~) current_xpos#111 ) + [72] (byte) render_screen_render#28 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#62 ) + [72] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#84 main::@29/(byte~) current_ypos#85 ) + [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (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::@3 - [76] (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 ) - [76] (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 ) - [76] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) - [77] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 + [74] (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 ) + [74] (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 ) + [74] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) + [75] 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::@1 render_current::@13 - [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [76] (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 - [79] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) - [80] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [81] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 - [82] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [77] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) + [78] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [79] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 + [80] 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::@3 - [83] return + [81] return to:@return render_current::@13: scope:[render_current] from render_current::@1 - [84] 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 + [82] 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 - [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 - [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) - [87] (byte) render_current::xpos#0 ← (byte) current_xpos#47 + [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 + [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) + [85] (byte) render_current::xpos#0 ← (byte) current_xpos#47 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 - [88] (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 ) - [88] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) - [88] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) - [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) - [90] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 - [91] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 + [86] (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 ) + [86] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) + [86] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) + [87] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) + [88] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 + [89] 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 - [92] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 + [90] 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 - [93] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 + [91] *((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 - [94] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [95] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [96] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 + [92] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [93] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [94] 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::@13 main::@20 - [97] (byte) render_screen_render#18 ← phi( main::@13/(byte~) render_screen_render#69 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) + [95] (byte) render_screen_render#19 ← phi( main::@13/(byte~) render_screen_render#63 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [98] (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 ) - [98] (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 ) - [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 - [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [96] (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 ) + [96] (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 ) + [97] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 + [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [102] (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 ) - [102] (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 ) - [102] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [103] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [104] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [105] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [106] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [107] 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 + [100] (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 ) + [100] (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 ) + [100] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [102] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [103] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [104] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [105] 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 - [108] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [109] 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 + [106] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [107] 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 - [110] return + [108] return to:@return play_move_rotate: scope:[play_move_rotate] from main::@27 - [111] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [109] 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 - [112] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [110] 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 - [113] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) - [113] (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 ) - [113] (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 ) - [114] return + [111] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) + [111] (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 ) + [111] (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 ) + [112] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [115] (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 - [116] (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 + [113] (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 + [114] (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 - [117] (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 ) - [118] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 - [119] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 - [120] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 - [122] call play_collision - [123] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [115] (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 ) + [116] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 + [117] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 + [118] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 + [120] call play_collision + [121] (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 - [124] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [125] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [122] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + [123] 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 - [126] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [124] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [125] (byte*) current_piece_gfx#3 ← (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 - [128] (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 - [129] (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 + [126] (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 + [127] (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 - [130] (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 ) - [130] (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 ) - [130] (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 ) - [130] (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 ) - [131] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [132] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [128] (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 ) + [128] (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 ) + [128] (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 ) + [128] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#74 play_move_leftright::@1/(byte*~) current_piece#75 play_move_leftright::@7/(byte*~) current_piece#76 play_move_rotate::@4/(byte*~) current_piece#77 ) + [129] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [130] (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 - [133] (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 ) - [133] (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 ) - [133] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [134] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [135] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [131] (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 ) + [131] (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 ) + [131] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [132] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [133] (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 - [136] (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 ) - [136] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [136] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [137] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [138] 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 + [134] (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 ) + [134] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [134] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [135] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [136] 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 - [139] 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 + [137] 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 - [140] (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 ) - [141] return + [138] (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 ) + [139] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [142] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [143] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [140] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [141] 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 - [144] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [142] 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 - [145] 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 + [143] 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 - [146] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [147] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [148] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [144] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [145] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [146] 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 - [149] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [150] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [151] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [147] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [148] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [149] 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 - [152] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [150] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [153] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [151] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from main::@26 - [154] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [152] 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 - [155] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [153] 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 - [156] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [157] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 - [158] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 - [160] call play_collision - [161] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [154] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 + [156] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 + [158] call play_collision + [159] (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 - [162] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [163] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [160] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + [161] 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 - [164] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 + [162] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 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 - [165] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) - [165] (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 ) - [166] return + [163] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) + [163] (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 ) + [164] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [167] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [168] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 - [169] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 - [171] call play_collision - [172] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [165] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [166] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 + [167] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [168] (byte*~) current_piece#75 ← (byte*) current_piece#10 + [169] call play_collision + [170] (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 - [173] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [174] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [171] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [172] 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 - [175] (byte) current_xpos#4 ← -- (byte) current_xpos#1 + [173] (byte) current_xpos#4 ← -- (byte) current_xpos#1 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from main::@25 - [176] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [177] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [174] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 + [175] 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 - [178] phi() + [176] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [179] (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 ) - [180] call keyboard_event_pressed - [181] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [177] (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 ) + [178] call keyboard_event_pressed + [179] (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 - [182] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [183] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [180] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [181] 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 - [184] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [182] 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 - [185] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [183] (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 - [186] (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 ) - [187] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [184] (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 ) + [185] 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 - [188] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [186] (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 - [189] (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 ) - [190] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [187] (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 ) + [188] 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 - [191] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [192] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 - [193] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 - [195] call play_collision - [196] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [189] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [190] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 + [191] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 + [193] call play_collision + [194] (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 - [197] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [198] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [195] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [196] 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 - [199] phi() - [200] call play_lock_current + [197] phi() + [198] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [201] phi() - [202] call play_remove_lines + [199] phi() + [200] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [203] phi() - [204] call play_spawn_current - [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [201] phi() + [202] call play_spawn_current + [203] (byte*~) current_piece#78 ← (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 - [206] (byte) current_piece_char#20 ← phi( play_move_down::@20/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) - [206] (byte) current_xpos#33 ← phi( play_move_down::@20/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) - [206] (byte*) current_piece_gfx#26 ← phi( play_move_down::@20/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) - [206] (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 ) - [206] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#77 play_move_down::@6/(byte*) current_piece#16 ) - [206] (byte) current_ypos#29 ← phi( play_move_down::@20/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) + [204] (byte) current_piece_char#20 ← phi( play_move_down::@20/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) + [204] (byte) current_xpos#33 ← phi( play_move_down::@20/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) + [204] (byte*) current_piece_gfx#26 ← phi( play_move_down::@20/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) + [204] (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 ) + [204] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#78 play_move_down::@6/(byte*) current_piece#16 ) + [204] (byte) current_ypos#29 ← phi( play_move_down::@20/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [207] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) - [207] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) - [207] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) - [207] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [207] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [207] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) - [207] (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 ) - [207] (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 ) - [208] return + [205] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) + [205] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) + [205] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) + [205] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [205] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [205] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) + [205] (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 ) + [205] (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 ) + [206] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [209] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 + [207] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 to:play_move_down::@7 play_spawn_current: scope:[play_spawn_current] from main::@19 play_move_down::@20 - [210] phi() + [208] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [211] (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 ) - [212] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + [209] (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 ) + [210] 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 - [213] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [214] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) - [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) - [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [211] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [212] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) + [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) + [215] (byte) current_piece_char#12 ← *((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 - [218] return + [216] return to:@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [219] phi() - [220] call sid_rnd - [221] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [217] phi() + [218] call sid_rnd + [219] (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 - [222] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [223] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [220] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [221] (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 - [224] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [222] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [225] return + [223] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [226] phi() + [224] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [227] (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 ) - [227] (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 ) - [227] (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 ) + [225] (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 ) + [225] (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 ) + [225] (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 - [228] (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 ) - [228] (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 ) - [228] (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 ) - [228] (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 ) - [229] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [230] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [231] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + [226] (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 ) + [226] (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 ) + [226] (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 ) + [226] (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 ) + [227] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [228] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [229] 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 - [232] (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 ) - [233] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [234] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [235] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [236] 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 + [230] (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 ) + [231] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [232] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [233] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [234] 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 - [237] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [235] 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 - [238] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [236] (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 - [239] (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 ) - [240] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [241] 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 + [237] (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 ) + [238] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [239] 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 - [242] (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 ) - [243] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [240] (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 ) + [241] 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 - [244] return + [242] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [245] *((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 - [246] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [243] *((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 + [244] (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 - [247] phi() + [245] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (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 - [249] (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 ) - [249] (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 ) - [249] (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 ) - [250] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [251] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 + [247] (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 ) + [247] (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 ) + [247] (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 ) + [248] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [249] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [252] (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 ) - [252] (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 ) - [252] (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 ) - [253] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [254] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [250] (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 ) + [250] (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 ) + [250] (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 ) + [251] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [252] if(*((byte*) current_piece_gfx#20 + (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 - [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 + [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [256] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [257] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [258] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [254] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [255] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [256] 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 - [259] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [260] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [261] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [257] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [258] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [259] 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 - [262] return + [260] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [263] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [261] (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 - [264] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [262] (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 - [265] (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 ) - [266] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [267] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [268] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [269] (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) + [263] (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 ) + [264] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [265] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [266] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [267] (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 - [270] return + [268] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@24 - [271] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [269] 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 - [272] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [273] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [270] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [271] (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 - [274] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [274] (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 ) - [275] return + [272] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [272] (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 ) + [273] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - [276] phi() + [274] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [277] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [277] (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 ) - [277] (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 ) - [278] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [279] call keyboard_matrix_read - [280] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [275] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [275] (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 ) + [275] (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 ) + [276] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [277] call keyboard_matrix_read + [278] (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 - [281] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [282] 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 + [279] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [280] 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 - [283] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [281] (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 - [284] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [284] (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 ) - [285] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [286] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [282] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [282] (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 ) + [283] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [284] 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 - [287] phi() - [288] call keyboard_event_pressed - [289] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [285] phi() + [286] call keyboard_event_pressed + [287] (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 - [290] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [291] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [288] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [289] 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 - [292] phi() + [290] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [293] (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 ) - [294] call keyboard_event_pressed - [295] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [291] (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 ) + [292] call keyboard_event_pressed + [293] (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 - [296] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [297] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [294] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [295] 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 - [298] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [296] (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 - [299] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [300] call keyboard_event_pressed - [301] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [297] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [298] call keyboard_event_pressed + [299] (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 - [302] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [303] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [300] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [301] 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 - [304] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [302] (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 - [305] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [306] call keyboard_event_pressed - [307] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [303] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [304] call keyboard_event_pressed + [305] (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 - [308] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [309] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [306] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [307] 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 - [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [308] (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 - [311] return + [309] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [312] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [312] (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 ) - [312] (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 ) - [313] (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) - [314] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [315] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [310] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [310] (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 ) + [310] (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 ) + [311] (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) + [312] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [313] 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 - [316] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [314] 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 - [317] (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) - [318] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [315] (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) + [316] 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 - [319] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [320] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [317] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [318] (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 - [321] (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 ) - [322] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [323] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [324] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [319] (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 ) + [320] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [321] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [322] 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 - [325] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [323] *((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 - [326] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [327] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [328] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [324] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [325] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [326] (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 - [329] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [327] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [328] (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 - [331] return + [329] return to:@return render_show: scope:[render_show] from main::@6 - [332] if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [330] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [333] phi() + [331] phi() to:render_show::@2 render_show::@2: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [334] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [335] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [332] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [333] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [334] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@2 - [336] return + [335] return to:@return render_show::toD0181: scope:[render_show] from render_show - [337] phi() + [336] phi() to:render_show::@2 play_init: scope:[play_init] from main::@18 - [338] phi() + [337] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [339] (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 ) - [339] (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 ) - [339] (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 ) - [340] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [341] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [342] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [343] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [344] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [345] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [346] 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 + [338] (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 ) + [338] (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 ) + [338] (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 ) + [339] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [340] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [341] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [342] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [343] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [344] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [345] 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 - [347] *((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 + [346] *((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 - [348] return + [347] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@17 asm { sei } - [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [355] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [354] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [357] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [360] return + [359] return to:@return sprites_init: scope:[sprites_init] from main::@16 - [361] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [362] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [363] *((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 - [365] (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 ) - [365] (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 ) - [366] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [367] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [368] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [369] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [370] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [371] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [364] (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 ) + [364] (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 ) + [365] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [366] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [368] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [369] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [370] 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 - [372] return + [371] return to:@return render_init: scope:[render_init] from main::@15 - [373] phi() + [372] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [374] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [373] *((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 - [375] phi() + [374] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [376] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@7 render_init::@7: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [377] *((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 + [376] *((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 + [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 @@ -910,63 +907,70 @@ sid_rnd_init: scope:[sid_rnd_init] from main sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init [440] return to:@return -irq: scope:[irq] from - [441] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 - [442] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [443] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 - [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 - [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 - [446] *((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 - [447] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 - to:irq::@5 -irq::@5: scope:[irq] from irq::@1 - [448] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 - [450] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 - [451] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [453] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [455] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [456] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [457] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [458] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [459] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [460] 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 - [461] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [462] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [463] (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 - [464] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [465] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [466] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [467] 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 - [468] (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 - [469] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [470] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - to:irq::@return -irq::@return: scope:[irq] from irq::@4 - [473] return +sprites_irq: scope:[sprites_irq] from + [441] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [442] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [443] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + [447] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [450] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [451] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [453] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + [455] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + [457] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [458] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [459] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + [460] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) + [461] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 + [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [463] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + [464] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + [465] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + [466] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 + [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + to:sprites_irq::@return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + [468] return to:@return -irq::@2: scope:[irq] from irq::@5 - [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [475] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [476] (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 - [477] phi() - to:irq::@9 -irq::@9: scope:[irq] from irq::toSpritePtr2 - [478] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 - to:irq::@3 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 + [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [470] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [471] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + [472] phi() + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@5 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + [474] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [475] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [476] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [477] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [478] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [479] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index b92ec9e11..8a793c304 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -1,4 +1,4 @@ -Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() +Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_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 @@ -8,7 +8,7 @@ Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_CHARSET Inlined call (byte~) render_show::$2 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 (byte*) PLAYFIELD_CHARSET Inlined call (byte~) render_show::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN_2 (byte*) PLAYFIELD_CHARSET Inlined call (byte~) $4 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES -Inlined call (byte~) irq::$2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) sprites_irq::$3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -16,8 +16,6 @@ CONTROL FLOW GRAPH SSA (byte) current_ypos#80 ← phi( ) (byte) current_xpos#106 ← phi( ) (byte*) current_piece_gfx#96 ← phi( ) - (byte) render_screen_render#64 ← phi( ) - (byte) render_screen_show#51 ← phi( ) (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -123,8 +121,6 @@ fill::@return: scope:[fill] from fill::@1 (byte) current_ypos#79 ← phi( @begin/(byte) current_ypos#80 ) (byte) current_xpos#105 ← phi( @begin/(byte) current_xpos#106 ) (byte*) current_piece_gfx#95 ← phi( @begin/(byte*) current_piece_gfx#96 ) - (byte) render_screen_render#63 ← phi( @begin/(byte) render_screen_render#64 ) - (byte) render_screen_show#50 ← phi( @begin/(byte) render_screen_show#51 ) (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -210,8 +206,6 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) current_ypos#78 ← phi( @5/(byte) current_ypos#79 ) (byte) current_xpos#104 ← phi( @5/(byte) current_xpos#105 ) (byte*) current_piece_gfx#94 ← phi( @5/(byte*) current_piece_gfx#95 ) - (byte) render_screen_render#60 ← phi( @5/(byte) render_screen_render#63 ) - (byte) render_screen_show#49 ← phi( @5/(byte) render_screen_show#50 ) (byte[8]) keyboard_events#0 ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -224,12 +218,12 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } to:@12 keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - (byte) keyboard_events_size#53 ← phi( main::@23/(byte) keyboard_events_size#26 ) + (byte) keyboard_events_size#54 ← phi( main::@23/(byte) keyboard_events_size#26 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - (byte) keyboard_events_size#44 ← phi( keyboard_event_scan/(byte) keyboard_events_size#53 keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) + (byte) keyboard_events_size#45 ← phi( keyboard_event_scan/(byte) keyboard_events_size#54 keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::keycode#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::row#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -237,7 +231,7 @@ keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan k (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#1 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - (byte) keyboard_events_size#36 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#44 ) + (byte) keyboard_events_size#37 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#45 ) (byte) keyboard_event_scan::keycode#7 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::keycode#11 ) (byte) keyboard_event_scan::row#3 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::row#2 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_event_scan::@1/(byte) keyboard_matrix_read::return#2 ) @@ -247,21 +241,21 @@ keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$1) goto keyboard_event_scan::@2 to:keyboard_event_scan::@13 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) + (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#37 ) (byte) keyboard_event_scan::keycode#12 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte) keyboard_event_scan::row#8 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::row_scan#4 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row_scan#0 ) (byte) keyboard_event_scan::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@4 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#60 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) + (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#37 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - (byte) keyboard_events_size#54 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#60 keyboard_event_scan::@19/(byte) keyboard_events_size#61 ) + (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#61 keyboard_event_scan::@19/(byte) keyboard_events_size#62 ) (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row#7 keyboard_event_scan::@19/(byte) keyboard_event_scan::row#6 ) (byte) keyboard_event_scan::row#1 ← (byte) keyboard_event_scan::row#4 + rangenext(0,7) @@ -281,7 +275,7 @@ keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan:: if((bool~) keyboard_event_scan::$6) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@6 keyboard_event_scan::@7 - (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#21 keyboard_event_scan::@6/(byte) keyboard_events_size#37 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#21 keyboard_event_scan::@6/(byte) keyboard_events_size#38 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) (byte) keyboard_event_scan::row#9 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::row#10 keyboard_event_scan::@4/(byte) keyboard_event_scan::row#5 keyboard_event_scan::@6/(byte) keyboard_event_scan::row#11 keyboard_event_scan::@7/(byte) keyboard_event_scan::row#12 ) (byte) keyboard_event_scan::row_scan#5 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::row_scan#7 keyboard_event_scan::@4/(byte) keyboard_event_scan::row_scan#1 keyboard_event_scan::@6/(byte) keyboard_event_scan::row_scan#8 keyboard_event_scan::@7/(byte) keyboard_event_scan::row_scan#9 ) (byte) keyboard_event_scan::col#3 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::col#5 keyboard_event_scan::@4/(byte) keyboard_event_scan::col#2 keyboard_event_scan::@6/(byte) keyboard_event_scan::col#6 keyboard_event_scan::@7/(byte) keyboard_event_scan::col#7 ) @@ -302,7 +296,7 @@ keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$8) goto keyboard_event_scan::@6 to:keyboard_event_scan::@16 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - (byte) keyboard_events_size#37 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#10 ) + (byte) keyboard_events_size#38 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#10 ) (byte) keyboard_event_scan::row#11 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row#13 ) (byte) keyboard_event_scan::row_scan#8 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row_scan#6 ) (byte) keyboard_event_scan::col#6 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::col#8 ) @@ -339,14 +333,14 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#12 to:keyboard_event_scan::@5 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) (byte) keyboard_event_scan::keycode#15 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#2 ) (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row_scan#5 ) *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@3 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - (byte) keyboard_events_size#74 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) + (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 @@ -369,7 +363,7 @@ keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan:: (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#67 ) + (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 @@ -384,14 +378,14 @@ keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 to:keyboard_event_scan::@9 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#62 keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) + (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#63 keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) (byte) keyboard_modifiers#27 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte) keyboard_event_pressed::keycode#2 ← (byte) KEY_CTRL#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - (byte) keyboard_events_size#46 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#47 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#56 ) (byte) keyboard_modifiers#20 ← phi( keyboard_event_scan::@10/(byte) keyboard_modifiers#27 ) (byte) keyboard_event_pressed::return#9 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::return#2 ) (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#9 @@ -400,20 +394,20 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$24) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) + (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte~) keyboard_event_scan::$21 ← (byte) keyboard_modifiers#11 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$21 to:keyboard_event_scan::@10 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - (byte) keyboard_events_size#38 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#45 keyboard_event_scan::@28/(byte) keyboard_events_size#46 ) + (byte) keyboard_events_size#39 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#46 keyboard_event_scan::@28/(byte) keyboard_events_size#47 ) (byte) keyboard_modifiers#28 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#20 ) (byte) keyboard_event_pressed::keycode#3 ← (byte) KEY_COMMODORE#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - (byte) keyboard_events_size#31 ← phi( keyboard_event_scan::@11/(byte) keyboard_events_size#38 ) + (byte) keyboard_events_size#31 ← phi( keyboard_event_scan::@11/(byte) keyboard_events_size#39 ) (byte) keyboard_modifiers#21 ← phi( keyboard_event_scan::@11/(byte) keyboard_modifiers#28 ) (byte) keyboard_event_pressed::return#10 ← phi( keyboard_event_scan::@11/(byte) keyboard_event_pressed::return#3 ) (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 @@ -422,7 +416,7 @@ keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$28) goto keyboard_event_scan::@12 to:keyboard_event_scan::@24 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - (byte) keyboard_events_size#45 ← phi( keyboard_event_scan::@28/(byte) keyboard_events_size#46 ) + (byte) keyboard_events_size#46 ← phi( keyboard_event_scan::@28/(byte) keyboard_events_size#47 ) (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@28/(byte) keyboard_modifiers#20 ) (byte~) keyboard_event_scan::$25 ← (byte) keyboard_modifiers#12 | (byte) KEY_MODIFIER_CTRL#0 (byte) keyboard_modifiers#4 ← (byte~) keyboard_event_scan::$25 @@ -485,8 +479,6 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (byte) current_ypos#77 ← phi( @9/(byte) current_ypos#78 ) (byte) current_xpos#103 ← phi( @9/(byte) current_xpos#104 ) (byte*) current_piece_gfx#93 ← phi( @9/(byte*) current_piece_gfx#94 ) - (byte) render_screen_render#58 ← phi( @9/(byte) render_screen_render#60 ) - (byte) render_screen_show#48 ← phi( @9/(byte) render_screen_show#49 ) (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 @@ -523,8 +515,6 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte) current_ypos#76 ← phi( @12/(byte) current_ypos#77 ) (byte) current_xpos#102 ← phi( @12/(byte) current_xpos#103 ) (byte*) current_piece_gfx#92 ← phi( @12/(byte*) current_piece_gfx#93 ) - (byte) render_screen_render#56 ← phi( @12/(byte) render_screen_render#58 ) - (byte) render_screen_show#47 ← phi( @12/(byte) render_screen_show#48 ) (byte*) PLAYFIELD_SCREEN_1#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) PLAYFIELD_SCREEN_2#0 ← ((byte*)) (word/signed word/dword/signed dword) 11264 (byte*~) $1 ← (byte*) PLAYFIELD_SCREEN_1#0 + (word) SPRITE_PTRS#0 @@ -538,6 +528,9 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte) PLAYFIELD_COLS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte~) $3 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 (byte[$3]) playfield#0 ← { fill( $3, 0) } + (byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "nes-screen.imap" }} @@ -577,6 +570,7 @@ render_init::@7: scope:[render_init] from render_init::vicSelectGfxBank1_@1 (byte~) render_init::$2 ← (byte~) render_init::$1 | (byte) VIC_RSEL#0 (byte/word/dword~) render_init::$3 ← (byte~) render_init::$2 | (byte/signed byte/word/signed word/dword/signed dword) 3 *((byte*) D011#0) ← (byte/word/dword~) render_init::$3 + *((byte*) BORDERCOL#0) ← (byte) BLACK#0 *((byte*) BGCOL1#0) ← (byte) BLACK#0 *((byte*) BGCOL2#0) ← (byte) BLUE#0 *((byte*) BGCOL3#0) ← (byte) CYAN#0 @@ -653,27 +647,29 @@ render_init::@3: scope:[render_init] from render_init::@3 render_init::@5 if((bool~) render_init::$24) goto render_init::@3 to:render_init::@6 render_init::@6: scope:[render_init] from render_init::@3 - (byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) render_screen_show#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) render_screen_render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@6 - (byte) render_screen_render#8 ← phi( render_init::@6/(byte) render_screen_render#0 ) - (byte) render_screen_show#8 ← phi( render_init::@6/(byte) render_screen_show#0 ) - (byte) render_screen_show#1 ← (byte) render_screen_show#8 - (byte) render_screen_render#1 ← (byte) render_screen_render#8 + (byte) render_screen_render#9 ← phi( render_init::@6/(byte) render_screen_render#1 ) + (byte) render_screen_show#9 ← phi( render_init::@6/(byte) render_screen_show#1 ) + (byte) render_screen_show#2 ← (byte) render_screen_show#9 + (byte) render_screen_render#2 ← (byte) render_screen_render#9 return to:@return render_show: scope:[render_show] from main::@6 - (byte) render_screen_show#9 ← phi( main::@6/(byte) render_screen_show#13 ) + (byte) render_screen_show#10 ← phi( main::@6/(byte) render_screen_show#18 ) (byte) render_show::d018val#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) render_show::$0 ← (byte) render_screen_show#9 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) render_show::$0 ← (byte) render_screen_show#10 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) render_show::$0) goto render_show::@1 to:render_show::@3 render_show::@1: scope:[render_show] from render_show + (byte) render_screen_show#41 ← phi( render_show/(byte) render_screen_show#10 ) (byte*) render_show::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN_1#0 (byte*) render_show::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 to:render_show::toD0181 render_show::toD0181: scope:[render_show] from render_show::@1 + (byte) render_screen_show#33 ← phi( render_show::@1/(byte) render_screen_show#41 ) (byte*) render_show::toD0181_gfx#1 ← phi( render_show::@1/(byte*) render_show::toD0181_gfx#0 ) (byte*) render_show::toD0181_screen#1 ← phi( render_show::@1/(byte*) render_show::toD0181_screen#0 ) (word) render_show::toD0181_$0#0 ← ((word)) (byte*) render_show::toD0181_screen#1 @@ -688,19 +684,23 @@ render_show::toD0181: scope:[render_show] from render_show::@1 (byte) render_show::toD0181_return#0 ← (byte) render_show::toD0181_$8#0 to:render_show::toD0181_@return render_show::toD0181_@return: scope:[render_show] from render_show::toD0181 + (byte) render_screen_show#25 ← phi( render_show::toD0181/(byte) render_screen_show#33 ) (byte) render_show::toD0181_return#2 ← phi( render_show::toD0181/(byte) render_show::toD0181_return#0 ) (byte) render_show::toD0181_return#1 ← (byte) render_show::toD0181_return#2 to:render_show::@5 render_show::@5: scope:[render_show] from render_show::toD0181_@return + (byte) render_screen_show#19 ← phi( render_show::toD0181_@return/(byte) render_screen_show#25 ) (byte) render_show::toD0181_return#3 ← phi( render_show::toD0181_@return/(byte) render_show::toD0181_return#1 ) (byte~) render_show::$2 ← (byte) render_show::toD0181_return#3 (byte) render_show::d018val#1 ← (byte~) render_show::$2 to:render_show::@2 render_show::@3: scope:[render_show] from render_show + (byte) render_screen_show#42 ← phi( render_show/(byte) render_screen_show#10 ) (byte*) render_show::toD0182_screen#0 ← (byte*) PLAYFIELD_SCREEN_2#0 (byte*) render_show::toD0182_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show::@3 + (byte) render_screen_show#34 ← phi( render_show::@3/(byte) render_screen_show#42 ) (byte*) render_show::toD0182_gfx#1 ← phi( render_show::@3/(byte*) render_show::toD0182_gfx#0 ) (byte*) render_show::toD0182_screen#1 ← phi( render_show::@3/(byte*) render_show::toD0182_screen#0 ) (word) render_show::toD0182_$0#0 ← ((word)) (byte*) render_show::toD0182_screen#1 @@ -715,32 +715,38 @@ render_show::toD0182: scope:[render_show] from render_show::@3 (byte) render_show::toD0182_return#0 ← (byte) render_show::toD0182_$8#0 to:render_show::toD0182_@return render_show::toD0182_@return: scope:[render_show] from render_show::toD0182 + (byte) render_screen_show#26 ← phi( render_show::toD0182/(byte) render_screen_show#34 ) (byte) render_show::toD0182_return#2 ← phi( render_show::toD0182/(byte) render_show::toD0182_return#0 ) (byte) render_show::toD0182_return#1 ← (byte) render_show::toD0182_return#2 to:render_show::@6 render_show::@6: scope:[render_show] from render_show::toD0182_@return + (byte) render_screen_show#20 ← phi( render_show::toD0182_@return/(byte) render_screen_show#26 ) (byte) render_show::toD0182_return#3 ← phi( render_show::toD0182_@return/(byte) render_show::toD0182_return#1 ) (byte~) render_show::$1 ← (byte) render_show::toD0182_return#3 (byte) render_show::d018val#2 ← (byte~) render_show::$1 to:render_show::@2 render_show::@2: scope:[render_show] from render_show::@5 render_show::@6 + (byte) render_screen_show#11 ← phi( render_show::@5/(byte) render_screen_show#19 render_show::@6/(byte) render_screen_show#20 ) (byte) render_show::d018val#3 ← phi( render_show::@5/(byte) render_show::d018val#1 render_show::@6/(byte) render_show::d018val#2 ) *((byte*) D018#0) ← (byte) render_show::d018val#3 + (byte) render_screen_showing#1 ← (byte) render_screen_show#11 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@2 + (byte) render_screen_showing#6 ← phi( render_show::@2/(byte) render_screen_showing#1 ) + (byte) render_screen_showing#2 ← (byte) render_screen_showing#6 return to:@return render_screen_swap: scope:[render_screen_swap] from main::@30 - (byte) render_screen_show#10 ← phi( main::@30/(byte) render_screen_show#17 ) - (byte) render_screen_render#9 ← phi( main::@30/(byte) render_screen_render#17 ) - (byte) render_screen_render#2 ← (byte) render_screen_render#9 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 - (byte) render_screen_show#2 ← (byte) render_screen_show#10 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) render_screen_show#12 ← phi( main::@30/(byte) render_screen_show#21 ) + (byte) render_screen_render#10 ← phi( main::@30/(byte) render_screen_render#18 ) + (byte) render_screen_render#3 ← (byte) render_screen_render#10 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) render_screen_show#3 ← (byte) render_screen_show#12 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - (byte) render_screen_show#11 ← phi( render_screen_swap/(byte) render_screen_show#2 ) - (byte) render_screen_render#10 ← phi( render_screen_swap/(byte) render_screen_render#2 ) - (byte) render_screen_render#3 ← (byte) render_screen_render#10 - (byte) render_screen_show#3 ← (byte) render_screen_show#11 + (byte) render_screen_show#13 ← phi( render_screen_swap/(byte) render_screen_show#3 ) + (byte) render_screen_render#11 ← phi( render_screen_swap/(byte) render_screen_render#3 ) + (byte) render_screen_render#4 ← (byte) render_screen_render#11 + (byte) render_screen_show#4 ← (byte) render_screen_show#13 return to:@return render_screen_original: scope:[render_screen_original] from render_init::@7 render_init::@8 @@ -832,7 +838,7 @@ render_screen_original::@return: scope:[render_screen_original] from render_scr return to:@return render_playfield: scope:[render_playfield] from main::@13 main::@20 - (byte) render_screen_render#18 ← phi( main::@13/(byte) render_screen_render#24 main::@20/(byte) render_screen_render#25 ) + (byte) render_screen_render#19 ← phi( main::@13/(byte) render_screen_render#25 main::@20/(byte) render_screen_render#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 @@ -840,16 +846,16 @@ render_playfield: scope:[render_playfield] from main::@13 main::@20 to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 (byte) render_playfield::i#3 ← phi( render_playfield/(byte) render_playfield::i#0 render_playfield::@3/(byte) render_playfield::i#4 ) - (byte) render_screen_render#11 ← phi( render_playfield/(byte) render_screen_render#18 render_playfield::@3/(byte) render_screen_render#19 ) + (byte) render_screen_render#12 ← phi( render_playfield/(byte) render_screen_render#19 render_playfield::@3/(byte) render_screen_render#20 ) (byte) render_playfield::l#2 ← phi( render_playfield/(byte) render_playfield::l#0 render_playfield::@3/(byte) render_playfield::l#1 ) (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) render_playfield::$3 ← (byte) render_screen_render#11 + (byte~) render_playfield::$2 + (byte~) render_playfield::$3 ← (byte) render_screen_render#12 + (byte~) render_playfield::$2 (byte*) render_playfield::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) (byte/signed word/word/dword/signed dword~) render_playfield::$4 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_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_screen_render#26 ← phi( render_playfield::@1/(byte) render_screen_render#11 render_playfield::@2/(byte) render_screen_render#26 ) + (byte) render_screen_render#27 ← phi( render_playfield::@1/(byte) render_screen_render#12 render_playfield::@2/(byte) render_screen_render#27 ) (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::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) @@ -863,7 +869,7 @@ render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 (byte) render_playfield::i#4 ← phi( render_playfield::@2/(byte) render_playfield::i#1 ) - (byte) render_screen_render#19 ← phi( render_playfield::@2/(byte) render_screen_render#26 ) + (byte) render_screen_render#20 ← phi( render_playfield::@2/(byte) render_screen_render#27 ) (byte) render_playfield::l#3 ← phi( render_playfield::@2/(byte) render_playfield::l#4 ) (byte) render_playfield::l#1 ← (byte) render_playfield::l#3 + rangenext(2,render_playfield::$1) (bool~) render_playfield::$6 ← (byte) render_playfield::l#1 != rangelast(2,render_playfield::$1) @@ -873,10 +879,10 @@ render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return to:@return render_current: scope:[render_current] from main::@21 main::@29 - (byte) current_piece_char#62 ← phi( main::@21/(byte) current_piece_char#47 main::@29/(byte) current_piece_char#69 ) - (byte*) current_piece_gfx#52 ← phi( main::@21/(byte*) current_piece_gfx#63 main::@29/(byte*) current_piece_gfx#66 ) - (byte) current_xpos#47 ← phi( main::@21/(byte) current_xpos#65 main::@29/(byte) current_xpos#66 ) - (byte) render_screen_render#27 ← phi( main::@21/(byte) render_screen_render#34 main::@29/(byte) render_screen_render#32 ) + (byte) current_piece_char#63 ← phi( main::@21/(byte) current_piece_char#48 main::@29/(byte) current_piece_char#62 ) + (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*) current_piece_gfx#64 main::@29/(byte*) current_piece_gfx#67 ) + (byte) current_xpos#47 ← phi( main::@21/(byte) current_xpos#66 main::@29/(byte) current_xpos#67 ) + (byte) render_screen_render#28 ← phi( main::@21/(byte) render_screen_render#35 main::@29/(byte) render_screen_render#33 ) (byte) current_ypos#9 ← phi( main::@21/(byte) current_ypos#23 main::@29/(byte) current_ypos#24 ) (byte) render_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte~) render_current::$0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -884,12 +890,12 @@ render_current: scope:[render_current] from main::@21 main::@29 (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::@3 - (byte) current_piece_char#51 ← phi( render_current/(byte) current_piece_char#62 render_current::@3/(byte) current_piece_char#63 ) + (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#36 ← phi( render_current/(byte*) current_piece_gfx#52 render_current::@3/(byte*) current_piece_gfx#53 ) + (byte*) current_piece_gfx#36 ← 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#29 ← phi( render_current/(byte) current_xpos#47 render_current::@3/(byte) current_xpos#48 ) - (byte) render_screen_render#20 ← phi( render_current/(byte) render_screen_render#27 render_current::@3/(byte) render_screen_render#28 ) + (byte) render_screen_render#21 ← phi( render_current/(byte) render_screen_render#28 render_current::@3/(byte) render_screen_render#29 ) (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 @@ -898,34 +904,34 @@ render_current::@1: scope:[render_current] from render_current render_current:: 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#37 ← phi( render_current::@1/(byte) current_piece_char#51 ) + (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#22 ← phi( render_current::@1/(byte*) current_piece_gfx#36 ) (byte) current_xpos#12 ← phi( render_current::@1/(byte) current_xpos#29 ) (byte) render_current::ypos2#3 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) - (byte) render_screen_render#12 ← phi( render_current::@1/(byte) render_screen_render#20 ) - (byte~) render_current::$5 ← (byte) render_screen_render#12 + (byte) render_current::ypos2#3 + (byte) render_screen_render#13 ← phi( render_current::@1/(byte) render_screen_render#21 ) + (byte~) render_current::$5 ← (byte) render_screen_render#13 + (byte) render_current::ypos2#3 (byte*) render_current::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) (byte) render_current::xpos#0 ← (byte) current_xpos#12 (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#70 ← phi( render_current::@1/(byte) current_piece_char#51 ) - (byte*) current_piece_gfx#67 ← phi( render_current::@1/(byte*) current_piece_gfx#36 ) - (byte) current_xpos#68 ← phi( render_current::@1/(byte) current_xpos#29 ) - (byte) render_screen_render#36 ← phi( render_current::@1/(byte) render_screen_render#20 ) + (byte) current_piece_char#71 ← phi( render_current::@1/(byte) current_piece_char#52 ) + (byte*) current_piece_gfx#68 ← phi( render_current::@1/(byte*) current_piece_gfx#36 ) + (byte) current_xpos#69 ← phi( render_current::@1/(byte) current_xpos#29 ) + (byte) render_screen_render#37 ← phi( render_current::@1/(byte) render_screen_render#21 ) (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::@5 render_current::@7 - (byte) current_piece_char#63 ← phi( render_current::@5/(byte) current_piece_char#38 render_current::@7/(byte) current_piece_char#70 ) - (byte*) current_piece_gfx#53 ← phi( render_current::@5/(byte*) current_piece_gfx#23 render_current::@7/(byte*) current_piece_gfx#67 ) + (byte) current_piece_char#64 ← phi( render_current::@5/(byte) current_piece_char#39 render_current::@7/(byte) current_piece_char#71 ) + (byte*) current_piece_gfx#54 ← phi( render_current::@5/(byte*) current_piece_gfx#23 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#48 ← phi( render_current::@5/(byte) current_xpos#67 render_current::@7/(byte) current_xpos#68 ) - (byte) render_screen_render#28 ← phi( render_current::@5/(byte) render_screen_render#35 render_current::@7/(byte) render_screen_render#36 ) + (byte) current_xpos#48 ← phi( render_current::@5/(byte) current_xpos#68 render_current::@7/(byte) current_xpos#69 ) + (byte) render_screen_render#29 ← phi( render_current::@5/(byte) render_screen_render#36 render_current::@7/(byte) render_screen_render#37 ) (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 @@ -934,10 +940,10 @@ render_current::@3: scope:[render_current] from render_current::@5 render_curre if((bool~) render_current::$11) goto render_current::@1 to:render_current::@return render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 - (byte) current_xpos#81 ← phi( render_current::@2/(byte) current_xpos#12 render_current::@5/(byte) current_xpos#67 ) - (byte) render_screen_render#41 ← phi( render_current::@2/(byte) render_screen_render#12 render_current::@5/(byte) render_screen_render#35 ) + (byte) current_xpos#82 ← phi( render_current::@2/(byte) current_xpos#12 render_current::@5/(byte) current_xpos#68 ) + (byte) render_screen_render#42 ← phi( render_current::@2/(byte) render_screen_render#13 render_current::@5/(byte) render_screen_render#36 ) (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#26 ← phi( render_current::@2/(byte) current_piece_char#37 render_current::@5/(byte) current_piece_char#38 ) + (byte) current_piece_char#26 ← 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 ) @@ -952,9 +958,9 @@ render_current::@4: scope:[render_current] from render_current::@2 render_curre 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#38 ← phi( render_current::@10/(byte) current_piece_char#8 render_current::@4/(byte) current_piece_char#26 render_current::@6/(byte) current_piece_char#52 ) - (byte) current_xpos#67 ← phi( render_current::@10/(byte) current_xpos#80 render_current::@4/(byte) current_xpos#81 render_current::@6/(byte) current_xpos#82 ) - (byte) render_screen_render#35 ← phi( render_current::@10/(byte) render_screen_render#40 render_current::@4/(byte) render_screen_render#41 render_current::@6/(byte) render_screen_render#42 ) + (byte) current_piece_char#39 ← phi( render_current::@10/(byte) current_piece_char#8 render_current::@4/(byte) current_piece_char#26 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_screen_render#36 ← phi( render_current::@10/(byte) render_screen_render#41 render_current::@4/(byte) render_screen_render#42 render_current::@6/(byte) render_screen_render#43 ) (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#23 ← phi( render_current::@10/(byte*) current_piece_gfx#37 render_current::@4/(byte*) current_piece_gfx#11 render_current::@6/(byte*) current_piece_gfx#38 ) (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 ) @@ -967,10 +973,10 @@ render_current::@5: scope:[render_current] from render_current::@10 render_curr if((bool~) render_current::$10) 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#81 ) - (byte) render_screen_render#46 ← phi( render_current::@4/(byte) render_screen_render#41 ) + (byte) current_xpos#90 ← phi( render_current::@4/(byte) current_xpos#82 ) + (byte) render_screen_render#47 ← phi( render_current::@4/(byte) render_screen_render#42 ) (byte) render_current::i#11 ← phi( render_current::@4/(byte) render_current::i#2 ) - (byte*) current_piece_gfx#54 ← phi( render_current::@4/(byte*) current_piece_gfx#11 ) + (byte*) current_piece_gfx#55 ← phi( render_current::@4/(byte*) current_piece_gfx#11 ) (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 ) @@ -983,21 +989,21 @@ render_current::@9: scope:[render_current] from render_current::@4 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#52 ← phi( render_current::@9/(byte) current_piece_char#17 ) - (byte) current_xpos#82 ← phi( render_current::@9/(byte) current_xpos#90 ) - (byte) render_screen_render#42 ← phi( render_current::@9/(byte) render_screen_render#46 ) + (byte) current_piece_char#53 ← phi( render_current::@9/(byte) current_piece_char#17 ) + (byte) current_xpos#83 ← phi( render_current::@9/(byte) current_xpos#90 ) + (byte) render_screen_render#43 ← phi( render_current::@9/(byte) render_screen_render#47 ) (byte) render_current::i#10 ← phi( render_current::@9/(byte) render_current::i#11 ) - (byte*) current_piece_gfx#38 ← phi( render_current::@9/(byte*) current_piece_gfx#54 ) + (byte*) current_piece_gfx#38 ← 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#80 ← phi( render_current::@9/(byte) current_xpos#90 ) - (byte) render_screen_render#40 ← phi( render_current::@9/(byte) render_screen_render#46 ) + (byte) current_xpos#81 ← phi( render_current::@9/(byte) current_xpos#90 ) + (byte) render_screen_render#41 ← phi( render_current::@9/(byte) render_screen_render#47 ) (byte) render_current::i#9 ← phi( render_current::@9/(byte) render_current::i#11 ) - (byte*) current_piece_gfx#37 ← phi( render_current::@9/(byte*) current_piece_gfx#54 ) + (byte*) current_piece_gfx#37 ← 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 ) @@ -1012,12 +1018,13 @@ render_current::@return: scope:[render_current] from render_current::@3 @20: scope:[] from @14 (byte) keyboard_modifiers#54 ← phi( @14/(byte) keyboard_modifiers#56 ) (byte) keyboard_events_size#72 ← phi( @14/(byte) keyboard_events_size#75 ) + (byte) render_screen_showing#41 ← phi( @14/(byte) render_screen_showing#0 ) (byte) current_piece_char#79 ← phi( @14/(byte) current_piece_char#80 ) (byte) current_ypos#75 ← phi( @14/(byte) current_ypos#76 ) (byte) current_xpos#101 ← phi( @14/(byte) current_xpos#102 ) (byte*) current_piece_gfx#91 ← phi( @14/(byte*) current_piece_gfx#92 ) - (byte) render_screen_render#54 ← phi( @14/(byte) render_screen_render#56 ) - (byte) render_screen_show#45 ← phi( @14/(byte) render_screen_show#47 ) + (byte) render_screen_render#55 ← phi( @14/(byte) render_screen_render#0 ) + (byte) render_screen_show#55 ← phi( @14/(byte) render_screen_show#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++) { @@ -1060,28 +1067,30 @@ sprites_init::@return: scope:[sprites_init] from sprites_init::@1 @21: scope:[] from @20 (byte) keyboard_modifiers#52 ← phi( @20/(byte) keyboard_modifiers#54 ) (byte) keyboard_events_size#68 ← phi( @20/(byte) keyboard_events_size#72 ) + (byte) render_screen_showing#38 ← phi( @20/(byte) render_screen_showing#41 ) (byte) current_piece_char#78 ← phi( @20/(byte) current_piece_char#79 ) (byte) current_ypos#74 ← phi( @20/(byte) current_ypos#75 ) (byte) current_xpos#100 ← phi( @20/(byte) current_xpos#101 ) (byte*) current_piece_gfx#90 ← phi( @20/(byte*) current_piece_gfx#91 ) - (byte) render_screen_render#52 ← phi( @20/(byte) render_screen_render#54 ) - (byte) render_screen_show#42 ← phi( @20/(byte) render_screen_show#45 ) + (byte) render_screen_render#53 ← phi( @20/(byte) render_screen_render#55 ) + (byte) render_screen_show#52 ← phi( @20/(byte) render_screen_show#55 ) (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 @21 - (byte) irq_raster_next#20 ← phi( @21/(byte) irq_raster_next#0 ) - (byte) keyboard_modifiers#48 ← phi( @21/(byte) keyboard_modifiers#52 ) - (byte) keyboard_events_size#64 ← phi( @21/(byte) keyboard_events_size#68 ) - (byte) current_piece_char#71 ← phi( @21/(byte) current_piece_char#78 ) + (byte) irq_raster_next#23 ← phi( @21/(byte) irq_raster_next#0 ) + (byte) keyboard_modifiers#49 ← phi( @21/(byte) keyboard_modifiers#52 ) + (byte) keyboard_events_size#65 ← phi( @21/(byte) keyboard_events_size#68 ) + (byte) render_screen_showing#35 ← phi( @21/(byte) render_screen_showing#38 ) + (byte) current_piece_char#72 ← phi( @21/(byte) current_piece_char#78 ) (byte) current_ypos#70 ← phi( @21/(byte) current_ypos#74 ) (byte) current_xpos#96 ← phi( @21/(byte) current_xpos#100 ) (byte*) current_piece_gfx#84 ← phi( @21/(byte*) current_piece_gfx#90 ) - (byte) render_screen_render#50 ← phi( @21/(byte) render_screen_render#52 ) - (byte) render_screen_show#39 ← phi( @21/(byte) render_screen_show#42 ) - (byte) irq_sprite_ypos#20 ← phi( @21/(byte) irq_sprite_ypos#0 ) + (byte) render_screen_render#51 ← phi( @21/(byte) render_screen_render#53 ) + (byte) render_screen_show#49 ← phi( @21/(byte) render_screen_show#52 ) + (byte) irq_sprite_ypos#23 ← phi( @21/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @21/(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 @@ -1089,30 +1098,32 @@ toSpritePtr1: scope:[] from @21 (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#44 ← phi( toSpritePtr1/(byte) keyboard_modifiers#48 ) - (byte) keyboard_events_size#56 ← phi( toSpritePtr1/(byte) keyboard_events_size#64 ) - (byte) current_piece_char#64 ← phi( toSpritePtr1/(byte) current_piece_char#71 ) + (byte) irq_raster_next#22 ← phi( toSpritePtr1/(byte) irq_raster_next#23 ) + (byte) keyboard_modifiers#45 ← phi( toSpritePtr1/(byte) keyboard_modifiers#49 ) + (byte) keyboard_events_size#57 ← phi( toSpritePtr1/(byte) keyboard_events_size#65 ) + (byte) render_screen_showing#31 ← phi( toSpritePtr1/(byte) render_screen_showing#35 ) + (byte) current_piece_char#65 ← phi( toSpritePtr1/(byte) current_piece_char#72 ) (byte) current_ypos#65 ← phi( toSpritePtr1/(byte) current_ypos#70 ) (byte) current_xpos#91 ← phi( toSpritePtr1/(byte) current_xpos#96 ) (byte*) current_piece_gfx#78 ← phi( toSpritePtr1/(byte*) current_piece_gfx#84 ) - (byte) render_screen_render#47 ← phi( toSpritePtr1/(byte) render_screen_render#50 ) - (byte) render_screen_show#36 ← phi( toSpritePtr1/(byte) render_screen_show#39 ) - (byte) irq_sprite_ypos#18 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#20 ) + (byte) render_screen_render#48 ← phi( toSpritePtr1/(byte) render_screen_render#51 ) + (byte) render_screen_show#46 ← phi( toSpritePtr1/(byte) render_screen_show#49 ) + (byte) irq_sprite_ypos#21 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#23 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 to:@33 @33: scope:[] from toSpritePtr1_@return - (byte) irq_raster_next#18 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#19 ) - (byte) keyboard_modifiers#38 ← phi( toSpritePtr1_@return/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#47 ← phi( toSpritePtr1_@return/(byte) keyboard_events_size#56 ) - (byte) current_piece_char#53 ← phi( toSpritePtr1_@return/(byte) current_piece_char#64 ) - (byte) current_ypos#59 ← phi( toSpritePtr1_@return/(byte) current_ypos#65 ) - (byte) current_xpos#83 ← phi( toSpritePtr1_@return/(byte) current_xpos#91 ) - (byte*) current_piece_gfx#68 ← phi( toSpritePtr1_@return/(byte*) current_piece_gfx#78 ) - (byte) render_screen_render#43 ← phi( toSpritePtr1_@return/(byte) render_screen_render#47 ) - (byte) render_screen_show#33 ← phi( toSpritePtr1_@return/(byte) render_screen_show#36 ) - (byte) irq_sprite_ypos#17 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#18 ) + (byte) irq_raster_next#21 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#22 ) + (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) render_screen_showing#27 ← phi( toSpritePtr1_@return/(byte) render_screen_showing#31 ) + (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) render_screen_render#44 ← phi( toSpritePtr1_@return/(byte) render_screen_render#48 ) + (byte) render_screen_show#43 ← phi( toSpritePtr1_@return/(byte) render_screen_show#46 ) + (byte) irq_sprite_ypos#20 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#21 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) (byte~) $4 ← (byte) toSpritePtr1_return#3 (byte) irq_sprite_ptr#0 ← (byte~) $4 @@ -1128,127 +1139,152 @@ sprites_irq_init: scope:[sprites_irq_init] from main::@17 *((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()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) sprites_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( @32/(byte) irq_raster_next#15 ) - (byte) irq_cnt#8 ← phi( @32/(byte) irq_cnt#11 ) - (byte) irq_sprite_ptr#9 ← phi( @32/(byte) irq_sprite_ptr#12 ) +sprites_irq: scope:[sprites_irq] from + (byte) irq_raster_next#17 ← phi( @32/(byte) irq_raster_next#18 ) + (byte) irq_cnt#15 ← phi( @32/(byte) irq_cnt#17 ) + (byte) render_screen_showing#15 ← phi( @32/(byte) render_screen_showing#14 ) + (byte) irq_sprite_ptr#10 ← phi( @32/(byte) irq_sprite_ptr#15 ) (byte) irq_sprite_ypos#4 ← phi( @32/(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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) irq::ptr#0 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#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_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 + (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + (byte) irq_raster_next#16 ← phi( sprites_irq/(byte) irq_raster_next#17 sprites_irq::@1/(byte) irq_raster_next#16 ) + (byte) irq_cnt#12 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) render_screen_showing#11 ← phi( sprites_irq/(byte) render_screen_showing#15 sprites_irq::@1/(byte) render_screen_showing#11 ) + (byte) irq_sprite_ptr#7 ← phi( sprites_irq/(byte) irq_sprite_ptr#10 sprites_irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) irq_sprite_ypos#5 ← phi( sprites_irq/(byte) irq_sprite_ypos#4 sprites_irq::@1/(byte) irq_sprite_ypos#5 ) + (bool~) sprites_irq::$0 ← *((byte*) RASTER#0) < (byte) irq_sprite_ypos#5 + if((bool~) sprites_irq::$0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + (byte) irq_sprite_ypos#16 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#5 ) + (byte) irq_raster_next#14 ← phi( sprites_irq::@1/(byte) irq_raster_next#16 ) + (byte) irq_cnt#9 ← phi( sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) render_screen_showing#7 ← phi( sprites_irq::@1/(byte) render_screen_showing#11 ) + (byte) irq_sprite_ptr#4 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#7 ) + (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#4 + (bool~) sprites_irq::$1 ← (byte) render_screen_showing#7 == (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) sprites_irq::$1) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) + (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#16 ) + (byte) irq_raster_next#10 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) + (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#5 + (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#5 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) + (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#16 ) + (byte) irq_raster_next#11 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) + (byte) irq_cnt#7 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#6 + (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#6 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#11 sprites_irq::@8/(byte) irq_sprite_ptr#12 ) + (byte) irq_sprite_ypos#9 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#11 sprites_irq::@8/(byte) irq_sprite_ypos#12 ) + (byte) irq_raster_next#7 ← phi( sprites_irq::@2/(byte) irq_raster_next#10 sprites_irq::@8/(byte) irq_raster_next#11 ) + (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#6 sprites_irq::@8/(byte) irq_cnt#7 ) (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 + (bool~) sprites_irq::$2 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) sprites_irq::$2) goto sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 (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*) sprites_irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 + to:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + (byte) irq_sprite_ypos#22 ← phi( sprites_irq::@4/(byte) irq_sprite_ypos#1 ) + (byte) irq_cnt#18 ← phi( sprites_irq::@4/(byte) irq_cnt#2 ) + (byte) irq_raster_next#15 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) + (byte*) sprites_irq::toSpritePtr2_sprite#1 ← phi( sprites_irq::@4/(byte*) sprites_irq::toSpritePtr2_sprite#0 ) + (word) sprites_irq::toSpritePtr2_$0#0 ← ((word)) (byte*) sprites_irq::toSpritePtr2_sprite#1 + (word) sprites_irq::toSpritePtr2_$1#0 ← (word) sprites_irq::toSpritePtr2_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) sprites_irq::toSpritePtr2_$2#0 ← ((byte)) (word) sprites_irq::toSpritePtr2_$1#0 + (byte) sprites_irq::toSpritePtr2_return#0 ← (byte) sprites_irq::toSpritePtr2_$2#0 + to:sprites_irq::toSpritePtr2_@return +sprites_irq::toSpritePtr2_@return: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + (byte) irq_sprite_ypos#19 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#22 ) + (byte) irq_cnt#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#18 ) + (byte) irq_raster_next#12 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#15 ) + (byte) sprites_irq::toSpritePtr2_return#2 ← phi( sprites_irq::toSpritePtr2/(byte) sprites_irq::toSpritePtr2_return#0 ) + (byte) sprites_irq::toSpritePtr2_return#1 ← (byte) sprites_irq::toSpritePtr2_return#2 + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return + (byte) irq_sprite_ypos#17 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#19 ) + (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#16 ) + (byte) irq_raster_next#8 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#12 ) + (byte) sprites_irq::toSpritePtr2_return#3 ← phi( sprites_irq::toSpritePtr2_@return/(byte) sprites_irq::toSpritePtr2_return#1 ) + (byte~) sprites_irq::$3 ← (byte) sprites_irq::toSpritePtr2_return#3 + (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$3 + to:sprites_irq::@5 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + (byte) irq_cnt#13 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#8 ) + (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#9 ) + (byte) irq_raster_next#4 ← phi( sprites_irq::@3/(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 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + (byte) irq_sprite_ptr#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ptr#2 sprites_irq::@13/(byte) irq_sprite_ptr#1 ) + (byte) irq_sprite_ypos#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ypos#2 sprites_irq::@13/(byte) irq_sprite_ypos#17 ) + (byte) irq_cnt#11 ← phi( sprites_irq::@10/(byte) irq_cnt#13 sprites_irq::@13/(byte) irq_cnt#14 ) + (byte) irq_raster_next#5 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#8 ) + (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#5 + (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 + (bool~) sprites_irq::$6 ← ! (bool~) sprites_irq::$5 + if((bool~) sprites_irq::$6) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + (byte) irq_sprite_ptr#9 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#13 sprites_irq::@5/(byte) irq_sprite_ptr#14 ) + (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#14 ) + (byte) irq_raster_next#9 ← phi( sprites_irq::@12/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#5 ) + (byte) irq_cnt#8 ← phi( sprites_irq::@12/(byte) irq_cnt#10 sprites_irq::@5/(byte) irq_cnt#11 ) + (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + *((byte*) RASTER#0) ← (byte) sprites_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 ) + to:sprites_irq::@return +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ptr#14 ) + (byte) irq_sprite_ypos#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ypos#14 ) + (byte) irq_raster_next#13 ← phi( sprites_irq::@5/(byte) irq_raster_next#5 ) + (byte) irq_cnt#10 ← phi( sprites_irq::@5/(byte) irq_cnt#11 ) + (byte) sprites_irq::raster_next#3 ← phi( sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@6/(byte) irq_sprite_ptr#9 ) + (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@6/(byte) irq_sprite_ypos#10 ) + (byte) irq_raster_next#6 ← phi( sprites_irq::@6/(byte) irq_raster_next#9 ) + (byte) irq_cnt#5 ← phi( sprites_irq::@6/(byte) irq_cnt#8 ) (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 @@ -1256,18 +1292,19 @@ irq::@return: scope:[irq] from irq::@4 return to:@return @23: scope:[] from @33 - (byte) irq_raster_next#17 ← phi( @33/(byte) irq_raster_next#18 ) - (byte) irq_cnt#17 ← phi( @33/(byte) irq_cnt#0 ) - (byte) irq_sprite_ptr#14 ← phi( @33/(byte) irq_sprite_ptr#0 ) - (byte) keyboard_modifiers#33 ← phi( @33/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#39 ← phi( @33/(byte) keyboard_events_size#47 ) - (byte) current_piece_char#43 ← phi( @33/(byte) current_piece_char#53 ) - (byte) current_ypos#54 ← phi( @33/(byte) current_ypos#59 ) - (byte) current_xpos#73 ← phi( @33/(byte) current_xpos#83 ) - (byte*) current_piece_gfx#61 ← phi( @33/(byte*) current_piece_gfx#68 ) - (byte) render_screen_render#37 ← phi( @33/(byte) render_screen_render#43 ) - (byte) render_screen_show#29 ← phi( @33/(byte) render_screen_show#33 ) - (byte) irq_sprite_ypos#15 ← phi( @33/(byte) irq_sprite_ypos#17 ) + (byte) irq_raster_next#20 ← phi( @33/(byte) irq_raster_next#21 ) + (byte) irq_cnt#20 ← phi( @33/(byte) irq_cnt#0 ) + (byte) irq_sprite_ptr#17 ← phi( @33/(byte) irq_sprite_ptr#0 ) + (byte) keyboard_modifiers#34 ← phi( @33/(byte) keyboard_modifiers#39 ) + (byte) keyboard_events_size#40 ← phi( @33/(byte) keyboard_events_size#48 ) + (byte) render_screen_showing#21 ← phi( @33/(byte) render_screen_showing#27 ) + (byte) current_piece_char#44 ← phi( @33/(byte) current_piece_char#54 ) + (byte) current_ypos#55 ← phi( @33/(byte) current_ypos#60 ) + (byte) current_xpos#74 ← phi( @33/(byte) current_xpos#84 ) + (byte*) current_piece_gfx#62 ← phi( @33/(byte*) current_piece_gfx#69 ) + (byte) render_screen_render#38 ← phi( @33/(byte) render_screen_render#44 ) + (byte) render_screen_show#35 ← phi( @33/(byte) render_screen_show#43 ) + (byte) irq_sprite_ypos#18 ← phi( @33/(byte) irq_sprite_ypos#20 ) (byte/signed byte/word/signed word/dword/signed dword~) $5 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed word/word/dword/signed dword/signed byte~) $6 ← (byte/signed byte/word/signed word/dword/signed dword~) $5 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte[$6]) PIECE_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 } @@ -1310,10 +1347,10 @@ irq::@return: scope:[irq] from irq::@4 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@26 play_move_down: scope:[play_move_down] from main::@25 - (byte) current_piece_char#72 ← phi( main::@25/(byte) current_piece_char#23 ) + (byte) current_piece_char#73 ← phi( main::@25/(byte) current_piece_char#23 ) (byte*) current_piece_gfx#85 ← phi( main::@25/(byte*) current_piece_gfx#32 ) - (byte*) current_piece#65 ← phi( main::@25/(byte*) current_piece#27 ) - (byte) current_orientation#66 ← phi( main::@25/(byte) current_orientation#37 ) + (byte*) current_piece#66 ← phi( main::@25/(byte*) current_piece#27 ) + (byte) current_orientation#67 ← phi( main::@25/(byte) current_orientation#37 ) (byte) current_xpos#92 ← phi( main::@25/(byte) current_xpos#44 ) (byte) current_ypos#66 ← phi( main::@25/(byte) current_ypos#36 ) (byte) play_move_down::key_event#1 ← phi( main::@25/(byte) play_move_down::key_event#0 ) @@ -1325,25 +1362,25 @@ play_move_down: scope:[play_move_down] from main::@25 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#65 ← phi( play_move_down/(byte) current_piece_char#72 play_move_down::@8/(byte) current_piece_char#73 ) + (byte) current_piece_char#66 ← phi( play_move_down/(byte) current_piece_char#73 play_move_down::@8/(byte) current_piece_char#74 ) (byte*) current_piece_gfx#79 ← phi( play_move_down/(byte*) current_piece_gfx#85 play_move_down::@8/(byte*) current_piece_gfx#86 ) - (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#65 play_move_down::@8/(byte*) current_piece#66 ) - (byte) current_orientation#61 ← phi( play_move_down/(byte) current_orientation#66 play_move_down::@8/(byte) current_orientation#67 ) - (byte) current_xpos#84 ← phi( play_move_down/(byte) current_xpos#92 play_move_down::@8/(byte) current_xpos#93 ) - (byte) current_ypos#60 ← phi( play_move_down/(byte) current_ypos#66 play_move_down::@8/(byte) current_ypos#67 ) + (byte*) current_piece#61 ← phi( play_move_down/(byte*) current_piece#66 play_move_down::@8/(byte*) current_piece#67 ) + (byte) current_orientation#62 ← phi( play_move_down/(byte) current_orientation#67 play_move_down::@8/(byte) current_orientation#68 ) + (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) current_movedown_counter#21 ← phi( play_move_down/(byte) current_movedown_counter#1 play_move_down::@8/(byte) current_movedown_counter#28 ) (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - (byte) current_piece_char#55 ← phi( play_move_down::@1/(byte) current_piece_char#65 ) - (byte*) current_piece_gfx#70 ← 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#84 ) - (byte) current_ypos#51 ← phi( play_move_down::@1/(byte) current_ypos#60 ) + (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#55 ← phi( play_move_down::@1/(byte*) current_piece#61 ) + (byte) current_orientation#53 ← phi( play_move_down::@1/(byte) current_orientation#62 ) + (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 ) @@ -1353,23 +1390,23 @@ 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#73 ← phi( play_move_down/(byte) current_piece_char#72 ) + (byte) current_piece_char#74 ← phi( play_move_down/(byte) current_piece_char#73 ) (byte*) current_piece_gfx#86 ← phi( play_move_down/(byte*) current_piece_gfx#85 ) - (byte*) current_piece#66 ← phi( play_move_down/(byte*) current_piece#65 ) - (byte) current_orientation#67 ← phi( play_move_down/(byte) current_orientation#66 ) + (byte*) current_piece#67 ← phi( play_move_down/(byte*) current_piece#66 ) + (byte) current_orientation#68 ← phi( play_move_down/(byte) current_orientation#67 ) (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) current_movedown_counter#28 ← 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#40 ← 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#56 ← phi( play_move_down::@10/(byte*) current_piece_gfx#69 play_move_down::@17/(byte*) current_piece_gfx#70 play_move_down::@3/(byte*) current_piece_gfx#71 ) - (byte*) current_piece#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#50 ← phi( play_move_down::@10/(byte) current_xpos#69 play_move_down::@17/(byte) current_xpos#70 play_move_down::@3/(byte) current_xpos#71 ) - (byte) current_ypos#40 ← phi( play_move_down::@10/(byte) current_ypos#50 play_move_down::@17/(byte) current_ypos#51 play_move_down::@3/(byte) current_ypos#52 ) + (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#44 ← phi( play_move_down::@10/(byte*) current_piece#54 play_move_down::@17/(byte*) current_piece#55 play_move_down::@3/(byte*) current_piece#56 ) + (byte) current_orientation#42 ← phi( play_move_down::@10/(byte) current_orientation#52 play_move_down::@17/(byte) current_orientation#53 play_move_down::@3/(byte) current_orientation#54 ) + (byte) current_xpos#50 ← 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#40 ← phi( play_move_down::@10/(byte) current_ypos#51 play_move_down::@17/(byte) current_ypos#52 play_move_down::@3/(byte) current_ypos#53 ) (byte) play_move_down::movedown#9 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@3/(byte) play_move_down::movedown#11 ) (byte) current_movedown_counter#8 ← phi( play_move_down::@10/(byte) current_movedown_counter#15 play_move_down::@17/(byte) current_movedown_counter#16 play_move_down::@3/(byte) current_movedown_counter#17 ) (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (byte) current_movedown_slow#0 @@ -1377,12 +1414,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#66 ← phi( play_move_down::@17/(byte) current_piece_char#55 ) - (byte*) current_piece_gfx#80 ← phi( play_move_down::@17/(byte*) current_piece_gfx#70 ) - (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#85 ← phi( play_move_down::@17/(byte) current_xpos#70 ) - (byte) current_ypos#61 ← phi( play_move_down::@17/(byte) current_ypos#51 ) + (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#62 ← phi( play_move_down::@17/(byte*) current_piece#55 ) + (byte) current_orientation#63 ← phi( play_move_down::@17/(byte) current_orientation#53 ) + (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 @@ -1390,31 +1427,31 @@ 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#66 ) - (byte*) current_piece_gfx#71 ← 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#85 ) - (byte) current_ypos#52 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (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#56 ← phi( play_move_down::@9/(byte*) current_piece#62 ) + (byte) current_orientation#54 ← phi( play_move_down::@9/(byte) current_orientation#63 ) + (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#66 ) - (byte*) current_piece_gfx#69 ← 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#85 ) - (byte) current_ypos#50 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (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#54 ← phi( play_move_down::@9/(byte*) current_piece#62 ) + (byte) current_orientation#52 ← phi( play_move_down::@9/(byte) current_orientation#63 ) + (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 to:play_move_down::@2 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - (byte) current_piece_char#27 ← phi( play_move_down::@11/(byte) current_piece_char#39 play_move_down::@2/(byte) current_piece_char#40 ) - (byte*) current_piece_gfx#39 ← phi( play_move_down::@11/(byte*) current_piece_gfx#55 play_move_down::@2/(byte*) current_piece_gfx#56 ) - (byte*) current_piece#30 ← phi( play_move_down::@11/(byte*) current_piece#42 play_move_down::@2/(byte*) current_piece#43 ) - (byte) current_movedown_counter#22 ← phi( play_move_down::@11/(byte) current_movedown_counter#28 play_move_down::@2/(byte) current_movedown_counter#8 ) + (byte) current_piece_char#27 ← phi( play_move_down::@11/(byte) current_piece_char#40 play_move_down::@2/(byte) current_piece_char#41 ) + (byte*) current_piece_gfx#39 ← phi( play_move_down::@11/(byte*) current_piece_gfx#56 play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#30 ← phi( play_move_down::@11/(byte*) current_piece#43 play_move_down::@2/(byte*) current_piece#44 ) + (byte) current_movedown_counter#22 ← phi( play_move_down::@11/(byte) current_movedown_counter#29 play_move_down::@2/(byte) current_movedown_counter#8 ) (byte) current_orientation#26 ← phi( play_move_down::@11/(byte) current_orientation#41 play_move_down::@2/(byte) current_orientation#42 ) (byte) current_xpos#30 ← phi( play_move_down::@11/(byte) current_xpos#49 play_move_down::@2/(byte) current_xpos#50 ) (byte) current_ypos#25 ← phi( play_move_down::@11/(byte) current_ypos#39 play_move_down::@2/(byte) current_ypos#40 ) @@ -1424,10 +1461,10 @@ play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_d if((bool~) play_move_down::$10) goto play_move_down::@5 to:play_move_down::@12 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - (byte) current_piece_char#39 ← phi( play_move_down::@2/(byte) current_piece_char#40 ) - (byte*) current_piece_gfx#55 ← phi( play_move_down::@2/(byte*) current_piece_gfx#56 ) - (byte*) current_piece#42 ← phi( play_move_down::@2/(byte*) current_piece#43 ) - (byte) current_movedown_counter#28 ← phi( play_move_down::@2/(byte) current_movedown_counter#8 ) + (byte) current_piece_char#40 ← phi( play_move_down::@2/(byte) current_piece_char#41 ) + (byte*) current_piece_gfx#56 ← phi( play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#43 ← phi( play_move_down::@2/(byte*) current_piece#44 ) + (byte) current_movedown_counter#29 ← phi( play_move_down::@2/(byte) current_movedown_counter#8 ) (byte) current_orientation#41 ← phi( play_move_down::@2/(byte) current_orientation#42 ) (byte) current_xpos#49 ← phi( play_move_down::@2/(byte) current_xpos#50 ) (byte) current_ypos#39 ← phi( play_move_down::@2/(byte) current_ypos#40 ) @@ -1445,8 +1482,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#27 ) - (byte*) current_piece_gfx#72 ← phi( play_move_down::@4/(byte*) current_piece_gfx#39 ) + (byte) current_piece_char#58 ← phi( play_move_down::@4/(byte) current_piece_char#27 ) + (byte*) current_piece_gfx#73 ← phi( play_move_down::@4/(byte*) current_piece_gfx#39 ) (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#13 ← phi( play_move_down::@4/(byte) current_xpos#30 ) @@ -1459,11 +1496,11 @@ 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#41 ← phi( play_move_down::@12/(byte) current_piece_char#57 ) - (byte) current_xpos#72 ← phi( play_move_down::@12/(byte) current_xpos#13 ) - (byte*) current_piece_gfx#57 ← phi( play_move_down::@12/(byte*) current_piece_gfx#72 ) - (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_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#13 ) + (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#73 ) + (byte) current_orientation#55 ← phi( play_move_down::@12/(byte) current_orientation#12 ) + (byte*) current_piece#45 ← phi( play_move_down::@12/(byte*) current_piece#22 ) (byte) current_ypos#26 ← phi( play_move_down::@12/(byte) current_ypos#10 ) (byte) play_collision::return#10 ← phi( play_move_down::@12/(byte) play_collision::return#0 ) (byte~) play_move_down::$12 ← (byte) play_collision::return#10 @@ -1471,30 +1508,30 @@ play_move_down::@18: scope:[play_move_down] from play_move_down::@12 if((bool~) play_move_down::$13) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - (byte) current_piece_char#29 ← phi( play_move_down::@18/(byte) current_piece_char#41 ) - (byte) current_xpos#52 ← phi( play_move_down::@18/(byte) current_xpos#72 ) - (byte*) current_piece_gfx#41 ← phi( play_move_down::@18/(byte*) current_piece_gfx#57 ) - (byte) current_orientation#44 ← phi( play_move_down::@18/(byte) current_orientation#54 ) - (byte*) current_piece#32 ← phi( play_move_down::@18/(byte*) current_piece#44 ) + (byte) current_piece_char#29 ← phi( play_move_down::@18/(byte) current_piece_char#42 ) + (byte) current_xpos#52 ← phi( play_move_down::@18/(byte) current_xpos#73 ) + (byte*) current_piece_gfx#41 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_orientation#44 ← phi( play_move_down::@18/(byte) current_orientation#55 ) + (byte*) current_piece#32 ← phi( play_move_down::@18/(byte*) current_piece#45 ) (byte) current_ypos#11 ← phi( play_move_down::@18/(byte) current_ypos#26 ) (byte) current_ypos#0 ← ++ (byte) current_ypos#11 to:play_move_down::@7 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - (byte) current_piece_char#42 ← phi( play_move_down::@18/(byte) current_piece_char#41 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@18/(byte*) current_piece_gfx#57 ) - (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#58 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_piece_char#43 ← phi( play_move_down::@18/(byte) current_piece_char#42 ) + (byte*) current_piece_gfx#59 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_orientation#56 ← phi( play_move_down::@18/(byte) current_orientation#55 ) + (byte*) current_piece#46 ← phi( play_move_down::@18/(byte*) current_piece#45 ) + (byte) current_xpos#58 ← phi( play_move_down::@18/(byte) current_xpos#73 ) (byte) current_ypos#34 ← phi( play_move_down::@18/(byte) current_ypos#26 ) call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - (byte) current_piece_char#28 ← phi( play_move_down::@13/(byte) current_piece_char#42 ) + (byte) current_piece_char#28 ← phi( play_move_down::@13/(byte) current_piece_char#43 ) (byte) current_ypos#41 ← phi( play_move_down::@13/(byte) current_ypos#34 ) (byte) current_xpos#51 ← phi( play_move_down::@13/(byte) current_xpos#58 ) - (byte*) current_piece_gfx#40 ← phi( play_move_down::@13/(byte*) current_piece_gfx#58 ) - (byte) current_orientation#43 ← phi( play_move_down::@13/(byte) current_orientation#55 ) - (byte*) current_piece#31 ← phi( play_move_down::@13/(byte*) current_piece#45 ) + (byte*) current_piece_gfx#40 ← phi( play_move_down::@13/(byte*) current_piece_gfx#59 ) + (byte) current_orientation#43 ← phi( play_move_down::@13/(byte) current_orientation#56 ) + (byte*) current_piece#31 ← phi( play_move_down::@13/(byte*) current_piece#46 ) call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 @@ -1639,9 +1676,9 @@ play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright: (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::@27 - (byte*) current_piece_gfx#59 ← phi( main::@27/(byte*) current_piece_gfx#33 ) - (byte*) current_piece#46 ← phi( main::@27/(byte*) current_piece#56 ) - (byte) current_ypos#42 ← phi( main::@27/(byte) current_ypos#53 ) + (byte*) current_piece_gfx#60 ← phi( main::@27/(byte*) current_piece_gfx#33 ) + (byte*) current_piece#47 ← phi( main::@27/(byte*) current_piece#57 ) + (byte) current_ypos#42 ← phi( main::@27/(byte) current_ypos#54 ) (byte) current_xpos#56 ← phi( main::@27/(byte) current_xpos#9 ) (byte) current_orientation#32 ← phi( main::@27/(byte) current_orientation#38 ) (byte) play_move_rotate::key_event#1 ← phi( main::@27/(byte) play_move_rotate::key_event#0 ) @@ -1650,8 +1687,8 @@ play_move_rotate: scope:[play_move_rotate] from main::@27 if((bool~) play_move_rotate::$0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece_gfx#73 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) - (byte*) current_piece#35 ← phi( play_move_rotate/(byte*) current_piece#46 ) + (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#47 ) (byte) current_ypos#32 ← phi( play_move_rotate/(byte) current_ypos#42 ) (byte) current_xpos#39 ← phi( play_move_rotate/(byte) current_xpos#56 ) (byte) current_orientation#17 ← phi( play_move_rotate/(byte) current_orientation#32 ) @@ -1660,8 +1697,8 @@ play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate (byte) play_move_rotate::orientation#1 ← (byte/word/dword~) play_move_rotate::$5 to:play_move_rotate::@4 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece#47 ← phi( play_move_rotate/(byte*) current_piece#46 ) - (byte*) current_piece_gfx#42 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) + (byte*) current_piece#48 ← phi( play_move_rotate/(byte*) current_piece#47 ) + (byte*) current_piece_gfx#42 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) (byte) current_ypos#43 ← phi( play_move_rotate/(byte) current_ypos#42 ) (byte) current_xpos#57 ← phi( play_move_rotate/(byte) current_xpos#56 ) (byte) current_orientation#33 ← phi( play_move_rotate/(byte) current_orientation#32 ) @@ -1670,8 +1707,8 @@ play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate if((bool~) play_move_rotate::$1) goto play_move_rotate::@2 to:play_move_rotate::@7 play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - (byte*) current_piece_gfx#74 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#42 ) - (byte*) current_piece#36 ← phi( play_move_rotate::@6/(byte*) current_piece#47 ) + (byte*) current_piece_gfx#75 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#42 ) + (byte*) current_piece#36 ← phi( play_move_rotate::@6/(byte*) current_piece#48 ) (byte) current_ypos#33 ← phi( play_move_rotate::@6/(byte) current_ypos#43 ) (byte) current_xpos#40 ← phi( play_move_rotate::@6/(byte) current_xpos#57 ) (byte) current_orientation#18 ← phi( play_move_rotate::@6/(byte) current_orientation#33 ) @@ -1694,8 +1731,8 @@ 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#60 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#73 play_move_rotate::@2/(byte*) current_piece_gfx#74 ) - (byte) current_orientation#56 ← phi( play_move_rotate::@1/(byte) current_orientation#17 play_move_rotate::@2/(byte) current_orientation#18 ) + (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#57 ← phi( play_move_rotate::@1/(byte) current_orientation#17 play_move_rotate::@2/(byte) current_orientation#18 ) (byte*) current_piece#25 ← phi( play_move_rotate::@1/(byte*) current_piece#35 play_move_rotate::@2/(byte*) current_piece#36 ) (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) (byte) current_ypos#16 ← phi( play_move_rotate::@1/(byte) current_ypos#32 play_move_rotate::@2/(byte) current_ypos#33 ) @@ -1707,8 +1744,8 @@ play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_m (byte) play_collision::return#3 ← (byte) play_collision::return#5 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - (byte*) current_piece_gfx#43 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#60 ) - (byte) current_orientation#45 ← phi( play_move_rotate::@4/(byte) current_orientation#56 ) + (byte*) current_piece_gfx#43 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#61 ) + (byte) current_orientation#45 ← phi( play_move_rotate::@4/(byte) current_orientation#57 ) (byte*) current_piece#21 ← phi( play_move_rotate::@4/(byte*) current_piece#25 ) (byte) play_move_rotate::orientation#5 ← phi( play_move_rotate::@4/(byte) play_move_rotate::orientation#3 ) (byte) play_collision::return#13 ← phi( play_move_rotate::@4/(byte) play_collision::return#3 ) @@ -1731,21 +1768,22 @@ play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return @26: scope:[] from @23 - (byte) irq_raster_next#16 ← phi( @23/(byte) irq_raster_next#17 ) - (byte) irq_cnt#15 ← phi( @23/(byte) irq_cnt#17 ) - (byte) irq_sprite_ptr#13 ← phi( @23/(byte) irq_sprite_ptr#14 ) - (byte) current_movedown_counter#26 ← phi( @23/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#32 ← phi( @23/(byte) keyboard_modifiers#33 ) - (byte) keyboard_events_size#35 ← phi( @23/(byte) keyboard_events_size#39 ) - (byte) current_piece_char#36 ← phi( @23/(byte) current_piece_char#43 ) - (byte) current_ypos#49 ← phi( @23/(byte) current_ypos#54 ) - (byte) current_xpos#64 ← phi( @23/(byte) current_xpos#73 ) - (byte*) current_piece_gfx#51 ← phi( @23/(byte*) current_piece_gfx#61 ) - (byte) current_orientation#50 ← phi( @23/(byte) current_orientation#0 ) - (byte*) current_piece#41 ← phi( @23/(byte*) current_piece#0 ) - (byte) render_screen_render#33 ← phi( @23/(byte) render_screen_render#37 ) - (byte) render_screen_show#28 ← phi( @23/(byte) render_screen_show#29 ) - (byte) irq_sprite_ypos#13 ← phi( @23/(byte) irq_sprite_ypos#15 ) + (byte) irq_raster_next#19 ← phi( @23/(byte) irq_raster_next#20 ) + (byte) irq_cnt#19 ← phi( @23/(byte) irq_cnt#20 ) + (byte) irq_sprite_ptr#16 ← phi( @23/(byte) irq_sprite_ptr#17 ) + (byte) current_movedown_counter#27 ← phi( @23/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#33 ← phi( @23/(byte) keyboard_modifiers#34 ) + (byte) keyboard_events_size#36 ← phi( @23/(byte) keyboard_events_size#40 ) + (byte) render_screen_showing#20 ← phi( @23/(byte) render_screen_showing#21 ) + (byte) current_piece_char#37 ← phi( @23/(byte) current_piece_char#44 ) + (byte) current_ypos#50 ← phi( @23/(byte) current_ypos#55 ) + (byte) current_xpos#65 ← phi( @23/(byte) current_xpos#74 ) + (byte*) current_piece_gfx#52 ← phi( @23/(byte*) current_piece_gfx#62 ) + (byte) current_orientation#51 ← phi( @23/(byte) current_orientation#0 ) + (byte*) current_piece#42 ← phi( @23/(byte*) current_piece#0 ) + (byte) render_screen_render#34 ← phi( @23/(byte) render_screen_render#38 ) + (byte) render_screen_show#32 ← phi( @23/(byte) render_screen_show#35 ) + (byte) irq_sprite_ypos#15 ← phi( @23/(byte) irq_sprite_ypos#18 ) (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 @@ -1898,8 +1936,8 @@ play_collision::@18: scope:[play_collision] from play_collision::@17 (byte) play_collision::return#9 ← (byte) COLLISION_NONE#0 to:play_collision::@return play_lock_current: scope:[play_lock_current] from play_move_down::@13 - (byte) current_piece_char#44 ← phi( play_move_down::@13/(byte) current_piece_char#42 ) - (byte*) current_piece_gfx#44 ← phi( play_move_down::@13/(byte*) current_piece_gfx#58 ) + (byte) current_piece_char#45 ← phi( play_move_down::@13/(byte) current_piece_char#43 ) + (byte*) current_piece_gfx#44 ← phi( play_move_down::@13/(byte*) current_piece_gfx#59 ) (byte) current_xpos#41 ← phi( play_move_down::@13/(byte) current_xpos#58 ) (byte) current_ypos#17 ← phi( play_move_down::@13/(byte) current_ypos#34 ) (byte) play_lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1909,7 +1947,7 @@ play_lock_current: scope:[play_lock_current] from play_move_down::@13 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@5 (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) play_lock_current::l#0 play_lock_current::@5/(byte) play_lock_current::l#1 ) - (byte) current_piece_char#30 ← phi( play_lock_current/(byte) current_piece_char#44 play_lock_current::@5/(byte) current_piece_char#45 ) + (byte) current_piece_char#30 ← phi( play_lock_current/(byte) current_piece_char#45 play_lock_current::@5/(byte) current_piece_char#46 ) (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) play_lock_current::i#0 play_lock_current::@5/(byte) play_lock_current::i#5 ) (byte*) current_piece_gfx#29 ← phi( play_lock_current/(byte*) current_piece_gfx#44 play_lock_current::@5/(byte*) current_piece_gfx#45 ) (byte) current_xpos#22 ← phi( play_lock_current/(byte) current_xpos#41 play_lock_current::@5/(byte) current_xpos#42 ) @@ -1919,7 +1957,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#22 play_lock_current::@3/(byte) current_xpos#59 ) + (byte) current_xpos#75 ← phi( play_lock_current::@1/(byte) current_xpos#22 play_lock_current::@3/(byte) current_xpos#59 ) (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 ) @@ -1934,7 +1972,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#59 ← phi( play_lock_current::@2/(byte) current_xpos#74 play_lock_current::@4/(byte) current_xpos#75 ) + (byte) current_xpos#59 ← 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#31 ← phi( play_lock_current::@2/(byte) current_piece_char#21 play_lock_current::@4/(byte) current_piece_char#11 ) (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 ) @@ -1949,7 +1987,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 ) @@ -1961,7 +1999,7 @@ play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::col#3) ← (byte) current_piece_char#11 to:play_lock_current::@3 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - (byte) current_piece_char#45 ← phi( play_lock_current::@3/(byte) current_piece_char#31 ) + (byte) current_piece_char#46 ← phi( play_lock_current::@3/(byte) current_piece_char#31 ) (byte) play_lock_current::i#5 ← phi( play_lock_current::@3/(byte) play_lock_current::i#4 ) (byte*) current_piece_gfx#45 ← phi( play_lock_current::@3/(byte*) current_piece_gfx#30 ) (byte) current_xpos#42 ← phi( play_lock_current::@3/(byte) current_xpos#59 ) @@ -2137,28 +2175,30 @@ main: scope:[main] from @32 (byte) current_movedown_counter#47 ← phi( @32/(byte) current_movedown_counter#20 ) (byte) keyboard_modifiers#59 ← phi( @32/(byte) keyboard_modifiers#25 ) (byte) keyboard_events_size#78 ← phi( @32/(byte) keyboard_events_size#28 ) - (byte) current_piece_char#74 ← phi( @32/(byte) current_piece_char#25 ) + (byte) render_screen_showing#44 ← phi( @32/(byte) render_screen_showing#14 ) + (byte) current_piece_char#75 ← phi( @32/(byte) current_piece_char#25 ) (byte) current_ypos#71 ← phi( @32/(byte) current_ypos#38 ) (byte) current_xpos#97 ← phi( @32/(byte) current_xpos#46 ) (byte*) current_piece_gfx#87 ← phi( @32/(byte*) current_piece_gfx#35 ) - (byte) current_orientation#71 ← phi( @32/(byte) current_orientation#40 ) - (byte*) current_piece#67 ← phi( @32/(byte*) current_piece#29 ) - (byte) render_screen_render#29 ← phi( @32/(byte) render_screen_render#23 ) - (byte) render_screen_show#22 ← phi( @32/(byte) render_screen_show#21 ) + (byte) current_orientation#72 ← phi( @32/(byte) current_orientation#40 ) + (byte*) current_piece#68 ← phi( @32/(byte*) current_piece#29 ) + (byte) render_screen_render#30 ← phi( @32/(byte) render_screen_render#24 ) + (byte) render_screen_show#27 ← phi( @32/(byte) render_screen_show#24 ) call sid_rnd_init to:main::@15 main::@15: scope:[main] from main (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#67 ← phi( main/(byte) current_piece_char#74 ) + (byte) render_screen_showing#43 ← phi( main/(byte) render_screen_showing#44 ) + (byte) current_piece_char#68 ← phi( main/(byte) current_piece_char#75 ) (byte) current_ypos#68 ← phi( main/(byte) current_ypos#71 ) (byte) current_xpos#94 ← phi( main/(byte) current_xpos#97 ) (byte*) current_piece_gfx#81 ← phi( main/(byte*) current_piece_gfx#87 ) - (byte) current_orientation#68 ← phi( main/(byte) current_orientation#71 ) - (byte*) current_piece#62 ← phi( main/(byte*) current_piece#67 ) - (byte) render_screen_render#21 ← phi( main/(byte) render_screen_render#29 ) - (byte) render_screen_show#18 ← phi( main/(byte) render_screen_show#22 ) + (byte) current_orientation#69 ← phi( main/(byte) current_orientation#72 ) + (byte*) current_piece#63 ← phi( main/(byte*) current_piece#68 ) + (byte) render_screen_render#22 ← phi( main/(byte) render_screen_render#30 ) + (byte) render_screen_show#22 ← phi( main/(byte) render_screen_show#27 ) asm { sei } call render_init to:main::@16 @@ -2166,52 +2206,56 @@ main::@16: scope:[main] from main::@15 (byte) current_movedown_counter#45 ← phi( main::@15/(byte) current_movedown_counter#46 ) (byte) keyboard_modifiers#55 ← phi( main::@15/(byte) keyboard_modifiers#57 ) (byte) keyboard_events_size#73 ← phi( main::@15/(byte) keyboard_events_size#76 ) - (byte) current_piece_char#58 ← phi( main::@15/(byte) current_piece_char#67 ) - (byte) current_ypos#62 ← phi( main::@15/(byte) current_ypos#68 ) - (byte) current_xpos#86 ← phi( main::@15/(byte) current_xpos#94 ) - (byte*) current_piece_gfx#75 ← phi( main::@15/(byte*) current_piece_gfx#81 ) - (byte) current_orientation#63 ← phi( main::@15/(byte) current_orientation#68 ) - (byte*) current_piece#57 ← phi( main::@15/(byte*) current_piece#62 ) - (byte) render_screen_render#13 ← phi( main::@15/(byte) render_screen_render#1 ) - (byte) render_screen_show#12 ← phi( main::@15/(byte) render_screen_show#1 ) - (byte) render_screen_show#4 ← (byte) render_screen_show#12 - (byte) render_screen_render#4 ← (byte) render_screen_render#13 + (byte) render_screen_showing#42 ← phi( main::@15/(byte) render_screen_showing#43 ) + (byte) current_piece_char#59 ← phi( main::@15/(byte) current_piece_char#68 ) + (byte) current_ypos#63 ← phi( main::@15/(byte) current_ypos#68 ) + (byte) current_xpos#87 ← phi( main::@15/(byte) current_xpos#94 ) + (byte*) current_piece_gfx#76 ← phi( main::@15/(byte*) current_piece_gfx#81 ) + (byte) current_orientation#64 ← phi( main::@15/(byte) current_orientation#69 ) + (byte*) current_piece#58 ← phi( main::@15/(byte*) current_piece#63 ) + (byte) render_screen_render#14 ← phi( main::@15/(byte) render_screen_render#2 ) + (byte) render_screen_show#14 ← phi( main::@15/(byte) render_screen_show#2 ) + (byte) render_screen_show#5 ← (byte) render_screen_show#14 + (byte) render_screen_render#5 ← (byte) render_screen_render#14 call sprites_init to:main::@17 main::@17: scope:[main] from main::@16 (byte) current_movedown_counter#44 ← phi( main::@16/(byte) current_movedown_counter#45 ) (byte) keyboard_modifiers#53 ← phi( main::@16/(byte) keyboard_modifiers#55 ) (byte) keyboard_events_size#69 ← phi( main::@16/(byte) keyboard_events_size#73 ) - (byte) render_screen_show#43 ← phi( main::@16/(byte) render_screen_show#4 ) - (byte) render_screen_render#48 ← phi( main::@16/(byte) render_screen_render#4 ) - (byte) current_piece_char#46 ← phi( main::@16/(byte) current_piece_char#58 ) - (byte) current_ypos#55 ← phi( main::@16/(byte) current_ypos#62 ) - (byte) current_xpos#76 ← phi( main::@16/(byte) current_xpos#86 ) - (byte*) current_piece_gfx#62 ← phi( main::@16/(byte*) current_piece_gfx#75 ) - (byte) current_orientation#57 ← phi( main::@16/(byte) current_orientation#63 ) - (byte*) current_piece#48 ← phi( main::@16/(byte*) current_piece#57 ) + (byte) render_screen_showing#39 ← phi( main::@16/(byte) render_screen_showing#42 ) + (byte) render_screen_show#53 ← phi( main::@16/(byte) render_screen_show#5 ) + (byte) render_screen_render#49 ← phi( main::@16/(byte) render_screen_render#5 ) + (byte) current_piece_char#47 ← phi( main::@16/(byte) current_piece_char#59 ) + (byte) current_ypos#56 ← phi( main::@16/(byte) current_ypos#63 ) + (byte) current_xpos#77 ← phi( main::@16/(byte) current_xpos#87 ) + (byte*) current_piece_gfx#63 ← phi( main::@16/(byte*) current_piece_gfx#76 ) + (byte) current_orientation#58 ← phi( main::@16/(byte) current_orientation#64 ) + (byte*) current_piece#49 ← phi( main::@16/(byte*) current_piece#58 ) call sprites_irq_init to:main::@18 main::@18: scope:[main] from main::@17 - (byte) current_movedown_counter#40 ← phi( main::@17/(byte) current_movedown_counter#44 ) - (byte) keyboard_modifiers#49 ← phi( main::@17/(byte) keyboard_modifiers#53 ) - (byte) keyboard_events_size#65 ← phi( main::@17/(byte) keyboard_events_size#69 ) - (byte) render_screen_show#40 ← phi( main::@17/(byte) render_screen_show#43 ) - (byte) render_screen_render#44 ← phi( main::@17/(byte) render_screen_render#48 ) - (byte) current_piece_char#32 ← phi( main::@17/(byte) current_piece_char#46 ) - (byte) current_ypos#44 ← phi( main::@17/(byte) current_ypos#55 ) - (byte) current_xpos#60 ← phi( main::@17/(byte) current_xpos#76 ) - (byte*) current_piece_gfx#47 ← phi( main::@17/(byte*) current_piece_gfx#62 ) - (byte) current_orientation#46 ← phi( main::@17/(byte) current_orientation#57 ) - (byte*) current_piece#37 ← phi( main::@17/(byte*) current_piece#48 ) + (byte) current_movedown_counter#41 ← phi( main::@17/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#50 ← phi( main::@17/(byte) keyboard_modifiers#53 ) + (byte) keyboard_events_size#66 ← phi( main::@17/(byte) keyboard_events_size#69 ) + (byte) render_screen_showing#36 ← phi( main::@17/(byte) render_screen_showing#39 ) + (byte) render_screen_show#50 ← phi( main::@17/(byte) render_screen_show#53 ) + (byte) render_screen_render#45 ← phi( main::@17/(byte) render_screen_render#49 ) + (byte) current_piece_char#32 ← phi( main::@17/(byte) current_piece_char#47 ) + (byte) current_ypos#44 ← phi( main::@17/(byte) current_ypos#56 ) + (byte) current_xpos#60 ← phi( main::@17/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#47 ← phi( main::@17/(byte*) current_piece_gfx#63 ) + (byte) current_orientation#46 ← phi( main::@17/(byte) current_orientation#58 ) + (byte*) current_piece#37 ← phi( main::@17/(byte*) current_piece#49 ) call play_init to:main::@19 main::@19: scope:[main] from main::@18 - (byte) current_movedown_counter#37 ← phi( main::@18/(byte) current_movedown_counter#40 ) - (byte) keyboard_modifiers#45 ← phi( main::@18/(byte) keyboard_modifiers#49 ) - (byte) keyboard_events_size#57 ← phi( main::@18/(byte) keyboard_events_size#65 ) - (byte) render_screen_show#37 ← phi( main::@18/(byte) render_screen_show#40 ) - (byte) render_screen_render#38 ← phi( main::@18/(byte) render_screen_render#44 ) + (byte) current_movedown_counter#38 ← phi( main::@18/(byte) current_movedown_counter#41 ) + (byte) keyboard_modifiers#46 ← phi( main::@18/(byte) keyboard_modifiers#50 ) + (byte) keyboard_events_size#58 ← phi( main::@18/(byte) keyboard_events_size#66 ) + (byte) render_screen_showing#32 ← phi( main::@18/(byte) render_screen_showing#36 ) + (byte) render_screen_show#47 ← phi( main::@18/(byte) render_screen_show#50 ) + (byte) render_screen_render#39 ← phi( main::@18/(byte) render_screen_render#45 ) (byte) current_piece_char#22 ← phi( main::@18/(byte) current_piece_char#32 ) (byte) current_ypos#35 ← phi( main::@18/(byte) current_ypos#44 ) (byte) current_xpos#43 ← phi( main::@18/(byte) current_xpos#60 ) @@ -2221,11 +2265,12 @@ main::@19: scope:[main] from main::@18 call play_spawn_current to:main::@20 main::@20: scope:[main] from main::@19 - (byte) current_movedown_counter#33 ← phi( main::@19/(byte) current_movedown_counter#37 ) - (byte) keyboard_modifiers#39 ← phi( main::@19/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#48 ← phi( main::@19/(byte) keyboard_events_size#57 ) - (byte) render_screen_show#34 ← phi( main::@19/(byte) render_screen_show#37 ) - (byte) render_screen_render#25 ← phi( main::@19/(byte) render_screen_render#38 ) + (byte) current_movedown_counter#34 ← phi( main::@19/(byte) current_movedown_counter#38 ) + (byte) keyboard_modifiers#40 ← phi( main::@19/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#49 ← phi( main::@19/(byte) keyboard_events_size#58 ) + (byte) render_screen_showing#28 ← phi( main::@19/(byte) render_screen_showing#32 ) + (byte) render_screen_show#44 ← phi( main::@19/(byte) render_screen_show#47 ) + (byte) render_screen_render#26 ← phi( main::@19/(byte) render_screen_render#39 ) (byte) current_piece_char#13 ← phi( main::@19/(byte) current_piece_char#3 ) (byte) current_ypos#19 ← phi( main::@19/(byte) current_ypos#4 ) (byte) current_xpos#24 ← phi( main::@19/(byte) current_xpos#6 ) @@ -2241,127 +2286,135 @@ main::@20: scope:[main] from main::@19 call render_playfield to:main::@21 main::@21: scope:[main] from main::@20 - (byte) current_movedown_counter#29 ← phi( main::@20/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#34 ← phi( main::@20/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#40 ← phi( main::@20/(byte) keyboard_events_size#48 ) - (byte) current_piece_char#47 ← phi( main::@20/(byte) current_piece_char#4 ) - (byte*) current_piece_gfx#63 ← phi( main::@20/(byte*) current_piece_gfx#6 ) - (byte) current_orientation#58 ← phi( main::@20/(byte) current_orientation#7 ) - (byte*) current_piece#49 ← phi( main::@20/(byte*) current_piece#5 ) - (byte) render_screen_show#30 ← phi( main::@20/(byte) render_screen_show#34 ) - (byte) current_xpos#65 ← phi( main::@20/(byte) current_xpos#7 ) - (byte) render_screen_render#34 ← phi( main::@20/(byte) render_screen_render#25 ) + (byte) current_movedown_counter#30 ← phi( main::@20/(byte) current_movedown_counter#34 ) + (byte) keyboard_modifiers#35 ← phi( main::@20/(byte) keyboard_modifiers#40 ) + (byte) keyboard_events_size#41 ← phi( main::@20/(byte) keyboard_events_size#49 ) + (byte) render_screen_showing#22 ← phi( main::@20/(byte) render_screen_showing#28 ) + (byte) current_piece_char#48 ← phi( main::@20/(byte) current_piece_char#4 ) + (byte*) current_piece_gfx#64 ← phi( main::@20/(byte*) current_piece_gfx#6 ) + (byte) current_orientation#59 ← phi( main::@20/(byte) current_orientation#7 ) + (byte*) current_piece#50 ← phi( main::@20/(byte*) current_piece#5 ) + (byte) render_screen_show#36 ← phi( main::@20/(byte) render_screen_show#44 ) + (byte) current_xpos#66 ← phi( main::@20/(byte) current_xpos#7 ) + (byte) render_screen_render#35 ← phi( main::@20/(byte) render_screen_render#26 ) (byte) current_ypos#23 ← phi( main::@20/(byte) current_ypos#5 ) call render_current to:main::@22 main::@22: scope:[main] from main::@21 - (byte) current_movedown_counter#23 ← phi( main::@21/(byte) current_movedown_counter#29 ) - (byte) keyboard_modifiers#29 ← phi( main::@21/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#32 ← phi( main::@21/(byte) keyboard_events_size#40 ) - (byte) current_piece_char#33 ← phi( main::@21/(byte) current_piece_char#47 ) + (byte) current_movedown_counter#23 ← phi( main::@21/(byte) current_movedown_counter#30 ) + (byte) keyboard_modifiers#29 ← phi( main::@21/(byte) keyboard_modifiers#35 ) + (byte) keyboard_events_size#32 ← phi( main::@21/(byte) keyboard_events_size#41 ) + (byte) render_screen_showing#16 ← phi( main::@21/(byte) render_screen_showing#22 ) + (byte) current_piece_char#33 ← phi( main::@21/(byte) current_piece_char#48 ) (byte) current_ypos#45 ← phi( main::@21/(byte) current_ypos#23 ) - (byte) current_xpos#61 ← phi( main::@21/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#48 ← phi( main::@21/(byte*) current_piece_gfx#63 ) - (byte) current_orientation#47 ← phi( main::@21/(byte) current_orientation#58 ) - (byte*) current_piece#38 ← phi( main::@21/(byte*) current_piece#49 ) - (byte) render_screen_render#30 ← phi( main::@21/(byte) render_screen_render#34 ) - (byte) render_screen_show#23 ← phi( main::@21/(byte) render_screen_show#30 ) + (byte) current_xpos#61 ← phi( main::@21/(byte) current_xpos#66 ) + (byte*) current_piece_gfx#48 ← phi( main::@21/(byte*) current_piece_gfx#64 ) + (byte) current_orientation#47 ← phi( main::@21/(byte) current_orientation#59 ) + (byte*) current_piece#38 ← phi( main::@21/(byte*) current_piece#50 ) + (byte) render_screen_render#31 ← phi( main::@21/(byte) render_screen_render#35 ) + (byte) render_screen_show#28 ← phi( main::@21/(byte) render_screen_show#36 ) to:main::@1 -main::@1: scope:[main] from main::@22 main::@7 - (byte) current_movedown_counter#19 ← phi( main::@22/(byte) current_movedown_counter#23 main::@7/(byte) current_movedown_counter#24 ) - (byte) keyboard_modifiers#24 ← phi( main::@22/(byte) keyboard_modifiers#29 main::@7/(byte) keyboard_modifiers#30 ) - (byte) keyboard_events_size#27 ← phi( main::@22/(byte) keyboard_events_size#32 main::@7/(byte) keyboard_events_size#33 ) - (byte) current_piece_char#24 ← phi( main::@22/(byte) current_piece_char#33 main::@7/(byte) current_piece_char#34 ) - (byte) current_ypos#37 ← phi( main::@22/(byte) current_ypos#45 main::@7/(byte) current_ypos#46 ) - (byte) current_xpos#45 ← phi( main::@22/(byte) current_xpos#61 main::@7/(byte) current_xpos#62 ) - (byte*) current_piece_gfx#34 ← phi( main::@22/(byte*) current_piece_gfx#48 main::@7/(byte*) current_piece_gfx#49 ) - (byte) current_orientation#39 ← phi( main::@22/(byte) current_orientation#47 main::@7/(byte) current_orientation#48 ) - (byte*) current_piece#28 ← phi( main::@22/(byte*) current_piece#38 main::@7/(byte*) current_piece#39 ) - (byte) render_screen_render#22 ← phi( main::@22/(byte) render_screen_render#30 main::@7/(byte) render_screen_render#31 ) - (byte) render_screen_show#20 ← phi( main::@22/(byte) render_screen_show#23 main::@7/(byte) render_screen_show#24 ) +main::@1: scope:[main] from main::@22 main::@31 main::@7 + (byte) current_movedown_counter#19 ← phi( main::@22/(byte) current_movedown_counter#23 main::@31/(byte) current_movedown_counter#24 main::@7/(byte) current_movedown_counter#25 ) + (byte) keyboard_modifiers#24 ← phi( main::@22/(byte) keyboard_modifiers#29 main::@31/(byte) keyboard_modifiers#30 main::@7/(byte) keyboard_modifiers#31 ) + (byte) keyboard_events_size#27 ← phi( main::@22/(byte) keyboard_events_size#32 main::@31/(byte) keyboard_events_size#33 main::@7/(byte) keyboard_events_size#34 ) + (byte) render_screen_showing#13 ← phi( main::@22/(byte) render_screen_showing#16 main::@31/(byte) render_screen_showing#17 main::@7/(byte) render_screen_showing#18 ) + (byte) current_piece_char#24 ← phi( main::@22/(byte) current_piece_char#33 main::@31/(byte) current_piece_char#34 main::@7/(byte) current_piece_char#35 ) + (byte) current_ypos#37 ← phi( main::@22/(byte) current_ypos#45 main::@31/(byte) current_ypos#46 main::@7/(byte) current_ypos#47 ) + (byte) current_xpos#45 ← phi( main::@22/(byte) current_xpos#61 main::@31/(byte) current_xpos#62 main::@7/(byte) current_xpos#63 ) + (byte*) current_piece_gfx#34 ← phi( main::@22/(byte*) current_piece_gfx#48 main::@31/(byte*) current_piece_gfx#49 main::@7/(byte*) current_piece_gfx#50 ) + (byte) current_orientation#39 ← phi( main::@22/(byte) current_orientation#47 main::@31/(byte) current_orientation#48 main::@7/(byte) current_orientation#49 ) + (byte*) current_piece#28 ← phi( main::@22/(byte*) current_piece#38 main::@31/(byte*) current_piece#39 main::@7/(byte*) current_piece#40 ) + (byte) render_screen_render#23 ← phi( main::@22/(byte) render_screen_render#31 main::@31/(byte) render_screen_render#6 main::@7/(byte) render_screen_render#32 ) + (byte) render_screen_show#23 ← phi( main::@22/(byte) render_screen_show#28 main::@31/(byte) render_screen_show#6 main::@7/(byte) render_screen_show#29 ) if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) render_screen_render#61 ← phi( main::@1/(byte) render_screen_render#22 ) - (byte) current_piece_char#75 ← phi( main::@1/(byte) current_piece_char#24 ) + (byte) render_screen_render#59 ← phi( main::@1/(byte) render_screen_render#23 ) + (byte) current_piece_char#76 ← phi( main::@1/(byte) current_piece_char#24 ) (byte) current_xpos#98 ← phi( main::@1/(byte) current_xpos#45 ) (byte*) current_piece_gfx#88 ← phi( main::@1/(byte*) current_piece_gfx#34 ) - (byte) current_orientation#72 ← phi( main::@1/(byte) current_orientation#39 ) - (byte*) current_piece#68 ← phi( main::@1/(byte*) current_piece#28 ) + (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#72 ← phi( main::@1/(byte) current_ypos#37 ) - (byte) current_movedown_counter#41 ← phi( main::@1/(byte) current_movedown_counter#19 ) - (byte) keyboard_modifiers#40 ← phi( main::@1/(byte) keyboard_modifiers#24 ) - (byte) keyboard_events_size#49 ← phi( main::@1/(byte) keyboard_events_size#27 ) - (byte) render_screen_show#25 ← phi( main::@1/(byte) render_screen_show#20 ) + (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 ) + (byte) render_screen_showing#23 ← phi( main::@1/(byte) render_screen_showing#13 ) + (byte) render_screen_show#37 ← phi( main::@1/(byte) render_screen_show#23 ) to:main::@4 main::@4: scope:[main] from main::@2 main::@5 - (byte) render_screen_render#59 ← phi( main::@2/(byte) render_screen_render#61 main::@5/(byte) render_screen_render#62 ) - (byte) current_piece_char#68 ← phi( main::@2/(byte) current_piece_char#75 main::@5/(byte) current_piece_char#76 ) + (byte) render_screen_render#58 ← phi( main::@2/(byte) render_screen_render#59 main::@5/(byte) render_screen_render#60 ) + (byte) current_piece_char#69 ← phi( main::@2/(byte) current_piece_char#76 main::@5/(byte) current_piece_char#77 ) (byte) current_xpos#95 ← phi( main::@2/(byte) current_xpos#98 main::@5/(byte) current_xpos#99 ) (byte*) current_piece_gfx#82 ← phi( main::@2/(byte*) current_piece_gfx#88 main::@5/(byte*) current_piece_gfx#89 ) - (byte) current_orientation#69 ← phi( main::@2/(byte) current_orientation#72 main::@5/(byte) current_orientation#73 ) - (byte*) current_piece#63 ← phi( main::@2/(byte*) current_piece#68 main::@5/(byte*) current_piece#69 ) + (byte) current_orientation#70 ← phi( main::@2/(byte) current_orientation#73 main::@5/(byte) current_orientation#74 ) + (byte*) current_piece#64 ← phi( main::@2/(byte*) current_piece#69 main::@5/(byte*) current_piece#70 ) (byte) current_ypos#69 ← phi( main::@2/(byte) current_ypos#72 main::@5/(byte) current_ypos#73 ) - (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#41 main::@5/(byte) current_movedown_counter#42 ) - (byte) keyboard_modifiers#35 ← phi( main::@2/(byte) keyboard_modifiers#40 main::@5/(byte) keyboard_modifiers#41 ) - (byte) keyboard_events_size#41 ← phi( main::@2/(byte) keyboard_events_size#49 main::@5/(byte) keyboard_events_size#50 ) - (byte) render_screen_show#19 ← phi( main::@2/(byte) render_screen_show#25 main::@5/(byte) render_screen_show#26 ) + (byte) current_movedown_counter#39 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) + (byte) keyboard_modifiers#36 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) + (byte) keyboard_events_size#42 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) + (byte) render_screen_showing#19 ← phi( main::@2/(byte) render_screen_showing#23 main::@5/(byte) render_screen_showing#24 ) + (byte) render_screen_show#30 ← phi( main::@2/(byte) render_screen_show#37 main::@5/(byte) render_screen_show#38 ) (bool~) main::$8 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 if((bool~) main::$8) goto main::@5 to:main::@6 main::@5: scope:[main] from main::@4 - (byte) render_screen_render#62 ← phi( main::@4/(byte) render_screen_render#59 ) - (byte) current_piece_char#76 ← phi( main::@4/(byte) current_piece_char#68 ) + (byte) render_screen_render#60 ← phi( main::@4/(byte) render_screen_render#58 ) + (byte) current_piece_char#77 ← phi( main::@4/(byte) current_piece_char#69 ) (byte) current_xpos#99 ← phi( main::@4/(byte) current_xpos#95 ) (byte*) current_piece_gfx#89 ← phi( main::@4/(byte*) current_piece_gfx#82 ) - (byte) current_orientation#73 ← phi( main::@4/(byte) current_orientation#69 ) - (byte*) current_piece#69 ← phi( main::@4/(byte*) current_piece#63 ) + (byte) current_orientation#74 ← phi( main::@4/(byte) current_orientation#70 ) + (byte*) current_piece#70 ← phi( main::@4/(byte*) current_piece#64 ) (byte) current_ypos#73 ← phi( main::@4/(byte) current_ypos#69 ) - (byte) current_movedown_counter#42 ← phi( main::@4/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#41 ← phi( main::@4/(byte) keyboard_modifiers#35 ) - (byte) keyboard_events_size#50 ← phi( main::@4/(byte) keyboard_events_size#41 ) - (byte) render_screen_show#26 ← phi( main::@4/(byte) render_screen_show#19 ) + (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#39 ) + (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#42 ) + (byte) render_screen_showing#24 ← phi( main::@4/(byte) render_screen_showing#19 ) + (byte) render_screen_show#38 ← phi( main::@4/(byte) render_screen_show#30 ) to:main::@4 main::@6: scope:[main] from main::@4 - (byte) render_screen_render#57 ← phi( main::@4/(byte) render_screen_render#59 ) - (byte) current_piece_char#59 ← phi( main::@4/(byte) current_piece_char#68 ) - (byte) current_xpos#87 ← phi( main::@4/(byte) current_xpos#95 ) - (byte*) current_piece_gfx#76 ← phi( main::@4/(byte*) current_piece_gfx#82 ) - (byte) current_orientation#64 ← phi( main::@4/(byte) current_orientation#69 ) - (byte*) current_piece#58 ← phi( main::@4/(byte*) current_piece#63 ) - (byte) current_ypos#63 ← phi( main::@4/(byte) current_ypos#69 ) - (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#31 ← phi( main::@4/(byte) keyboard_modifiers#35 ) - (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#41 ) - (byte) render_screen_show#13 ← phi( main::@4/(byte) render_screen_show#19 ) - (byte~) main::$9 ← (byte) render_screen_show#13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - *((byte*) BORDERCOL#0) ← (byte~) main::$9 + (byte) render_screen_render#57 ← phi( main::@4/(byte) render_screen_render#58 ) + (byte) current_piece_char#60 ← phi( main::@4/(byte) current_piece_char#69 ) + (byte) current_xpos#88 ← phi( main::@4/(byte) current_xpos#95 ) + (byte*) current_piece_gfx#77 ← phi( main::@4/(byte*) current_piece_gfx#82 ) + (byte) current_orientation#65 ← phi( main::@4/(byte) current_orientation#70 ) + (byte*) current_piece#59 ← phi( main::@4/(byte*) current_piece#64 ) + (byte) current_ypos#64 ← phi( main::@4/(byte) current_ypos#69 ) + (byte) current_movedown_counter#35 ← phi( main::@4/(byte) current_movedown_counter#39 ) + (byte) keyboard_modifiers#32 ← phi( main::@4/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#35 ← phi( main::@4/(byte) keyboard_events_size#42 ) + (byte) render_screen_showing#12 ← phi( main::@4/(byte) render_screen_showing#19 ) + (byte) render_screen_show#18 ← phi( main::@4/(byte) render_screen_show#30 ) call render_show to:main::@23 main::@23: scope:[main] from main::@6 - (byte) render_screen_render#55 ← phi( main::@6/(byte) render_screen_render#57 ) - (byte) render_screen_show#46 ← phi( main::@6/(byte) render_screen_show#13 ) - (byte) current_piece_char#48 ← phi( main::@6/(byte) current_piece_char#59 ) - (byte) current_xpos#77 ← phi( main::@6/(byte) current_xpos#87 ) - (byte*) current_piece_gfx#64 ← phi( main::@6/(byte*) current_piece_gfx#76 ) - (byte) current_orientation#59 ← phi( main::@6/(byte) current_orientation#64 ) - (byte*) current_piece#50 ← phi( main::@6/(byte*) current_piece#58 ) - (byte) current_ypos#56 ← phi( main::@6/(byte) current_ypos#63 ) - (byte) current_movedown_counter#30 ← phi( main::@6/(byte) current_movedown_counter#34 ) - (byte) keyboard_modifiers#23 ← phi( main::@6/(byte) keyboard_modifiers#31 ) - (byte) keyboard_events_size#26 ← phi( main::@6/(byte) keyboard_events_size#34 ) + (byte) render_screen_render#56 ← phi( main::@6/(byte) render_screen_render#57 ) + (byte) render_screen_show#56 ← phi( main::@6/(byte) render_screen_show#18 ) + (byte) current_piece_char#49 ← phi( main::@6/(byte) current_piece_char#60 ) + (byte) current_xpos#78 ← phi( main::@6/(byte) current_xpos#88 ) + (byte*) current_piece_gfx#65 ← phi( main::@6/(byte*) current_piece_gfx#77 ) + (byte) current_orientation#60 ← phi( main::@6/(byte) current_orientation#65 ) + (byte*) current_piece#51 ← phi( main::@6/(byte*) current_piece#59 ) + (byte) current_ypos#57 ← phi( main::@6/(byte) current_ypos#64 ) + (byte) current_movedown_counter#31 ← phi( main::@6/(byte) current_movedown_counter#35 ) + (byte) keyboard_modifiers#23 ← phi( main::@6/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#26 ← phi( main::@6/(byte) keyboard_events_size#35 ) + (byte) render_screen_showing#8 ← phi( main::@6/(byte) render_screen_showing#2 ) + (byte) render_screen_showing#3 ← (byte) render_screen_showing#8 call keyboard_event_scan to:main::@24 main::@24: scope:[main] from main::@23 - (byte) render_screen_render#53 ← phi( main::@23/(byte) render_screen_render#55 ) - (byte) render_screen_show#44 ← phi( main::@23/(byte) render_screen_show#46 ) - (byte) current_piece_char#35 ← phi( main::@23/(byte) current_piece_char#48 ) - (byte) current_xpos#63 ← phi( main::@23/(byte) current_xpos#77 ) - (byte*) current_piece_gfx#50 ← phi( main::@23/(byte*) current_piece_gfx#64 ) - (byte) current_orientation#49 ← phi( main::@23/(byte) current_orientation#59 ) - (byte*) current_piece#40 ← phi( main::@23/(byte*) current_piece#50 ) - (byte) current_ypos#47 ← phi( main::@23/(byte) current_ypos#56 ) - (byte) current_movedown_counter#25 ← phi( main::@23/(byte) current_movedown_counter#30 ) + (byte) render_screen_showing#40 ← phi( main::@23/(byte) render_screen_showing#3 ) + (byte) render_screen_render#54 ← phi( main::@23/(byte) render_screen_render#56 ) + (byte) render_screen_show#54 ← phi( main::@23/(byte) render_screen_show#56 ) + (byte) current_piece_char#36 ← phi( main::@23/(byte) current_piece_char#49 ) + (byte) current_xpos#64 ← phi( main::@23/(byte) current_xpos#78 ) + (byte*) current_piece_gfx#51 ← phi( main::@23/(byte*) current_piece_gfx#65 ) + (byte) current_orientation#50 ← phi( main::@23/(byte) current_orientation#60 ) + (byte*) current_piece#41 ← phi( main::@23/(byte*) current_piece#51 ) + (byte) current_ypos#48 ← phi( main::@23/(byte) current_ypos#57 ) + (byte) current_movedown_counter#26 ← phi( main::@23/(byte) current_movedown_counter#31 ) (byte) keyboard_modifiers#15 ← phi( main::@23/(byte) keyboard_modifiers#6 ) (byte) keyboard_events_size#17 ← phi( main::@23/(byte) keyboard_events_size#3 ) (byte) keyboard_events_size#6 ← (byte) keyboard_events_size#17 @@ -2370,31 +2423,33 @@ main::@24: scope:[main] from main::@23 (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@25 main::@25: scope:[main] from main::@24 - (byte) keyboard_modifiers#50 ← phi( main::@24/(byte) keyboard_modifiers#7 ) - (byte) render_screen_render#51 ← phi( main::@24/(byte) render_screen_render#53 ) - (byte) render_screen_show#41 ← phi( main::@24/(byte) render_screen_show#44 ) - (byte) current_piece_char#23 ← phi( main::@24/(byte) current_piece_char#35 ) - (byte) current_xpos#44 ← phi( main::@24/(byte) current_xpos#63 ) - (byte*) current_piece_gfx#32 ← phi( main::@24/(byte*) current_piece_gfx#50 ) - (byte) current_orientation#37 ← phi( main::@24/(byte) current_orientation#49 ) - (byte*) current_piece#27 ← phi( main::@24/(byte*) current_piece#40 ) - (byte) current_ypos#36 ← phi( main::@24/(byte) current_ypos#47 ) - (byte) current_movedown_counter#14 ← phi( main::@24/(byte) current_movedown_counter#25 ) + (byte) keyboard_modifiers#51 ← phi( main::@24/(byte) keyboard_modifiers#7 ) + (byte) render_screen_showing#37 ← phi( main::@24/(byte) render_screen_showing#40 ) + (byte) render_screen_render#52 ← phi( main::@24/(byte) render_screen_render#54 ) + (byte) render_screen_show#51 ← phi( main::@24/(byte) render_screen_show#54 ) + (byte) current_piece_char#23 ← phi( main::@24/(byte) current_piece_char#36 ) + (byte) current_xpos#44 ← phi( main::@24/(byte) current_xpos#64 ) + (byte*) current_piece_gfx#32 ← phi( main::@24/(byte*) current_piece_gfx#51 ) + (byte) current_orientation#37 ← phi( main::@24/(byte) current_orientation#50 ) + (byte*) current_piece#27 ← phi( main::@24/(byte*) current_piece#41 ) + (byte) current_ypos#36 ← phi( main::@24/(byte) current_ypos#48 ) + (byte) current_movedown_counter#14 ← phi( main::@24/(byte) current_movedown_counter#26 ) (byte) keyboard_events_size#18 ← phi( main::@24/(byte) keyboard_events_size#5 ) (byte) keyboard_event_get::return#5 ← phi( main::@24/(byte) keyboard_event_get::return#3 ) - (byte~) main::$12 ← (byte) keyboard_event_get::return#5 + (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::$12 + (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::@26 main::@26: scope:[main] from main::@25 - (byte) keyboard_modifiers#46 ← phi( main::@25/(byte) keyboard_modifiers#50 ) - (byte) keyboard_events_size#58 ← phi( main::@25/(byte) keyboard_events_size#7 ) - (byte) render_screen_render#49 ← phi( main::@25/(byte) render_screen_render#51 ) - (byte) render_screen_show#38 ← phi( main::@25/(byte) render_screen_show#41 ) + (byte) keyboard_modifiers#47 ← phi( main::@25/(byte) keyboard_modifiers#51 ) + (byte) keyboard_events_size#59 ← phi( main::@25/(byte) keyboard_events_size#7 ) + (byte) render_screen_showing#33 ← phi( main::@25/(byte) render_screen_showing#37 ) + (byte) render_screen_render#50 ← phi( main::@25/(byte) render_screen_render#52 ) + (byte) render_screen_show#48 ← phi( main::@25/(byte) render_screen_show#51 ) (byte) main::key_event#1 ← phi( main::@25/(byte) main::key_event#0 ) (byte) main::render#4 ← phi( main::@25/(byte) main::render#0 ) (byte) current_piece_char#14 ← phi( main::@25/(byte) current_piece_char#1 ) @@ -2405,7 +2460,7 @@ main::@26: scope:[main] from main::@25 (byte) current_ypos#20 ← phi( main::@25/(byte) current_ypos#2 ) (byte) current_movedown_counter#11 ← phi( main::@25/(byte) current_movedown_counter#3 ) (byte) play_move_down::return#5 ← phi( main::@25/(byte) play_move_down::return#3 ) - (byte~) main::$13 ← (byte) play_move_down::return#5 + (byte~) main::$12 ← (byte) play_move_down::return#5 (byte) current_movedown_counter#4 ← (byte) current_movedown_counter#11 (byte) current_ypos#6 ← (byte) current_ypos#20 (byte*) current_piece#6 ← (byte*) current_piece#15 @@ -2413,189 +2468,200 @@ main::@26: scope:[main] from main::@25 (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 (byte) current_xpos#8 ← (byte) current_xpos#25 (byte) current_piece_char#5 ← (byte) current_piece_char#14 - (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$13 + (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::@27 main::@27: scope:[main] from main::@26 - (byte) current_movedown_counter#35 ← phi( main::@26/(byte) current_movedown_counter#4 ) - (byte) keyboard_modifiers#42 ← phi( main::@26/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#51 ← phi( main::@26/(byte) keyboard_events_size#58 ) - (byte) current_piece_char#60 ← phi( main::@26/(byte) current_piece_char#5 ) - (byte) render_screen_render#45 ← phi( main::@26/(byte) render_screen_render#49 ) - (byte) render_screen_show#35 ← phi( main::@26/(byte) render_screen_show#38 ) - (byte*) current_piece#56 ← phi( main::@26/(byte*) current_piece#6 ) - (byte) current_ypos#53 ← phi( main::@26/(byte) current_ypos#6 ) + (byte) current_movedown_counter#36 ← phi( main::@26/(byte) current_movedown_counter#4 ) + (byte) keyboard_modifiers#43 ← phi( main::@26/(byte) keyboard_modifiers#47 ) + (byte) keyboard_events_size#52 ← phi( main::@26/(byte) keyboard_events_size#59 ) + (byte) render_screen_showing#29 ← phi( main::@26/(byte) render_screen_showing#33 ) + (byte) current_piece_char#61 ← phi( main::@26/(byte) current_piece_char#5 ) + (byte) render_screen_render#46 ← phi( main::@26/(byte) render_screen_render#50 ) + (byte) render_screen_show#45 ← phi( main::@26/(byte) render_screen_show#48 ) + (byte*) current_piece#57 ← phi( main::@26/(byte*) current_piece#6 ) + (byte) current_ypos#54 ← phi( main::@26/(byte) current_ypos#6 ) (byte*) current_piece_gfx#33 ← phi( main::@26/(byte*) current_piece_gfx#7 ) (byte) current_orientation#38 ← phi( main::@26/(byte) current_orientation#8 ) (byte) main::key_event#2 ← phi( main::@26/(byte) main::key_event#1 ) (byte) main::render#5 ← phi( main::@26/(byte) main::render#1 ) (byte) current_xpos#26 ← phi( main::@26/(byte) current_xpos#3 ) (byte) play_move_leftright::return#6 ← phi( main::@26/(byte) play_move_leftright::return#4 ) - (byte~) main::$14 ← (byte) play_move_leftright::return#6 + (byte~) main::$13 ← (byte) play_move_leftright::return#6 (byte) current_xpos#9 ← (byte) current_xpos#26 - (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$14 + (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::@28 main::@28: scope:[main] from main::@27 - (byte) current_movedown_counter#31 ← phi( main::@27/(byte) current_movedown_counter#35 ) - (byte) keyboard_modifiers#36 ← phi( main::@27/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#42 ← phi( main::@27/(byte) keyboard_events_size#51 ) - (byte) current_piece_char#49 ← phi( main::@27/(byte) current_piece_char#60 ) - (byte) current_ypos#57 ← phi( main::@27/(byte) current_ypos#53 ) - (byte) current_xpos#78 ← phi( main::@27/(byte) current_xpos#9 ) - (byte*) current_piece#51 ← phi( main::@27/(byte*) current_piece#56 ) - (byte) render_screen_render#39 ← phi( main::@27/(byte) render_screen_render#45 ) - (byte) render_screen_show#31 ← phi( main::@27/(byte) render_screen_show#35 ) + (byte) current_movedown_counter#32 ← phi( main::@27/(byte) current_movedown_counter#36 ) + (byte) keyboard_modifiers#37 ← phi( main::@27/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#43 ← phi( main::@27/(byte) keyboard_events_size#52 ) + (byte) render_screen_showing#25 ← phi( main::@27/(byte) render_screen_showing#29 ) + (byte) current_piece_char#50 ← phi( main::@27/(byte) current_piece_char#61 ) + (byte) current_ypos#58 ← phi( main::@27/(byte) current_ypos#54 ) + (byte) current_xpos#79 ← phi( main::@27/(byte) current_xpos#9 ) + (byte*) current_piece#52 ← phi( main::@27/(byte*) current_piece#57 ) + (byte) render_screen_render#40 ← phi( main::@27/(byte) render_screen_render#46 ) + (byte) render_screen_show#39 ← phi( main::@27/(byte) render_screen_show#45 ) (byte) main::render#6 ← phi( main::@27/(byte) main::render#2 ) (byte*) current_piece_gfx#19 ← phi( main::@27/(byte*) current_piece_gfx#2 ) (byte) current_orientation#23 ← phi( main::@27/(byte) current_orientation#3 ) (byte) play_move_rotate::return#6 ← phi( main::@27/(byte) play_move_rotate::return#4 ) - (byte~) main::$15 ← (byte) play_move_rotate::return#6 + (byte~) main::$14 ← (byte) play_move_rotate::return#6 (byte) current_orientation#9 ← (byte) current_orientation#23 (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#19 - (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$15 - (bool~) main::$16 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) main::$17 ← ! (bool~) main::$16 - if((bool~) main::$17) goto main::@7 + (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::@7 to:main::@13 -main::@7: scope:[main] from main::@28 main::@31 - (byte) current_movedown_counter#24 ← phi( main::@28/(byte) current_movedown_counter#31 main::@31/(byte) current_movedown_counter#32 ) - (byte) keyboard_modifiers#30 ← phi( main::@28/(byte) keyboard_modifiers#36 main::@31/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#33 ← phi( main::@28/(byte) keyboard_events_size#42 main::@31/(byte) keyboard_events_size#43 ) - (byte) current_piece_char#34 ← phi( main::@28/(byte) current_piece_char#49 main::@31/(byte) current_piece_char#50 ) - (byte) current_ypos#46 ← phi( main::@28/(byte) current_ypos#57 main::@31/(byte) current_ypos#58 ) - (byte) current_xpos#62 ← phi( main::@28/(byte) current_xpos#78 main::@31/(byte) current_xpos#79 ) - (byte*) current_piece_gfx#49 ← phi( main::@28/(byte*) current_piece_gfx#8 main::@31/(byte*) current_piece_gfx#65 ) - (byte) current_orientation#48 ← phi( main::@28/(byte) current_orientation#9 main::@31/(byte) current_orientation#60 ) - (byte*) current_piece#39 ← phi( main::@28/(byte*) current_piece#51 main::@31/(byte*) current_piece#52 ) - (byte) render_screen_render#31 ← phi( main::@28/(byte) render_screen_render#39 main::@31/(byte) render_screen_render#5 ) - (byte) render_screen_show#24 ← phi( main::@28/(byte) render_screen_show#31 main::@31/(byte) render_screen_show#5 ) - *((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 +main::@7: scope:[main] from main::@28 + (byte) current_movedown_counter#25 ← phi( main::@28/(byte) current_movedown_counter#32 ) + (byte) keyboard_modifiers#31 ← phi( main::@28/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#34 ← phi( main::@28/(byte) keyboard_events_size#43 ) + (byte) render_screen_showing#18 ← phi( main::@28/(byte) render_screen_showing#25 ) + (byte) current_piece_char#35 ← phi( main::@28/(byte) current_piece_char#50 ) + (byte) current_ypos#47 ← phi( main::@28/(byte) current_ypos#58 ) + (byte) current_xpos#63 ← phi( main::@28/(byte) current_xpos#79 ) + (byte*) current_piece_gfx#50 ← phi( main::@28/(byte*) current_piece_gfx#8 ) + (byte) current_orientation#49 ← phi( main::@28/(byte) current_orientation#9 ) + (byte*) current_piece#40 ← phi( main::@28/(byte*) current_piece#52 ) + (byte) render_screen_render#32 ← phi( main::@28/(byte) render_screen_render#40 ) + (byte) render_screen_show#29 ← phi( main::@28/(byte) render_screen_show#39 ) to:main::@1 main::@13: scope:[main] from main::@28 - (byte) current_movedown_counter#43 ← phi( main::@28/(byte) current_movedown_counter#31 ) - (byte) keyboard_modifiers#51 ← phi( main::@28/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#66 ← phi( main::@28/(byte) keyboard_events_size#42 ) - (byte) current_piece_char#77 ← phi( main::@28/(byte) current_piece_char#49 ) - (byte) current_orientation#74 ← phi( main::@28/(byte) current_orientation#9 ) - (byte*) current_piece#70 ← phi( main::@28/(byte*) current_piece#51 ) + (byte) current_movedown_counter#40 ← phi( main::@28/(byte) current_movedown_counter#32 ) + (byte) keyboard_modifiers#48 ← phi( main::@28/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#60 ← phi( main::@28/(byte) keyboard_events_size#43 ) + (byte) render_screen_showing#34 ← phi( main::@28/(byte) render_screen_showing#25 ) + (byte) current_piece_char#70 ← phi( main::@28/(byte) current_piece_char#50 ) + (byte) current_orientation#71 ← phi( main::@28/(byte) current_orientation#9 ) + (byte*) current_piece#65 ← phi( main::@28/(byte*) current_piece#52 ) (byte*) current_piece_gfx#83 ← phi( main::@28/(byte*) current_piece_gfx#8 ) - (byte) current_xpos#88 ← phi( main::@28/(byte) current_xpos#78 ) - (byte) render_screen_show#32 ← phi( main::@28/(byte) render_screen_show#31 ) - (byte) current_ypos#48 ← phi( main::@28/(byte) current_ypos#57 ) - (byte) render_screen_render#24 ← phi( main::@28/(byte) render_screen_render#39 ) + (byte) current_xpos#89 ← phi( main::@28/(byte) current_xpos#79 ) + (byte) render_screen_show#40 ← phi( main::@28/(byte) render_screen_show#39 ) + (byte) current_ypos#49 ← phi( main::@28/(byte) current_ypos#58 ) + (byte) render_screen_render#25 ← phi( main::@28/(byte) render_screen_render#40 ) call render_playfield to:main::@29 main::@29: scope:[main] from main::@13 - (byte) current_movedown_counter#39 ← phi( main::@13/(byte) current_movedown_counter#43 ) - (byte) keyboard_modifiers#47 ← phi( main::@13/(byte) keyboard_modifiers#51 ) - (byte) keyboard_events_size#59 ← phi( main::@13/(byte) keyboard_events_size#66 ) - (byte) current_piece_char#69 ← phi( main::@13/(byte) current_piece_char#77 ) - (byte) current_orientation#70 ← phi( main::@13/(byte) current_orientation#74 ) - (byte*) current_piece#64 ← phi( main::@13/(byte*) current_piece#70 ) - (byte*) current_piece_gfx#66 ← phi( main::@13/(byte*) current_piece_gfx#83 ) - (byte) current_xpos#66 ← phi( main::@13/(byte) current_xpos#88 ) - (byte) render_screen_show#27 ← phi( main::@13/(byte) render_screen_show#32 ) - (byte) render_screen_render#32 ← phi( main::@13/(byte) render_screen_render#24 ) - (byte) current_ypos#24 ← phi( main::@13/(byte) current_ypos#48 ) + (byte) current_movedown_counter#37 ← phi( main::@13/(byte) current_movedown_counter#40 ) + (byte) keyboard_modifiers#44 ← phi( main::@13/(byte) keyboard_modifiers#48 ) + (byte) keyboard_events_size#53 ← phi( main::@13/(byte) keyboard_events_size#60 ) + (byte) render_screen_showing#30 ← phi( main::@13/(byte) render_screen_showing#34 ) + (byte) current_piece_char#62 ← phi( main::@13/(byte) current_piece_char#70 ) + (byte) current_orientation#66 ← phi( main::@13/(byte) current_orientation#71 ) + (byte*) current_piece#60 ← phi( main::@13/(byte*) current_piece#65 ) + (byte*) current_piece_gfx#67 ← phi( main::@13/(byte*) current_piece_gfx#83 ) + (byte) current_xpos#67 ← phi( main::@13/(byte) current_xpos#89 ) + (byte) render_screen_show#31 ← phi( main::@13/(byte) render_screen_show#40 ) + (byte) render_screen_render#33 ← phi( main::@13/(byte) render_screen_render#25 ) + (byte) current_ypos#24 ← phi( main::@13/(byte) current_ypos#49 ) call render_current to:main::@30 main::@30: scope:[main] from main::@29 - (byte) current_movedown_counter#36 ← phi( main::@29/(byte) current_movedown_counter#39 ) - (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#61 ← phi( main::@29/(byte) current_piece_char#69 ) - (byte) current_ypos#64 ← phi( main::@29/(byte) current_ypos#24 ) - (byte) current_xpos#89 ← phi( main::@29/(byte) current_xpos#66 ) - (byte*) current_piece_gfx#77 ← phi( main::@29/(byte*) current_piece_gfx#66 ) - (byte) current_orientation#65 ← phi( main::@29/(byte) current_orientation#70 ) - (byte*) current_piece#59 ← phi( main::@29/(byte*) current_piece#64 ) - (byte) render_screen_show#17 ← phi( main::@29/(byte) render_screen_show#27 ) - (byte) render_screen_render#17 ← phi( main::@29/(byte) render_screen_render#32 ) + (byte) current_movedown_counter#33 ← phi( main::@29/(byte) current_movedown_counter#37 ) + (byte) keyboard_modifiers#38 ← phi( main::@29/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#44 ← phi( main::@29/(byte) keyboard_events_size#53 ) + (byte) render_screen_showing#26 ← phi( main::@29/(byte) render_screen_showing#30 ) + (byte) current_piece_char#51 ← phi( main::@29/(byte) current_piece_char#62 ) + (byte) current_ypos#59 ← phi( main::@29/(byte) current_ypos#24 ) + (byte) current_xpos#80 ← phi( main::@29/(byte) current_xpos#67 ) + (byte*) current_piece_gfx#66 ← phi( main::@29/(byte*) current_piece_gfx#67 ) + (byte) current_orientation#61 ← phi( main::@29/(byte) current_orientation#66 ) + (byte*) current_piece#53 ← phi( main::@29/(byte*) current_piece#60 ) + (byte) render_screen_show#21 ← phi( main::@29/(byte) render_screen_show#31 ) + (byte) render_screen_render#18 ← phi( main::@29/(byte) render_screen_render#33 ) call render_screen_swap to:main::@31 main::@31: scope:[main] from main::@30 - (byte) current_movedown_counter#32 ← phi( main::@30/(byte) current_movedown_counter#36 ) - (byte) keyboard_modifiers#37 ← phi( main::@30/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@30/(byte) keyboard_events_size#52 ) - (byte) current_piece_char#50 ← phi( main::@30/(byte) current_piece_char#61 ) - (byte) current_ypos#58 ← phi( main::@30/(byte) current_ypos#64 ) - (byte) current_xpos#79 ← phi( main::@30/(byte) current_xpos#89 ) - (byte*) current_piece_gfx#65 ← phi( main::@30/(byte*) current_piece_gfx#77 ) - (byte) current_orientation#60 ← phi( main::@30/(byte) current_orientation#65 ) - (byte*) current_piece#52 ← phi( main::@30/(byte*) current_piece#59 ) - (byte) render_screen_show#14 ← phi( main::@30/(byte) render_screen_show#3 ) - (byte) render_screen_render#14 ← phi( main::@30/(byte) render_screen_render#3 ) - (byte) render_screen_render#5 ← (byte) render_screen_render#14 - (byte) render_screen_show#5 ← (byte) render_screen_show#14 - to:main::@7 + (byte) current_movedown_counter#24 ← phi( main::@30/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#30 ← phi( main::@30/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#33 ← phi( main::@30/(byte) keyboard_events_size#44 ) + (byte) render_screen_showing#17 ← phi( main::@30/(byte) render_screen_showing#26 ) + (byte) current_piece_char#34 ← phi( main::@30/(byte) current_piece_char#51 ) + (byte) current_ypos#46 ← phi( main::@30/(byte) current_ypos#59 ) + (byte) current_xpos#62 ← phi( main::@30/(byte) current_xpos#80 ) + (byte*) current_piece_gfx#49 ← phi( main::@30/(byte*) current_piece_gfx#66 ) + (byte) current_orientation#48 ← phi( main::@30/(byte) current_orientation#61 ) + (byte*) current_piece#39 ← phi( main::@30/(byte*) current_piece#53 ) + (byte) render_screen_show#15 ← phi( main::@30/(byte) render_screen_show#4 ) + (byte) render_screen_render#15 ← phi( main::@30/(byte) render_screen_render#4 ) + (byte) render_screen_render#6 ← (byte) render_screen_render#15 + (byte) render_screen_show#6 ← (byte) render_screen_show#15 + to:main::@1 main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#12 ← phi( main::@1/(byte) current_movedown_counter#19 ) (byte) keyboard_modifiers#16 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#19 ← phi( main::@1/(byte) keyboard_events_size#27 ) + (byte) render_screen_showing#9 ← phi( main::@1/(byte) render_screen_showing#13 ) (byte) current_piece_char#15 ← phi( main::@1/(byte) current_piece_char#24 ) (byte) current_ypos#21 ← phi( main::@1/(byte) current_ypos#37 ) (byte) current_xpos#27 ← phi( main::@1/(byte) current_xpos#45 ) (byte*) current_piece_gfx#20 ← phi( main::@1/(byte*) current_piece_gfx#34 ) (byte) current_orientation#24 ← phi( main::@1/(byte) current_orientation#39 ) (byte*) current_piece#16 ← phi( main::@1/(byte*) current_piece#28 ) - (byte) render_screen_render#15 ← phi( main::@1/(byte) render_screen_render#22 ) - (byte) render_screen_show#15 ← phi( main::@1/(byte) render_screen_show#20 ) - (byte) render_screen_show#6 ← (byte) render_screen_show#15 - (byte) render_screen_render#6 ← (byte) render_screen_render#15 + (byte) render_screen_render#16 ← phi( main::@1/(byte) render_screen_render#23 ) + (byte) render_screen_show#16 ← phi( main::@1/(byte) render_screen_show#23 ) + (byte) render_screen_show#7 ← (byte) render_screen_show#16 + (byte) render_screen_render#7 ← (byte) render_screen_render#16 (byte*) current_piece#7 ← (byte*) current_piece#16 (byte) current_orientation#10 ← (byte) current_orientation#24 (byte*) current_piece_gfx#9 ← (byte*) current_piece_gfx#20 (byte) current_xpos#10 ← (byte) current_xpos#27 (byte) current_ypos#7 ← (byte) current_ypos#21 (byte) current_piece_char#6 ← (byte) current_piece_char#15 + (byte) render_screen_showing#4 ← (byte) render_screen_showing#9 (byte) keyboard_events_size#8 ← (byte) keyboard_events_size#19 (byte) keyboard_modifiers#8 ← (byte) keyboard_modifiers#16 (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 return to:@return @32: scope:[] from @26 - (byte) irq_raster_next#15 ← phi( @26/(byte) irq_raster_next#16 ) - (byte) irq_cnt#11 ← phi( @26/(byte) irq_cnt#15 ) - (byte) irq_sprite_ptr#12 ← phi( @26/(byte) irq_sprite_ptr#13 ) - (byte) current_movedown_counter#20 ← phi( @26/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @26/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @26/(byte) keyboard_events_size#35 ) - (byte) current_piece_char#25 ← phi( @26/(byte) current_piece_char#36 ) - (byte) current_ypos#38 ← phi( @26/(byte) current_ypos#49 ) - (byte) current_xpos#46 ← phi( @26/(byte) current_xpos#64 ) - (byte*) current_piece_gfx#35 ← phi( @26/(byte*) current_piece_gfx#51 ) - (byte) current_orientation#40 ← phi( @26/(byte) current_orientation#50 ) - (byte*) current_piece#29 ← phi( @26/(byte*) current_piece#41 ) - (byte) render_screen_render#23 ← phi( @26/(byte) render_screen_render#33 ) - (byte) render_screen_show#21 ← phi( @26/(byte) render_screen_show#28 ) - (byte) irq_sprite_ypos#8 ← phi( @26/(byte) irq_sprite_ypos#13 ) + (byte) irq_raster_next#18 ← phi( @26/(byte) irq_raster_next#19 ) + (byte) irq_cnt#17 ← phi( @26/(byte) irq_cnt#19 ) + (byte) irq_sprite_ptr#15 ← phi( @26/(byte) irq_sprite_ptr#16 ) + (byte) current_movedown_counter#20 ← phi( @26/(byte) current_movedown_counter#27 ) + (byte) keyboard_modifiers#25 ← phi( @26/(byte) keyboard_modifiers#33 ) + (byte) keyboard_events_size#28 ← phi( @26/(byte) keyboard_events_size#36 ) + (byte) render_screen_showing#14 ← phi( @26/(byte) render_screen_showing#20 ) + (byte) current_piece_char#25 ← phi( @26/(byte) current_piece_char#37 ) + (byte) current_ypos#38 ← phi( @26/(byte) current_ypos#50 ) + (byte) current_xpos#46 ← phi( @26/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#35 ← phi( @26/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @26/(byte) current_orientation#51 ) + (byte*) current_piece#29 ← phi( @26/(byte*) current_piece#42 ) + (byte) render_screen_render#24 ← phi( @26/(byte) render_screen_render#34 ) + (byte) render_screen_show#24 ← phi( @26/(byte) render_screen_show#32 ) + (byte) irq_sprite_ypos#8 ← phi( @26/(byte) irq_sprite_ypos#15 ) call main to:@34 @34: scope:[] from @32 (byte) current_movedown_counter#13 ← phi( @32/(byte) current_movedown_counter#5 ) (byte) keyboard_modifiers#17 ← phi( @32/(byte) keyboard_modifiers#8 ) (byte) keyboard_events_size#20 ← phi( @32/(byte) keyboard_events_size#8 ) + (byte) render_screen_showing#10 ← phi( @32/(byte) render_screen_showing#4 ) (byte) current_piece_char#16 ← phi( @32/(byte) current_piece_char#6 ) (byte) current_ypos#22 ← phi( @32/(byte) current_ypos#7 ) (byte) current_xpos#28 ← phi( @32/(byte) current_xpos#10 ) (byte*) current_piece_gfx#21 ← phi( @32/(byte*) current_piece_gfx#9 ) (byte) current_orientation#25 ← phi( @32/(byte) current_orientation#10 ) (byte*) current_piece#17 ← phi( @32/(byte*) current_piece#7 ) - (byte) render_screen_render#16 ← phi( @32/(byte) render_screen_render#6 ) - (byte) render_screen_show#16 ← phi( @32/(byte) render_screen_show#6 ) - (byte) render_screen_show#7 ← (byte) render_screen_show#16 - (byte) render_screen_render#7 ← (byte) render_screen_render#16 + (byte) render_screen_render#17 ← phi( @32/(byte) render_screen_render#7 ) + (byte) render_screen_show#17 ← phi( @32/(byte) render_screen_show#7 ) + (byte) render_screen_show#8 ← (byte) render_screen_show#17 + (byte) render_screen_render#8 ← (byte) render_screen_render#17 (byte*) current_piece#8 ← (byte*) current_piece#17 (byte) current_orientation#11 ← (byte) current_orientation#25 (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#21 (byte) current_xpos#11 ← (byte) current_xpos#28 (byte) current_ypos#8 ← (byte) current_ypos#22 (byte) current_piece_char#7 ← (byte) current_piece_char#16 + (byte) render_screen_showing#5 ← (byte) render_screen_showing#10 (byte) keyboard_events_size#9 ← (byte) keyboard_events_size#20 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 @@ -3616,49 +3682,6 @@ 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 @@ -3670,7 +3693,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_cnt#15 (byte) irq_cnt#16 (byte) irq_cnt#17 +(byte) irq_cnt#18 +(byte) irq_cnt#19 (byte) irq_cnt#2 +(byte) irq_cnt#20 (byte) irq_cnt#3 (byte) irq_cnt#4 (byte) irq_cnt#5 @@ -3693,6 +3719,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_raster_next#19 (byte) irq_raster_next#2 (byte) irq_raster_next#20 +(byte) irq_raster_next#21 +(byte) irq_raster_next#22 +(byte) irq_raster_next#23 (byte) irq_raster_next#3 (byte) irq_raster_next#4 (byte) irq_raster_next#5 @@ -3708,6 +3737,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#14 +(byte) irq_sprite_ptr#15 +(byte) irq_sprite_ptr#16 +(byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#2 (byte) irq_sprite_ptr#3 (byte) irq_sprite_ptr#4 @@ -3731,6 +3763,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#2 (byte) irq_sprite_ypos#20 +(byte) irq_sprite_ypos#21 +(byte) irq_sprite_ypos#22 +(byte) irq_sprite_ypos#23 (byte) irq_sprite_ypos#3 (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#5 @@ -4058,14 +4093,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte[8]) keyboard_scan_values (byte[8]) keyboard_scan_values#0 (void()) main() +(byte~) main::$11 (byte~) main::$12 (byte~) main::$13 (byte~) main::$14 -(byte~) main::$15 +(bool~) main::$15 (bool~) main::$16 -(bool~) main::$17 (bool~) main::$8 -(byte~) main::$9 (label) main::@1 (label) main::@13 (label) main::@15 @@ -4897,10 +4931,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) render_screen_render#59 (byte) render_screen_render#6 (byte) render_screen_render#60 -(byte) render_screen_render#61 -(byte) render_screen_render#62 -(byte) render_screen_render#63 -(byte) render_screen_render#64 (byte) render_screen_render#7 (byte) render_screen_render#8 (byte) render_screen_render#9 @@ -4953,10 +4983,61 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) render_screen_show#5 (byte) render_screen_show#50 (byte) render_screen_show#51 +(byte) render_screen_show#52 +(byte) render_screen_show#53 +(byte) render_screen_show#54 +(byte) render_screen_show#55 +(byte) render_screen_show#56 (byte) render_screen_show#6 (byte) render_screen_show#7 (byte) render_screen_show#8 (byte) render_screen_show#9 +(byte) render_screen_showing +(byte) render_screen_showing#0 +(byte) render_screen_showing#1 +(byte) render_screen_showing#10 +(byte) render_screen_showing#11 +(byte) render_screen_showing#12 +(byte) render_screen_showing#13 +(byte) render_screen_showing#14 +(byte) render_screen_showing#15 +(byte) render_screen_showing#16 +(byte) render_screen_showing#17 +(byte) render_screen_showing#18 +(byte) render_screen_showing#19 +(byte) render_screen_showing#2 +(byte) render_screen_showing#20 +(byte) render_screen_showing#21 +(byte) render_screen_showing#22 +(byte) render_screen_showing#23 +(byte) render_screen_showing#24 +(byte) render_screen_showing#25 +(byte) render_screen_showing#26 +(byte) render_screen_showing#27 +(byte) render_screen_showing#28 +(byte) render_screen_showing#29 +(byte) render_screen_showing#3 +(byte) render_screen_showing#30 +(byte) render_screen_showing#31 +(byte) render_screen_showing#32 +(byte) render_screen_showing#33 +(byte) render_screen_showing#34 +(byte) render_screen_showing#35 +(byte) render_screen_showing#36 +(byte) render_screen_showing#37 +(byte) render_screen_showing#38 +(byte) render_screen_showing#39 +(byte) render_screen_showing#4 +(byte) render_screen_showing#40 +(byte) render_screen_showing#41 +(byte) render_screen_showing#42 +(byte) render_screen_showing#43 +(byte) render_screen_showing#44 +(byte) render_screen_showing#5 +(byte) render_screen_showing#6 +(byte) render_screen_showing#7 +(byte) render_screen_showing#8 +(byte) render_screen_showing#9 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() @@ -5068,6 +5149,57 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) sprites_init::xpos#0 (byte) sprites_init::xpos#1 (byte) sprites_init::xpos#2 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(bool~) sprites_irq::$0 +(bool~) sprites_irq::$1 +(bool~) sprites_irq::$2 +(byte~) sprites_irq::$3 +(byte~) sprites_irq::$4 +(bool~) sprites_irq::$5 +(bool~) sprites_irq::$6 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 +(byte) sprites_irq::ptr#1 +(byte) sprites_irq::ptr#2 +(byte) sprites_irq::ptr#3 +(byte) sprites_irq::ptr#4 +(byte) sprites_irq::ptr#5 +(byte) sprites_irq::ptr#6 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 +(byte) sprites_irq::raster_next#1 +(byte) sprites_irq::raster_next#2 +(byte) sprites_irq::raster_next#3 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word) sprites_irq::toSpritePtr2_$0#0 +(word~) sprites_irq::toSpritePtr2_$1 +(word) sprites_irq::toSpritePtr2_$1#0 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_$2#0 +(label) sprites_irq::toSpritePtr2_@return +(byte) sprites_irq::toSpritePtr2_return +(byte) sprites_irq::toSpritePtr2_return#0 +(byte) sprites_irq::toSpritePtr2_return#1 +(byte) sprites_irq::toSpritePtr2_return#2 +(byte) sprites_irq::toSpritePtr2_return#3 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte*) sprites_irq::toSpritePtr2_sprite#0 +(byte*) sprites_irq::toSpritePtr2_sprite#1 +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 (void()) sprites_irq_init() (void()*~) sprites_irq_init::$0 (label) sprites_irq_init::@return @@ -5096,7 +5228,7 @@ Inversing boolean not (bool~) keyboard_event_scan::$24 ← (byte~) keyboard_even 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::$7 ← (byte) render_current::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_current::$6 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) render_current::$9 ← (byte) render_current::xpos#3 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_current::$8 ← (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~) sprites_irq::$6 ← (byte~) sprites_irq::$4 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (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 @@ -5114,28 +5246,27 @@ Inversing boolean not (bool~) play_collision::$13 ← *((byte*) play_collision:: Inversing boolean not (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#15 + (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#15 + (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::$17 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (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~) $4 (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 candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_showing#6 (byte) render_screen_showing#2 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 Alias (byte*) fill::end#0 = (byte*~) fill::$0 Alias (byte*) fill::addr#0 = (byte*) fill::start#1 -Alias (byte) render_screen_show#21 = (byte) render_screen_show#50 (byte) render_screen_show#51 (byte) render_screen_show#49 (byte) render_screen_show#48 (byte) render_screen_show#47 (byte) render_screen_show#45 (byte) render_screen_show#42 (byte) render_screen_show#39 (byte) render_screen_show#36 (byte) render_screen_show#33 (byte) render_screen_show#29 (byte) render_screen_show#28 -Alias (byte) render_screen_render#23 = (byte) render_screen_render#63 (byte) render_screen_render#64 (byte) render_screen_render#60 (byte) render_screen_render#58 (byte) render_screen_render#56 (byte) render_screen_render#54 (byte) render_screen_render#52 (byte) render_screen_render#50 (byte) render_screen_render#47 (byte) render_screen_render#43 (byte) render_screen_render#37 (byte) render_screen_render#33 -Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#95 (byte*) current_piece_gfx#96 (byte*) current_piece_gfx#94 (byte*) current_piece_gfx#93 (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#90 (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#61 (byte*) current_piece_gfx#51 -Alias (byte) current_xpos#100 = (byte) current_xpos#105 (byte) current_xpos#106 (byte) current_xpos#104 (byte) current_xpos#103 (byte) current_xpos#102 (byte) current_xpos#101 (byte) current_xpos#96 (byte) current_xpos#91 (byte) current_xpos#83 (byte) current_xpos#73 (byte) current_xpos#64 (byte) current_xpos#46 -Alias (byte) current_ypos#38 = (byte) current_ypos#79 (byte) current_ypos#80 (byte) current_ypos#78 (byte) current_ypos#77 (byte) current_ypos#76 (byte) current_ypos#75 (byte) current_ypos#74 (byte) current_ypos#70 (byte) current_ypos#65 (byte) current_ypos#59 (byte) current_ypos#54 (byte) current_ypos#49 -Alias (byte) current_piece_char#25 = (byte) current_piece_char#83 (byte) current_piece_char#84 (byte) current_piece_char#82 (byte) current_piece_char#81 (byte) current_piece_char#80 (byte) current_piece_char#79 (byte) current_piece_char#78 (byte) current_piece_char#71 (byte) current_piece_char#64 (byte) current_piece_char#53 (byte) current_piece_char#43 (byte) current_piece_char#36 +Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#95 (byte*) current_piece_gfx#96 (byte*) current_piece_gfx#94 (byte*) current_piece_gfx#93 (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#90 (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#52 +Alias (byte) current_xpos#100 = (byte) current_xpos#105 (byte) current_xpos#106 (byte) current_xpos#104 (byte) current_xpos#103 (byte) current_xpos#102 (byte) current_xpos#101 (byte) current_xpos#96 (byte) current_xpos#91 (byte) current_xpos#84 (byte) current_xpos#74 (byte) current_xpos#65 (byte) current_xpos#46 +Alias (byte) current_ypos#38 = (byte) current_ypos#79 (byte) current_ypos#80 (byte) current_ypos#78 (byte) current_ypos#77 (byte) current_ypos#76 (byte) current_ypos#75 (byte) current_ypos#74 (byte) current_ypos#70 (byte) current_ypos#65 (byte) current_ypos#60 (byte) current_ypos#55 (byte) current_ypos#50 +Alias (byte) current_piece_char#25 = (byte) current_piece_char#83 (byte) current_piece_char#84 (byte) current_piece_char#82 (byte) current_piece_char#81 (byte) current_piece_char#80 (byte) current_piece_char#79 (byte) current_piece_char#78 (byte) current_piece_char#72 (byte) current_piece_char#65 (byte) current_piece_char#54 (byte) current_piece_char#44 (byte) current_piece_char#37 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 Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#8 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#44 (byte) keyboard_events_size#60 +Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#37 (byte) keyboard_events_size#45 (byte) keyboard_events_size#61 Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$0 (byte) keyboard_event_scan::row_scan#4 Alias (byte) keyboard_event_scan::keycode#1 = (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 -Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#37 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 +Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#38 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#6 (byte) keyboard_event_scan::row_scan#8 (byte) keyboard_event_scan::row_scan#2 (byte) keyboard_event_scan::row_scan#9 (byte) keyboard_event_scan::row_scan#7 Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#8 (byte) keyboard_event_scan::col#6 (byte) keyboard_event_scan::col#4 (byte) keyboard_event_scan::col#7 (byte) keyboard_event_scan::col#5 Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#13 (byte) keyboard_event_scan::keycode#8 (byte) keyboard_event_scan::keycode#9 (byte) keyboard_event_scan::keycode#5 (byte) keyboard_event_scan::keycode#6 @@ -5144,21 +5275,21 @@ Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$9 Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#5 Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#9 Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#61 -Alias (byte) keyboard_events_size#54 = (byte) keyboard_events_size#74 (byte) keyboard_events_size#71 (byte) keyboard_events_size#70 +Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#62 +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#62 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#67 +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 -Alias (byte) keyboard_events_size#45 = (byte) keyboard_events_size#46 (byte) keyboard_events_size#55 +Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#47 (byte) keyboard_events_size#56 Alias (byte) keyboard_modifiers#3 = (byte~) keyboard_event_scan::$21 Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#3 Alias (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#21 (byte) keyboard_modifiers#28 (byte) keyboard_modifiers#22 -Alias (byte) keyboard_events_size#23 = (byte) keyboard_events_size#31 (byte) keyboard_events_size#38 (byte) keyboard_events_size#24 +Alias (byte) keyboard_events_size#23 = (byte) keyboard_events_size#31 (byte) keyboard_events_size#39 (byte) keyboard_events_size#24 Alias (byte) keyboard_modifiers#4 = (byte~) keyboard_event_scan::$25 Alias (byte) keyboard_modifiers#5 = (byte~) keyboard_event_scan::$29 Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#3 @@ -5167,8 +5298,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#77 (byte) keyboard_events_size#75 (byte) keyboard_events_size#72 (byte) keyboard_events_size#68 (byte) keyboard_events_size#64 (byte) keyboard_events_size#56 (byte) keyboard_events_size#47 (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#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 (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#40 (byte) keyboard_events_size#36 (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#34 (byte) keyboard_modifiers#33 (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_1#0 = (byte*~) $1 Alias (byte*) PLAYFIELD_SPRITE_PTRS_2#0 = (byte*~) $2 @@ -5179,16 +5310,17 @@ 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_init::li_1#0 = (byte*~) render_init::$17 Alias (byte*) render_init::li_2#0 = (byte*~) render_init::$20 -Alias (byte) render_screen_show#0 = (byte) render_screen_show#8 (byte) render_screen_show#1 -Alias (byte) render_screen_render#0 = (byte) render_screen_render#8 (byte) render_screen_render#1 +Alias (byte) render_screen_show#1 = (byte) render_screen_show#9 (byte) render_screen_show#2 +Alias (byte) render_screen_render#1 = (byte) render_screen_render#9 (byte) render_screen_render#2 +Alias (byte) render_screen_show#10 = (byte) render_screen_show#41 (byte) render_screen_show#33 (byte) render_screen_show#25 (byte) render_screen_show#19 (byte) render_screen_show#42 (byte) render_screen_show#34 (byte) render_screen_show#26 (byte) render_screen_show#20 Alias (byte*) render_show::toD0181_screen#0 = (byte*) render_show::toD0181_screen#1 Alias (byte*) render_show::toD0181_gfx#0 = (byte*) render_show::toD0181_gfx#1 Alias (byte) render_show::toD0181_return#0 = (byte) render_show::toD0181_$8#0 (byte) render_show::toD0181_return#2 (byte) render_show::toD0181_return#1 (byte) render_show::toD0181_return#3 (byte~) render_show::$2 (byte) render_show::d018val#1 Alias (byte*) render_show::toD0182_screen#0 = (byte*) render_show::toD0182_screen#1 Alias (byte*) render_show::toD0182_gfx#0 = (byte*) render_show::toD0182_gfx#1 Alias (byte) render_show::toD0182_return#0 = (byte) render_show::toD0182_$8#0 (byte) render_show::toD0182_return#2 (byte) render_show::toD0182_return#1 (byte) render_show::toD0182_return#3 (byte~) render_show::$1 (byte) render_show::d018val#2 -Alias (byte) render_screen_render#10 = (byte) render_screen_render#2 (byte) render_screen_render#3 -Alias (byte) render_screen_show#11 = (byte) render_screen_show#2 (byte) render_screen_show#3 +Alias (byte) render_screen_render#11 = (byte) render_screen_render#3 (byte) render_screen_render#4 +Alias (byte) render_screen_show#13 = (byte) render_screen_show#3 (byte) render_screen_show#4 Alias (byte*) render_screen_original::orig#0 = (byte*~) render_screen_original::$1 Alias (byte) render_screen_original::c#0 = (byte/signed word/word/dword/signed dword~) render_screen_original::$3 (byte) render_screen_original::c#3 Alias (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#9 @@ -5202,82 +5334,90 @@ Alias (byte*) render_screen_original::screen#12 = (byte*) render_screen_original Alias (byte*) render_screen_original::orig#7 = (byte*) render_screen_original::orig#8 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_screen_render#19 = (byte) render_screen_render#26 +Alias (byte) render_screen_render#20 = (byte) render_screen_render#27 Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 Alias (byte) render_current::ypos2#0 = (byte~) render_current::$0 -Alias (byte) render_screen_render#12 = (byte) render_screen_render#20 (byte) render_screen_render#36 +Alias (byte) render_screen_render#13 = (byte) render_screen_render#21 (byte) render_screen_render#37 Alias (byte) render_current::ypos2#2 = (byte) render_current::ypos2#3 (byte) render_current::ypos2#6 -Alias (byte) current_xpos#12 = (byte) current_xpos#29 (byte) current_xpos#68 -Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#36 (byte*) current_piece_gfx#67 +Alias (byte) current_xpos#12 = (byte) current_xpos#29 (byte) current_xpos#69 +Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#36 (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#37 = (byte) current_piece_char#51 (byte) current_piece_char#70 +Alias (byte) current_piece_char#38 = (byte) current_piece_char#52 (byte) current_piece_char#71 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#17 = (byte) current_piece_char#26 (byte) current_piece_char#52 (byte) current_piece_char#8 +Alias (byte) current_piece_char#17 = (byte) current_piece_char#26 (byte) current_piece_char#53 (byte) current_piece_char#8 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#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#11 = (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#38 (byte*) current_piece_gfx#37 +Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#38 (byte*) current_piece_gfx#37 Alias (byte) render_current::i#10 = (byte) render_current::i#11 (byte) render_current::i#2 (byte) render_current::i#9 -Alias (byte) render_screen_render#40 = (byte) render_screen_render#46 (byte) render_screen_render#41 (byte) render_screen_render#42 -Alias (byte) current_xpos#80 = (byte) current_xpos#90 (byte) current_xpos#81 (byte) current_xpos#82 +Alias (byte) render_screen_render#41 = (byte) render_screen_render#47 (byte) render_screen_render#42 (byte) render_screen_render#43 +Alias (byte) current_xpos#81 = (byte) current_xpos#90 (byte) current_xpos#82 (byte) current_xpos#83 +Alias (byte) render_screen_show#0 = (byte) render_screen_show#55 (byte) render_screen_show#52 (byte) render_screen_show#49 (byte) render_screen_show#46 (byte) render_screen_show#43 (byte) render_screen_show#35 (byte) render_screen_show#32 (byte) render_screen_show#24 +Alias (byte) render_screen_render#0 = (byte) render_screen_render#55 (byte) render_screen_render#53 (byte) render_screen_render#51 (byte) render_screen_render#48 (byte) render_screen_render#44 (byte) render_screen_render#38 (byte) render_screen_render#34 (byte) render_screen_render#24 +Alias (byte) render_screen_showing#0 = (byte) render_screen_showing#41 (byte) render_screen_showing#38 (byte) render_screen_showing#35 (byte) render_screen_showing#31 (byte) render_screen_showing#27 (byte) render_screen_showing#21 (byte) render_screen_showing#20 (byte) render_screen_showing#14 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_sprite_ypos#0 = (byte) irq_sprite_ypos#23 (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#8 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#4 (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#12 +Alias (byte) render_screen_showing#11 = (byte) render_screen_showing#7 +Alias (byte) irq_cnt#12 = (byte) irq_cnt#9 (byte) irq_cnt#6 (byte) irq_cnt#7 +Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#14 (byte) irq_raster_next#16 (byte) irq_raster_next#11 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#12 +Alias (byte) sprites_irq::ptr#0 = (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 +Alias (byte*) sprites_irq::toSpritePtr2_sprite#0 = (byte*) sprites_irq::toSpritePtr2_sprite#1 +Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#15 (byte) irq_raster_next#12 (byte) irq_raster_next#8 +Alias (byte) irq_cnt#14 = (byte) irq_cnt#18 (byte) irq_cnt#2 (byte) irq_cnt#16 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#17 +Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#7 +Alias (byte) irq_sprite_ypos#6 = (byte) irq_sprite_ypos#9 +Alias (byte) irq_sprite_ptr#5 = (byte) irq_sprite_ptr#8 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#13 +Alias (byte) sprites_irq::raster_next#0 = (byte) sprites_irq::raster_next#3 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#11 +Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#5 +Alias (byte) irq_sprite_ypos#13 = (byte) irq_sprite_ypos#14 +Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#14 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#8 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) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#9 +Alias (byte) irq_cnt#0 = (byte) irq_cnt#20 (byte) irq_cnt#19 (byte) irq_cnt#17 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#50 = (byte) current_ypos#51 (byte) current_ypos#60 (byte) current_ypos#61 (byte) current_ypos#52 -Alias (byte) current_xpos#69 = (byte) current_xpos#70 (byte) current_xpos#84 (byte) current_xpos#85 (byte) current_xpos#71 -Alias (byte) current_orientation#51 = (byte) current_orientation#52 (byte) current_orientation#61 (byte) current_orientation#62 (byte) current_orientation#53 -Alias (byte*) current_piece#53 = (byte*) current_piece#54 (byte*) current_piece#60 (byte*) current_piece#61 (byte*) current_piece#55 -Alias (byte*) current_piece_gfx#69 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#71 -Alias (byte) current_piece_char#54 = (byte) current_piece_char#55 (byte) current_piece_char#65 (byte) current_piece_char#66 (byte) current_piece_char#56 +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#52 = (byte) current_orientation#53 (byte) current_orientation#62 (byte) current_orientation#63 (byte) current_orientation#54 +Alias (byte*) current_piece#54 = (byte*) current_piece#55 (byte*) current_piece#61 (byte*) current_piece#62 (byte*) current_piece#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_movedown_counter#1 = (byte) current_movedown_counter#28 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_orientation#67 = (byte) current_orientation#68 +Alias (byte*) current_piece#66 = (byte*) current_piece#67 Alias (byte*) current_piece_gfx#85 = (byte*) current_piece_gfx#86 -Alias (byte) current_piece_char#72 = (byte) current_piece_char#73 +Alias (byte) current_piece_char#73 = (byte) current_piece_char#74 Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 Alias (byte) current_ypos#39 = (byte) current_ypos#40 Alias (byte) current_xpos#49 = (byte) current_xpos#50 Alias (byte) current_orientation#41 = (byte) current_orientation#42 -Alias (byte) current_movedown_counter#28 = (byte) current_movedown_counter#8 -Alias (byte*) current_piece#42 = (byte*) current_piece#43 -Alias (byte*) current_piece_gfx#55 = (byte*) current_piece_gfx#56 -Alias (byte) current_piece_char#39 = (byte) current_piece_char#40 +Alias (byte) current_movedown_counter#29 = (byte) current_movedown_counter#8 +Alias (byte*) current_piece#43 = (byte*) current_piece#44 +Alias (byte*) current_piece_gfx#56 = (byte*) current_piece_gfx#57 +Alias (byte) current_piece_char#40 = (byte) current_piece_char#41 Alias (byte) current_movedown_counter#18 = (byte) current_movedown_counter#22 Alias (byte) current_ypos#10 = (byte) current_ypos#28 (byte) current_ypos#25 (byte) current_ypos#26 (byte) current_ypos#11 (byte) current_ypos#34 (byte) current_ypos#41 (byte) current_ypos#27 -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#24 = (byte*) current_piece_gfx#25 (byte*) current_piece_gfx#39 (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#57 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#40 -Alias (byte) current_xpos#13 = (byte) current_xpos#32 (byte) current_xpos#30 (byte) current_xpos#72 (byte) current_xpos#52 (byte) current_xpos#58 (byte) current_xpos#51 (byte) current_xpos#31 -Alias (byte) current_piece_char#18 = (byte) current_piece_char#19 (byte) current_piece_char#27 (byte) current_piece_char#57 (byte) current_piece_char#41 (byte) current_piece_char#29 (byte) current_piece_char#42 (byte) current_piece_char#28 +Alias (byte*) current_piece#18 = (byte*) current_piece#19 (byte*) current_piece#30 (byte*) current_piece#22 (byte*) current_piece#45 (byte*) current_piece#32 (byte*) current_piece#46 (byte*) current_piece#31 +Alias (byte) current_orientation#12 = (byte) current_orientation#28 (byte) current_orientation#26 (byte) current_orientation#55 (byte) current_orientation#44 (byte) current_orientation#56 (byte) current_orientation#43 (byte) current_orientation#27 +Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#25 (byte*) current_piece_gfx#39 (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#40 +Alias (byte) current_xpos#13 = (byte) current_xpos#32 (byte) current_xpos#30 (byte) current_xpos#73 (byte) current_xpos#52 (byte) current_xpos#58 (byte) current_xpos#51 (byte) current_xpos#31 +Alias (byte) current_piece_char#18 = (byte) current_piece_char#19 (byte) current_piece_char#27 (byte) current_piece_char#58 (byte) current_piece_char#42 (byte) current_piece_char#29 (byte) current_piece_char#43 (byte) current_piece_char#28 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 @@ -5308,8 +5448,8 @@ Alias (byte) current_xpos#19 = (byte) current_xpos#3 Alias (byte) current_orientation#17 = (byte) current_orientation#32 (byte) current_orientation#33 (byte) current_orientation#18 (byte) current_orientation#35 Alias (byte) current_xpos#39 = (byte) current_xpos#56 (byte) current_xpos#57 (byte) current_xpos#40 Alias (byte) current_ypos#32 = (byte) current_ypos#42 (byte) current_ypos#43 (byte) current_ypos#33 -Alias (byte*) current_piece#35 = (byte*) current_piece#46 (byte*) current_piece#47 (byte*) current_piece#36 -Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#74 +Alias (byte*) current_piece#35 = (byte*) current_piece#47 (byte*) current_piece#48 (byte*) current_piece#36 +Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#42 (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 @@ -5319,12 +5459,12 @@ Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#2 Alias (byte) play_collision::return#13 = (byte) play_collision::return#3 Alias (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#5 (byte) play_move_rotate::orientation#4 Alias (byte*) current_piece#11 = (byte*) current_piece#21 (byte*) current_piece#25 -Alias (byte) current_orientation#34 = (byte) current_orientation#45 (byte) current_orientation#56 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#60 +Alias (byte) current_orientation#34 = (byte) current_orientation#45 (byte) current_orientation#57 +Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#61 Alias (byte*) current_piece_gfx#3 = (byte*~) play_move_rotate::$9 -Alias (byte*) current_piece#0 = (byte*) current_piece#41 (byte*) current_piece#29 -Alias (byte) current_orientation#0 = (byte) current_orientation#50 (byte) current_orientation#40 -Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 +Alias (byte*) current_piece#0 = (byte*) current_piece#42 (byte*) current_piece#29 +Alias (byte) current_orientation#0 = (byte) current_orientation#51 (byte) current_orientation#40 +Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#27 (byte) current_movedown_counter#20 Alias (byte*) play_collision::piece_gfx#0 = (byte*~) play_collision::$0 Alias (byte) play_collision::ypos2#0 = (byte~) play_collision::$1 Alias (byte) play_collision::col#0 = (byte) play_collision::xpos#4 @@ -5351,13 +5491,13 @@ Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#46 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#42 = (byte) current_xpos#59 Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 Alias (byte) play_lock_current::i#4 = (byte) play_lock_current::i#5 -Alias (byte) current_piece_char#31 = (byte) current_piece_char#45 +Alias (byte) current_piece_char#31 = (byte) current_piece_char#46 Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 Alias (byte) play_spawn_current::piece_idx#1 = (byte~) play_spawn_current::$2 Alias (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#3 @@ -5380,90 +5520,96 @@ 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) render_screen_show#18 = (byte) render_screen_show#22 -Alias (byte) render_screen_render#21 = (byte) render_screen_render#29 -Alias (byte*) current_piece#26 = (byte*) current_piece#62 (byte*) current_piece#67 (byte*) current_piece#57 (byte*) current_piece#48 (byte*) current_piece#37 -Alias (byte) current_orientation#36 = (byte) current_orientation#68 (byte) current_orientation#71 (byte) current_orientation#63 (byte) current_orientation#57 (byte) current_orientation#46 -Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#87 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#47 -Alias (byte) current_xpos#43 = (byte) current_xpos#94 (byte) current_xpos#97 (byte) current_xpos#86 (byte) current_xpos#76 (byte) current_xpos#60 -Alias (byte) current_ypos#35 = (byte) current_ypos#68 (byte) current_ypos#71 (byte) current_ypos#62 (byte) current_ypos#55 (byte) current_ypos#44 -Alias (byte) current_piece_char#22 = (byte) current_piece_char#67 (byte) current_piece_char#74 (byte) current_piece_char#58 (byte) current_piece_char#46 (byte) current_piece_char#32 -Alias (byte) keyboard_events_size#32 = (byte) keyboard_events_size#76 (byte) keyboard_events_size#78 (byte) keyboard_events_size#73 (byte) keyboard_events_size#69 (byte) keyboard_events_size#65 (byte) keyboard_events_size#57 (byte) keyboard_events_size#48 (byte) keyboard_events_size#40 -Alias (byte) keyboard_modifiers#29 = (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#59 (byte) keyboard_modifiers#55 (byte) keyboard_modifiers#53 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#34 -Alias (byte) current_movedown_counter#23 = (byte) current_movedown_counter#46 (byte) current_movedown_counter#47 (byte) current_movedown_counter#45 (byte) current_movedown_counter#44 (byte) current_movedown_counter#40 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#29 -Alias (byte) render_screen_show#12 = (byte) render_screen_show#4 (byte) render_screen_show#43 (byte) render_screen_show#40 (byte) render_screen_show#37 (byte) render_screen_show#34 (byte) render_screen_show#30 (byte) render_screen_show#23 -Alias (byte) render_screen_render#13 = (byte) render_screen_render#4 (byte) render_screen_render#48 (byte) render_screen_render#44 (byte) render_screen_render#38 (byte) render_screen_render#25 (byte) render_screen_render#34 (byte) render_screen_render#30 -Alias (byte*) current_piece#14 = (byte*) current_piece#5 (byte*) current_piece#49 (byte*) current_piece#38 -Alias (byte) current_orientation#21 = (byte) current_orientation#7 (byte) current_orientation#58 (byte) current_orientation#47 -Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#48 -Alias (byte) current_xpos#24 = (byte) current_xpos#7 (byte) current_xpos#65 (byte) current_xpos#61 +Alias (byte) render_screen_show#22 = (byte) render_screen_show#27 +Alias (byte) render_screen_render#22 = (byte) render_screen_render#30 +Alias (byte*) current_piece#26 = (byte*) current_piece#63 (byte*) current_piece#68 (byte*) current_piece#58 (byte*) current_piece#49 (byte*) current_piece#37 +Alias (byte) current_orientation#36 = (byte) current_orientation#69 (byte) current_orientation#72 (byte) current_orientation#64 (byte) current_orientation#58 (byte) current_orientation#46 +Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#87 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#47 +Alias (byte) current_xpos#43 = (byte) current_xpos#94 (byte) current_xpos#97 (byte) current_xpos#87 (byte) current_xpos#77 (byte) current_xpos#60 +Alias (byte) current_ypos#35 = (byte) current_ypos#68 (byte) current_ypos#71 (byte) current_ypos#63 (byte) current_ypos#56 (byte) current_ypos#44 +Alias (byte) current_piece_char#22 = (byte) current_piece_char#68 (byte) current_piece_char#75 (byte) current_piece_char#59 (byte) current_piece_char#47 (byte) current_piece_char#32 +Alias (byte) render_screen_showing#16 = (byte) render_screen_showing#43 (byte) render_screen_showing#44 (byte) render_screen_showing#42 (byte) render_screen_showing#39 (byte) render_screen_showing#36 (byte) render_screen_showing#32 (byte) render_screen_showing#28 (byte) render_screen_showing#22 +Alias (byte) keyboard_events_size#32 = (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#41 +Alias (byte) keyboard_modifiers#29 = (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#35 +Alias (byte) current_movedown_counter#23 = (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#38 (byte) current_movedown_counter#34 (byte) current_movedown_counter#30 +Alias (byte) render_screen_show#14 = (byte) render_screen_show#5 (byte) render_screen_show#53 (byte) render_screen_show#50 (byte) render_screen_show#47 (byte) render_screen_show#44 (byte) render_screen_show#36 (byte) render_screen_show#28 +Alias (byte) render_screen_render#14 = (byte) render_screen_render#5 (byte) render_screen_render#49 (byte) render_screen_render#45 (byte) render_screen_render#39 (byte) render_screen_render#26 (byte) render_screen_render#35 (byte) render_screen_render#31 +Alias (byte*) current_piece#14 = (byte*) current_piece#5 (byte*) current_piece#50 (byte*) current_piece#38 +Alias (byte) current_orientation#21 = (byte) current_orientation#7 (byte) current_orientation#59 (byte) current_orientation#47 +Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#48 +Alias (byte) current_xpos#24 = (byte) current_xpos#7 (byte) current_xpos#66 (byte) current_xpos#61 Alias (byte) current_ypos#19 = (byte) current_ypos#5 (byte) current_ypos#23 (byte) current_ypos#45 -Alias (byte) current_piece_char#13 = (byte) current_piece_char#4 (byte) current_piece_char#47 (byte) current_piece_char#33 -Alias (byte) render_screen_show#15 = (byte) render_screen_show#25 (byte) render_screen_show#20 (byte) render_screen_show#6 -Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#49 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 -Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 -Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#41 (byte) current_movedown_counter#19 (byte) current_movedown_counter#5 +Alias (byte) current_piece_char#13 = (byte) current_piece_char#4 (byte) current_piece_char#48 (byte) current_piece_char#33 +Alias (byte) render_screen_show#16 = (byte) render_screen_show#37 (byte) render_screen_show#23 (byte) render_screen_show#7 +Alias (byte) render_screen_showing#13 = (byte) render_screen_showing#23 (byte) render_screen_showing#9 (byte) render_screen_showing#4 +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#21 = (byte) current_ypos#72 (byte) current_ypos#37 (byte) current_ypos#7 -Alias (byte*) current_piece#16 = (byte*) current_piece#68 (byte*) current_piece#28 (byte*) current_piece#7 -Alias (byte) current_orientation#10 = (byte) current_orientation#72 (byte) current_orientation#39 (byte) current_orientation#24 +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#20 = (byte*) current_piece_gfx#88 (byte*) current_piece_gfx#34 (byte*) current_piece_gfx#9 Alias (byte) current_xpos#10 = (byte) current_xpos#98 (byte) current_xpos#45 (byte) current_xpos#27 -Alias (byte) current_piece_char#15 = (byte) current_piece_char#75 (byte) current_piece_char#24 (byte) current_piece_char#6 -Alias (byte) render_screen_render#15 = (byte) render_screen_render#61 (byte) render_screen_render#22 (byte) render_screen_render#6 -Alias (byte) render_screen_show#13 = (byte) render_screen_show#26 (byte) render_screen_show#19 (byte) render_screen_show#46 (byte) render_screen_show#44 (byte) render_screen_show#41 (byte) render_screen_show#38 (byte) render_screen_show#35 (byte) render_screen_show#31 (byte) render_screen_show#32 (byte) render_screen_show#27 (byte) render_screen_show#17 -Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#41 (byte) keyboard_events_size#34 -Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#31 -Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#38 (byte) current_movedown_counter#34 (byte) current_movedown_counter#30 (byte) current_movedown_counter#25 -Alias (byte) current_ypos#36 = (byte) current_ypos#73 (byte) current_ypos#69 (byte) current_ypos#63 (byte) current_ypos#56 (byte) current_ypos#47 -Alias (byte*) current_piece#27 = (byte*) current_piece#69 (byte*) current_piece#63 (byte*) current_piece#58 (byte*) current_piece#50 (byte*) current_piece#40 -Alias (byte) current_orientation#37 = (byte) current_orientation#73 (byte) current_orientation#69 (byte) current_orientation#64 (byte) current_orientation#59 (byte) current_orientation#49 -Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#50 -Alias (byte) current_xpos#44 = (byte) current_xpos#99 (byte) current_xpos#95 (byte) current_xpos#87 (byte) current_xpos#77 (byte) current_xpos#63 -Alias (byte) current_piece_char#23 = (byte) current_piece_char#76 (byte) current_piece_char#68 (byte) current_piece_char#59 (byte) current_piece_char#48 (byte) current_piece_char#35 -Alias (byte) render_screen_render#17 = (byte) render_screen_render#62 (byte) render_screen_render#59 (byte) render_screen_render#57 (byte) render_screen_render#55 (byte) render_screen_render#53 (byte) render_screen_render#51 (byte) render_screen_render#49 (byte) render_screen_render#45 (byte) render_screen_render#39 (byte) render_screen_render#24 (byte) render_screen_render#32 +Alias (byte) current_piece_char#15 = (byte) current_piece_char#76 (byte) current_piece_char#24 (byte) current_piece_char#6 +Alias (byte) render_screen_render#16 = (byte) render_screen_render#59 (byte) render_screen_render#23 (byte) render_screen_render#7 +Alias (byte) render_screen_show#18 = (byte) render_screen_show#38 (byte) render_screen_show#30 (byte) render_screen_show#56 (byte) render_screen_show#54 (byte) render_screen_show#51 (byte) render_screen_show#48 (byte) render_screen_show#45 (byte) render_screen_show#39 (byte) render_screen_show#29 (byte) render_screen_show#40 (byte) render_screen_show#31 (byte) render_screen_show#21 +Alias (byte) render_screen_showing#12 = (byte) render_screen_showing#24 (byte) render_screen_showing#19 +Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#35 +Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#32 +Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#43 (byte) current_movedown_counter#39 (byte) current_movedown_counter#35 (byte) current_movedown_counter#31 (byte) current_movedown_counter#26 +Alias (byte) current_ypos#36 = (byte) current_ypos#73 (byte) current_ypos#69 (byte) current_ypos#64 (byte) current_ypos#57 (byte) current_ypos#48 +Alias (byte*) current_piece#27 = (byte*) current_piece#70 (byte*) current_piece#64 (byte*) current_piece#59 (byte*) current_piece#51 (byte*) current_piece#41 +Alias (byte) current_orientation#37 = (byte) current_orientation#74 (byte) current_orientation#70 (byte) current_orientation#65 (byte) current_orientation#60 (byte) current_orientation#50 +Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#51 +Alias (byte) current_xpos#44 = (byte) current_xpos#99 (byte) current_xpos#95 (byte) current_xpos#88 (byte) current_xpos#78 (byte) current_xpos#64 +Alias (byte) current_piece_char#23 = (byte) current_piece_char#77 (byte) current_piece_char#69 (byte) current_piece_char#60 (byte) current_piece_char#49 (byte) current_piece_char#36 +Alias (byte) render_screen_render#18 = (byte) render_screen_render#60 (byte) render_screen_render#58 (byte) render_screen_render#57 (byte) render_screen_render#56 (byte) render_screen_render#54 (byte) render_screen_render#52 (byte) render_screen_render#50 (byte) render_screen_render#46 (byte) render_screen_render#40 (byte) render_screen_render#32 (byte) render_screen_render#25 (byte) render_screen_render#33 +Alias (byte) render_screen_showing#17 = (byte) render_screen_showing#3 (byte) render_screen_showing#8 (byte) render_screen_showing#40 (byte) render_screen_showing#37 (byte) render_screen_showing#33 (byte) render_screen_showing#29 (byte) render_screen_showing#25 (byte) render_screen_showing#18 (byte) render_screen_showing#34 (byte) render_screen_showing#30 (byte) render_screen_showing#26 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#46 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 +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#31 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#30 Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#5 -Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#58 (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#66 (byte) keyboard_events_size#59 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 -Alias (byte) main::key_event#0 = (byte~) main::$12 (byte) main::key_event#1 (byte) main::key_event#2 +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#34 (byte) keyboard_events_size#60 (byte) keyboard_events_size#53 (byte) keyboard_events_size#44 (byte) keyboard_events_size#33 +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#43 (byte) current_movedown_counter#39 (byte) current_movedown_counter#36 (byte) current_movedown_counter#32 -Alias (byte) current_ypos#20 = (byte) current_ypos#6 (byte) current_ypos#53 (byte) current_ypos#57 (byte) current_ypos#48 (byte) current_ypos#24 (byte) current_ypos#64 (byte) current_ypos#58 -Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#56 (byte*) current_piece#51 (byte*) current_piece#70 (byte*) current_piece#64 (byte*) current_piece#59 (byte*) current_piece#52 +Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#4 (byte) current_movedown_counter#36 (byte) current_movedown_counter#32 (byte) current_movedown_counter#25 (byte) current_movedown_counter#40 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#24 +Alias (byte) current_ypos#20 = (byte) current_ypos#6 (byte) current_ypos#54 (byte) current_ypos#58 (byte) current_ypos#47 (byte) current_ypos#49 (byte) current_ypos#24 (byte) current_ypos#59 (byte) current_ypos#46 +Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#57 (byte*) current_piece#52 (byte*) current_piece#40 (byte*) current_piece#65 (byte*) current_piece#60 (byte*) current_piece#53 (byte*) current_piece#39 Alias (byte) current_orientation#22 = (byte) current_orientation#8 (byte) current_orientation#38 Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 (byte*) current_piece_gfx#33 Alias (byte) current_xpos#25 = (byte) current_xpos#8 -Alias (byte) current_piece_char#14 = (byte) current_piece_char#5 (byte) current_piece_char#60 (byte) current_piece_char#49 (byte) current_piece_char#77 (byte) current_piece_char#69 (byte) current_piece_char#61 (byte) current_piece_char#50 +Alias (byte) current_piece_char#14 = (byte) current_piece_char#5 (byte) current_piece_char#61 (byte) current_piece_char#50 (byte) current_piece_char#35 (byte) current_piece_char#70 (byte) current_piece_char#62 (byte) current_piece_char#51 (byte) current_piece_char#34 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#26 = (byte) current_xpos#9 (byte) current_xpos#78 (byte) current_xpos#88 (byte) current_xpos#66 (byte) current_xpos#89 (byte) current_xpos#79 +Alias (byte) current_xpos#26 = (byte) current_xpos#9 (byte) current_xpos#79 (byte) current_xpos#63 (byte) current_xpos#89 (byte) current_xpos#67 (byte) current_xpos#80 (byte) current_xpos#62 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#74 (byte) current_orientation#70 (byte) current_orientation#65 (byte) current_orientation#60 -Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#65 -Alias (byte) render_screen_render#14 = (byte) render_screen_render#5 -Alias (byte) render_screen_show#14 = (byte) render_screen_show#5 -Alias (byte) render_screen_show#16 = (byte) render_screen_show#7 -Alias (byte) render_screen_render#16 = (byte) render_screen_render#7 +Alias (byte) current_orientation#23 = (byte) current_orientation#9 (byte) current_orientation#49 (byte) current_orientation#71 (byte) current_orientation#66 (byte) current_orientation#61 (byte) current_orientation#48 +Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#49 +Alias (byte) render_screen_render#15 = (byte) render_screen_render#6 +Alias (byte) render_screen_show#15 = (byte) render_screen_show#6 +Alias (byte) render_screen_show#17 = (byte) render_screen_show#8 +Alias (byte) render_screen_render#17 = (byte) render_screen_render#8 Alias (byte*) current_piece#17 = (byte*) current_piece#8 Alias (byte) current_orientation#11 = (byte) current_orientation#25 Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#21 Alias (byte) current_xpos#11 = (byte) current_xpos#28 Alias (byte) current_ypos#22 = (byte) current_ypos#8 Alias (byte) current_piece_char#16 = (byte) current_piece_char#7 +Alias (byte) render_screen_showing#10 = (byte) render_screen_showing#5 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~) $4 (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 candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_show#10 (byte) render_screen_showing#6 (byte) render_screen_showing#2 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (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 Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#62 (byte) keyboard_events_size#54 (byte) keyboard_events_size#45 (byte) keyboard_events_size#23 +Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#55 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 Alias (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#6 Alias (byte) render_screen_original::x#5 = (byte) render_screen_original::x#6 Alias (byte*) render_screen_original::orig#1 = (byte*) render_screen_original::orig#4 @@ -5475,21 +5621,25 @@ 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#11 = (byte*) current_piece_gfx#23 Alias (byte) render_current::i#10 = (byte) render_current::i#7 -Alias (byte) render_screen_render#35 = (byte) render_screen_render#40 -Alias (byte) current_xpos#67 = (byte) current_xpos#80 -Alias (byte) current_piece_char#17 = (byte) current_piece_char#38 +Alias (byte) render_screen_render#36 = (byte) render_screen_render#41 +Alias (byte) current_xpos#68 = (byte) current_xpos#81 +Alias (byte) current_piece_char#17 = (byte) current_piece_char#39 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 +Alias (byte) irq_cnt#12 = (byte) irq_cnt#4 +Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#4 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#6 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#5 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#10 = (byte) current_ypos#50 (byte) current_ypos#66 (byte) current_ypos#39 -Alias (byte) current_xpos#13 = (byte) current_xpos#69 (byte) current_xpos#92 (byte) current_xpos#49 -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#24 = (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#55 -Alias (byte) current_piece_char#18 = (byte) current_piece_char#54 (byte) current_piece_char#72 (byte) current_piece_char#39 +Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#3 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#13 +Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#3 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#15 (byte) current_movedown_counter#29 (byte) current_movedown_counter#18 +Alias (byte) current_ypos#10 = (byte) current_ypos#51 (byte) current_ypos#66 (byte) current_ypos#39 +Alias (byte) current_xpos#13 = (byte) current_xpos#70 (byte) current_xpos#92 (byte) current_xpos#49 +Alias (byte) current_orientation#12 = (byte) current_orientation#52 (byte) current_orientation#67 (byte) current_orientation#41 +Alias (byte*) current_piece#18 = (byte*) current_piece#54 (byte*) current_piece#66 (byte*) current_piece#43 +Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#56 +Alias (byte) current_piece_char#18 = (byte) current_piece_char#55 (byte) current_piece_char#73 (byte) current_piece_char#40 Alias (byte) current_xpos#16 = (byte) current_xpos#37 Alias (byte) current_xpos#21 = (byte) current_xpos#39 Alias (byte) current_ypos#16 = (byte) current_ypos#32 @@ -5512,25 +5662,17 @@ 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#11 = (byte) current_piece_char#31 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#3 -Alias (byte) current_xpos#42 = (byte) current_xpos#74 +Alias (byte) current_xpos#42 = (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 Alias (byte) play_remove_lines::r#1 = (byte) play_remove_lines::r#4 (byte) play_remove_lines::r#5 Alias (byte) play_remove_lines::y#2 = (byte) play_remove_lines::y#3 (byte) play_remove_lines::y#6 -Alias (byte*) current_piece#15 = (byte*) current_piece#39 -Alias (byte) current_orientation#23 = (byte) current_orientation#48 -Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#49 -Alias (byte) current_xpos#26 = (byte) current_xpos#62 -Alias (byte) current_ypos#20 = (byte) current_ypos#46 -Alias (byte) current_piece_char#14 = (byte) current_piece_char#34 -Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#33 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#30 -Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#24 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~) $4 (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 candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_show#10 (byte) render_screen_showing#6 (byte) render_screen_showing#2 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 +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~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (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 @@ -5546,17 +5688,18 @@ Self Phi Eliminated (byte) render_screen_original::SPACE#2 Self Phi Eliminated (byte) render_screen_original::y#2 Self Phi Eliminated (byte*) render_screen_original::orig#7 Self Phi Eliminated (byte) render_playfield::l#3 -Self Phi Eliminated (byte) render_screen_render#19 +Self Phi Eliminated (byte) render_screen_render#20 Self Phi Eliminated (byte*) current_piece_gfx#11 Self Phi Eliminated (byte) render_current::ypos2#10 Self Phi Eliminated (byte) render_current::l#10 Self Phi Eliminated (byte) current_piece_char#17 Self Phi Eliminated (byte*) render_current::screen_line#1 -Self Phi Eliminated (byte) render_screen_render#35 -Self Phi Eliminated (byte) current_xpos#67 -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) render_screen_render#36 +Self Phi Eliminated (byte) current_xpos#68 +Self Phi Eliminated (byte) irq_sprite_ypos#11 +Self Phi Eliminated (byte) irq_sprite_ptr#11 +Self Phi Eliminated (byte) render_screen_showing#11 +Self Phi Eliminated (byte) irq_cnt#12 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 @@ -5570,7 +5713,8 @@ Self Phi Eliminated (byte) play_lock_current::ypos2#3 Self Phi Eliminated (byte) play_lock_current::l#2 Self Phi Eliminated (byte) current_xpos#42 Self Phi Eliminated (byte) play_remove_lines::y#2 -Self Phi Eliminated (byte) render_screen_show#13 +Self Phi Eliminated (byte) render_screen_show#18 +Self Phi Eliminated (byte) render_screen_showing#12 Self Phi Eliminated (byte) keyboard_events_size#26 Self Phi Eliminated (byte) keyboard_modifiers#23 Self Phi Eliminated (byte) current_movedown_counter#14 @@ -5580,10 +5724,8 @@ Self Phi Eliminated (byte) current_orientation#37 Self Phi Eliminated (byte*) current_piece_gfx#32 Self Phi Eliminated (byte) current_xpos#44 Self Phi Eliminated (byte) current_piece_char#23 -Self Phi Eliminated (byte) render_screen_render#17 +Self Phi Eliminated (byte) render_screen_render#18 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte) render_screen_show#21 VOID -Redundant Phi (byte) render_screen_render#23 VOID Redundant Phi (byte*) current_piece_gfx#35 VOID Redundant Phi (byte) current_xpos#100 VOID Redundant Phi (byte) current_ypos#38 VOID @@ -5594,15 +5736,17 @@ Redundant Phi (byte) fill::val#2 (byte) fill::val#0 Redundant Phi (byte) fill::val#1 (byte) fill::val#2 Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0 Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 -Redundant Phi (byte) keyboard_events_size#53 (byte) keyboard_events_size#26 +Redundant Phi (byte) keyboard_events_size#54 (byte) keyboard_events_size#26 Redundant Phi (byte) keyboard_event_scan::row_scan#1 (byte) keyboard_event_scan::row_scan#0 Redundant Phi (byte) keyboard_event_scan::row#10 (byte) keyboard_event_scan::row#2 Redundant Phi (byte) keyboard_events_size#14 (byte) keyboard_events_size#17 Redundant Phi (byte*) render_init::line#2 (byte*) render_init::line#4 Redundant Phi (byte) render_init::l#2 (byte) render_init::l#4 -Redundant Phi (byte) render_screen_show#9 (byte) render_screen_show#13 -Redundant Phi (byte) render_screen_render#9 (byte) render_screen_render#17 -Redundant Phi (byte) render_screen_show#10 (byte) render_screen_show#13 +Redundant Phi (byte) render_screen_show#10 (byte) render_screen_show#18 +Redundant Phi (byte) render_screen_show#11 (byte) render_screen_show#10 +Redundant Phi (byte) render_screen_showing#6 (byte) render_screen_showing#1 +Redundant Phi (byte) render_screen_render#10 (byte) render_screen_render#18 +Redundant Phi (byte) render_screen_show#12 (byte) render_screen_show#18 Redundant Phi (byte) render_screen_original::SPACE#1 (byte) render_screen_original::SPACE#3 Redundant Phi (byte*) render_screen_original::orig#3 (byte*) render_screen_original::orig#5 Redundant Phi (byte) render_screen_original::y#7 (byte) render_screen_original::y#8 @@ -5612,31 +5756,33 @@ 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#7 (byte*) render_screen_original::orig#1 Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 -Redundant Phi (byte) render_screen_render#19 (byte) render_screen_render#11 +Redundant Phi (byte) render_screen_render#20 (byte) render_screen_render#12 Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#22 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#17 (byte) current_piece_char#37 +Redundant Phi (byte) current_piece_char#17 (byte) current_piece_char#38 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 -Redundant Phi (byte) render_screen_render#35 (byte) render_screen_render#12 -Redundant Phi (byte) current_xpos#67 (byte) current_xpos#12 -Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#0 +Redundant Phi (byte) render_screen_render#36 (byte) render_screen_render#13 +Redundant Phi (byte) current_xpos#68 (byte) current_xpos#12 +Redundant Phi (byte) irq_raster_next#23 (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) irq_raster_next#22 (byte) irq_raster_next#23 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_raster_next#21 (byte) irq_raster_next#22 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_sprite_ptr#10 (byte) irq_sprite_ptr#15 +Redundant Phi (byte) render_screen_showing#15 (byte) render_screen_showing#0 +Redundant Phi (byte) irq_cnt#15 (byte) irq_cnt#0 Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 +Redundant Phi (byte) irq_sprite_ypos#11 (byte) irq_sprite_ypos#4 +Redundant Phi (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#10 +Redundant Phi (byte) render_screen_showing#11 (byte) render_screen_showing#15 +Redundant Phi (byte) irq_cnt#12 (byte) irq_cnt#15 +Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#0 +Redundant Phi (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSpritePtr2_return#1 +Redundant Phi (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#0 +Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#21 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#10 (byte) current_ypos#36 @@ -5662,8 +5808,8 @@ Redundant Phi (byte) current_xpos#21 (byte) current_xpos#26 Redundant Phi (byte) current_ypos#16 (byte) current_ypos#20 Redundant Phi (byte*) current_piece#11 (byte*) current_piece#15 Redundant Phi (byte*) current_piece_gfx#27 (byte*) current_piece_gfx#18 -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) irq_sprite_ptr#16 (byte) irq_sprite_ptr#17 +Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#20 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 @@ -5672,7 +5818,7 @@ Redundant Phi (byte*) play_collision::playfield_line#1 (byte*) play_collision::p Redundant Phi (byte) current_ypos#17 (byte) current_ypos#10 Redundant Phi (byte) current_xpos#41 (byte) current_xpos#13 Redundant Phi (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#24 -Redundant Phi (byte) current_piece_char#44 (byte) current_piece_char#18 +Redundant Phi (byte) current_piece_char#45 (byte) current_piece_char#18 Redundant Phi (byte*) current_piece_gfx#15 (byte*) current_piece_gfx#29 Redundant Phi (byte) current_piece_char#11 (byte) current_piece_char#30 Redundant Phi (byte*) play_lock_current::playfield_line#1 (byte*) play_lock_current::playfield_line#0 @@ -5680,26 +5826,28 @@ Redundant Phi (byte) play_lock_current::ypos2#3 (byte) play_lock_current::ypos2# Redundant Phi (byte) play_lock_current::l#2 (byte) play_lock_current::l#6 Redundant Phi (byte) current_xpos#42 (byte) current_xpos#22 Redundant Phi (byte) play_remove_lines::y#2 (byte) play_remove_lines::y#8 -Redundant Phi (byte) render_screen_show#18 (byte) render_screen_show#21 -Redundant Phi (byte) render_screen_render#21 (byte) render_screen_render#23 +Redundant Phi (byte) render_screen_show#22 (byte) render_screen_show#0 +Redundant Phi (byte) render_screen_render#22 (byte) render_screen_render#0 Redundant Phi (byte*) current_piece#26 (byte*) current_piece#0 Redundant Phi (byte) current_orientation#36 (byte) current_orientation#0 Redundant Phi (byte*) current_piece_gfx#31 (byte*) current_piece_gfx#35 Redundant Phi (byte) current_xpos#43 (byte) current_xpos#100 Redundant Phi (byte) current_ypos#35 (byte) current_ypos#38 Redundant Phi (byte) current_piece_char#22 (byte) current_piece_char#25 +Redundant Phi (byte) render_screen_showing#16 (byte) render_screen_showing#0 Redundant Phi (byte) keyboard_events_size#32 (byte) keyboard_events_size#0 Redundant Phi (byte) keyboard_modifiers#29 (byte) keyboard_modifiers#0 Redundant Phi (byte) current_movedown_counter#23 (byte) current_movedown_counter#0 -Redundant Phi (byte) render_screen_show#12 (byte) render_screen_show#0 -Redundant Phi (byte) render_screen_render#13 (byte) render_screen_render#0 +Redundant Phi (byte) render_screen_show#14 (byte) render_screen_show#1 +Redundant Phi (byte) render_screen_render#14 (byte) render_screen_render#1 Redundant Phi (byte*) current_piece#14 (byte*) current_piece#13 Redundant Phi (byte) current_orientation#21 (byte) current_orientation#20 Redundant Phi (byte*) current_piece_gfx#17 (byte*) current_piece_gfx#16 Redundant Phi (byte) current_xpos#24 (byte) current_xpos#23 Redundant Phi (byte) current_ypos#19 (byte) current_ypos#18 Redundant Phi (byte) current_piece_char#13 (byte) current_piece_char#12 -Redundant Phi (byte) render_screen_show#13 (byte) render_screen_show#15 +Redundant Phi (byte) render_screen_show#18 (byte) render_screen_show#16 +Redundant Phi (byte) render_screen_showing#12 (byte) render_screen_showing#13 Redundant Phi (byte) keyboard_events_size#26 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#12 @@ -5709,7 +5857,8 @@ Redundant Phi (byte) current_orientation#37 (byte) current_orientation#10 Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#20 Redundant Phi (byte) current_xpos#44 (byte) current_xpos#10 Redundant Phi (byte) current_piece_char#23 (byte) current_piece_char#15 -Redundant Phi (byte) render_screen_render#17 (byte) render_screen_render#15 +Redundant Phi (byte) render_screen_render#18 (byte) render_screen_render#16 +Redundant Phi (byte) render_screen_showing#17 (byte) render_screen_showing#2 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 @@ -5723,18 +5872,19 @@ Redundant Phi (byte) current_piece_char#14 (byte) current_piece_char#1 Redundant Phi (byte) current_xpos#26 (byte) current_xpos#19 Redundant Phi (byte) current_orientation#23 (byte) current_orientation#19 Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#14 -Redundant Phi (byte) render_screen_render#14 (byte) render_screen_render#10 -Redundant Phi (byte) render_screen_show#14 (byte) render_screen_show#11 -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) render_screen_show#16 (byte) render_screen_show#15 -Redundant Phi (byte) render_screen_render#16 (byte) render_screen_render#15 +Redundant Phi (byte) render_screen_render#15 (byte) render_screen_render#11 +Redundant Phi (byte) render_screen_show#15 (byte) render_screen_show#13 +Redundant Phi (byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#16 +Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 +Redundant Phi (byte) render_screen_show#17 (byte) render_screen_show#16 +Redundant Phi (byte) render_screen_render#17 (byte) render_screen_render#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#10 (byte*) current_piece_gfx#20 Redundant Phi (byte) current_xpos#11 (byte) current_xpos#10 Redundant Phi (byte) current_ypos#22 (byte) current_ypos#21 Redundant Phi (byte) current_piece_char#16 (byte) current_piece_char#15 +Redundant Phi (byte) render_screen_showing#10 (byte) render_screen_showing#13 Redundant Phi (byte) keyboard_events_size#20 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#17 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#12 @@ -5742,10 +5892,10 @@ Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 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) render_screen_render#28 (byte) render_screen_render#12 +Redundant Phi (byte) render_screen_render#29 (byte) render_screen_render#13 Redundant Phi (byte) current_xpos#48 (byte) current_xpos#12 -Redundant Phi (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#22 -Redundant Phi (byte) current_piece_char#63 (byte) current_piece_char#37 +Redundant Phi (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#22 +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 @@ -5762,7 +5912,7 @@ Simple Condition (bool~) keyboard_event_get::$0 if((byte) keyboard_events_size#1 Simple Condition (bool~) render_init::$13 if((byte) render_init::c#1!=rangelast(0,render_init::$11)) goto render_init::@2 Simple Condition (bool~) render_init::$14 if((byte) render_init::l#1!=rangelast(2,render_init::$10)) goto render_init::@1 Simple Condition (bool~) render_init::$24 if((byte) render_init::i#1!=rangelast(0,render_init::$21)) goto render_init::@3 -Simple Condition (bool~) render_show::$0 if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::@1 +Simple Condition (bool~) render_show::$0 if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::@1 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::$8 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::$9 if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 @@ -5774,9 +5924,10 @@ Simple Condition (bool~) render_current::$7 if((byte) render_current::current_ce Simple Condition (bool~) render_current::$10 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@4 Simple Condition (bool~) render_current::$9 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~) sprites_irq::$0 if(*((byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 +Simple Condition (bool~) sprites_irq::$1 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 +Simple Condition (bool~) sprites_irq::$2 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 +Simple Condition (bool~) sprites_irq::$6 if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 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 @@ -5808,7 +5959,7 @@ Simple Condition (bool~) play_remove_lines::$12 if((byte) play_remove_lines::y#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::$8 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -Simple Condition (bool~) main::$17 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 +Simple Condition (bool~) main::$16 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting ! if()-condition to reversed if() (bool~) render_screen_original::$7 ← ! (bool~) render_screen_original::$6 Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -5994,6 +6145,8 @@ Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240 Constant (const byte) PLAYFIELD_LINES#0 = 22 Constant (const byte) PLAYFIELD_COLS#0 = 10 +Constant (const byte) render_screen_render#0 = 64 +Constant (const byte) render_screen_show#0 = 0 Constant (const byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH#0 = 32 Constant (const word) fill::size#0 = 1000 Constant (const byte/word/signed word/dword/signed dword) render_init::$7 = 4*40 @@ -6002,8 +6155,8 @@ Constant (const byte) render_init::c#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$15 = 2*40 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$18 = 2*40 Constant (const byte) render_init::i#0 = 0 -Constant (const byte) render_screen_show#0 = 0 -Constant (const byte) render_screen_render#0 = 64 +Constant (const byte) render_screen_show#1 = 0 +Constant (const byte) render_screen_render#1 = 64 Constant (const byte) render_show::d018val#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 @@ -6017,7 +6170,7 @@ 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 void()*) sprites_irq_init::$0 = &sprites_irq Constant (const byte/signed byte/word/signed word/dword/signed dword) $5 = 4*4 Constant (const byte[$6]) 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) $7 = 4*4 @@ -6107,7 +6260,7 @@ Constant (const byte/signed word/word/dword/signed dword) render_playfield::$4 = 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*) sprites_irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 Constant (const byte/signed word/word/dword/signed dword/signed byte) $6 = $5*4 Constant (const byte/signed word/word/dword/signed dword/signed byte) $8 = $7*4 Constant (const byte/signed word/word/dword/signed dword/signed byte) $10 = $9*4 @@ -6151,7 +6304,7 @@ Constant (const word) render_show::toD0181_$4#0 = ((word))render_show::toD0181_g Constant (const word) render_show::toD0182_$0#0 = ((word))render_show::toD0182_screen#0 Constant (const word) render_show::toD0182_$4#0 = ((word))render_show::toD0182_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) sprites_irq::toSpritePtr2_$0#0 = ((word))sprites_irq::toSpritePtr2_sprite#0 Constant (const word[]) PIECES#0 = { $19, $20, $21, $22, $23, $24, $25 } Constant (const byte[$26]) playfield_lines_idx#0 = { fill( $26, 0) } Constant (const byte) play_remove_lines::r#0 = play_remove_lines::$0-1 @@ -6164,7 +6317,7 @@ Constant (const byte) render_show::toD0181_$5#0 = >render_show::toD0181_$4#0 Constant (const word) render_show::toD0182_$1#0 = render_show::toD0182_$0#0&16383 Constant (const byte) render_show::toD0182_$5#0 = >render_show::toD0182_$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 word) sprites_irq::toSpritePtr2_$1#0 = sprites_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 @@ -6173,7 +6326,7 @@ Constant (const byte) render_show::toD0181_$6#0 = render_show::toD0181_$5#0>>2 Constant (const word) render_show::toD0182_$2#0 = render_show::toD0182_$1#0<<2 Constant (const byte) render_show::toD0182_$6#0 = render_show::toD0182_$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) sprites_irq::toSpritePtr2_$2#0 = ((byte))sprites_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_show::toD0181_$3#0 = >render_show::toD0181_$2#0 @@ -6181,26 +6334,26 @@ Constant (const byte) render_show::toD0181_$7#0 = render_show::toD0181_$6#0&15 Constant (const byte) render_show::toD0182_$3#0 = >render_show::toD0182_$2#0 Constant (const byte) render_show::toD0182_$7#0 = render_show::toD0182_$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) sprites_irq::toSpritePtr2_return#0 = sprites_irq::toSpritePtr2_$2#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_show::toD0181_return#0 = render_show::toD0181_$3#0|render_show::toD0181_$7#0 Constant (const byte) render_show::toD0182_return#0 = render_show::toD0182_$3#0|render_show::toD0182_$7#0 Constant (const byte) $4 = toSpritePtr1_return#1 -Constant (const byte) irq::toSpritePtr2_return#1 = irq::toSpritePtr2_return#0 +Constant (const byte) sprites_irq::toSpritePtr2_return#1 = sprites_irq::toSpritePtr2_return#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) irq::$2 = irq::toSpritePtr2_return#1 +Constant (const byte) sprites_irq::$3 = sprites_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_1#0+0) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+0) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+1) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+1) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+2) -Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+2) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1#0+3) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+0) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+1) +Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+2) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2#0+3) Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Successful SSA optimization Pass2ConstantAdditionElimination @@ -6267,7 +6420,7 @@ Culled Empty Block (label) render_show::toD0182_@return Culled Empty Block (label) render_show::@6 Culled Empty Block (label) render_current::@6 Culled Empty Block (label) toSpritePtr1_@return -Culled Empty Block (label) irq::toSpritePtr2_@return +Culled Empty Block (label) sprites_irq::toSpritePtr2_@return Culled Empty Block (label) @23 Culled Empty Block (label) play_move_down::@3 Culled Empty Block (label) play_move_down::@5 @@ -6288,27 +6441,32 @@ Culled Empty Block (label) play_collision::@18 Culled Empty Block (label) main::@22 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 +Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@31 Culled Empty Block (label) @34 Successful SSA optimization Pass2CullEmptyBlocks +Alias (byte) render_screen_showing#1 = (byte) render_screen_showing#2 +Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) render_screen_original::SPACE#3 -Self Phi Eliminated (byte) render_screen_render#11 Self Phi Eliminated (byte) render_screen_render#12 +Self Phi Eliminated (byte) render_screen_render#13 Self Phi Eliminated (byte) current_xpos#12 Self Phi Eliminated (byte*) current_piece_gfx#22 -Self Phi Eliminated (byte) current_piece_char#37 +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#22 Self Phi Eliminated (byte*) current_piece_gfx#29 Self Phi Eliminated (byte) current_piece_char#30 +Self Phi Eliminated (byte) render_screen_show#16 +Self Phi Eliminated (byte) render_screen_render#16 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) render_screen_original::SPACE#3 (const byte) render_screen_original::SPACE#0 -Redundant Phi (byte) render_screen_render#11 (byte) render_screen_render#18 -Redundant Phi (byte) render_screen_render#12 (byte) render_screen_render#27 +Redundant Phi (byte) render_screen_render#12 (byte) render_screen_render#19 +Redundant Phi (byte) render_screen_render#13 (byte) render_screen_render#28 Redundant Phi (byte) current_xpos#12 (byte) current_xpos#47 -Redundant Phi (byte*) current_piece_gfx#22 (byte*) current_piece_gfx#52 -Redundant Phi (byte) current_piece_char#37 (byte) current_piece_char#62 +Redundant Phi (byte*) current_piece_gfx#22 (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#22 (byte) current_xpos#10 @@ -6348,7 +6506,7 @@ 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 different constant siblings (const byte) sprites_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 @@ -6383,8 +6541,8 @@ Inlining constant with var siblings (const byte*) play_init::pli#0 Inlining constant with var siblings (const byte) main::render#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 Inlining constant with var siblings (const byte) keyboard_modifiers#1 -Inlining constant with var siblings (const byte) render_screen_show#0 -Inlining constant with var siblings (const byte) render_screen_render#0 +Inlining constant with var siblings (const byte) render_screen_show#1 +Inlining constant with var siblings (const byte) render_screen_render#1 Inlining constant with var siblings (const byte) current_movedown_counter#0 Inlining constant with var siblings (const byte) current_movedown_counter#2 Inlining constant with var siblings (const byte) current_orientation#20 @@ -6403,7 +6561,6 @@ Constant inlined current_movedown_counter#2 = (byte/signed byte/word/signed word Constant inlined render_screen_original::screen#1 = (const byte*) PLAYFIELD_SCREEN_2#0 Constant inlined fill::start#0 = (const byte*) COLS#0 Constant inlined render_screen_original::screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 -Constant inlined irq::toSpritePtr2_return#1 = (const byte) irq::toSpritePtr2_return#0 Constant inlined render_screen_original::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::toD0182_$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 render_playfield::i#0 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 @@ -6418,13 +6575,13 @@ Constant inlined play_remove_lines::$2 = (const byte) PLAYFIELD_LINES#0*(const b 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 sprites_irq::toSpritePtr2_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 Constant inlined toSpritePtr1_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined render_show::toD0182_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 Constant inlined render_show::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_init::$19 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined render_init::$18 = (byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined render_init::$16 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined irq::toSpritePtr2_$2#0 = (const byte) irq::toSpritePtr2_return#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 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 @@ -6436,6 +6593,7 @@ Constant inlined keyboard_event_scan::col#0 = (byte/signed byte/word/signed word Constant inlined render_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::$3 = (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 Constant inlined $13 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined sprites_irq::$3 = (const byte) sprites_irq::toSpritePtr2_return#0 Constant inlined $14 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::$1 = (const byte) VIC_ECM#0|(const byte) VIC_DEN#0 Constant inlined $15 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 @@ -6457,7 +6615,7 @@ Constant inlined render_init::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const b Constant inlined $23 = ((word))(const byte[4*4*4]) PIECE_O#0 Constant inlined $24 = ((word))(const byte[4*4*4]) PIECE_I#0 Constant inlined render_show::toD0182_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN_2#0&(word/signed word/dword/signed dword) 16383 -Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() +Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Constant inlined $25 = ((word))(const byte[4*4*4]) PIECE_L#0 Constant inlined $26 = (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 @@ -6466,6 +6624,7 @@ 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 sprites_irq::toSpritePtr2_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 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 @@ -6480,15 +6639,14 @@ Constant inlined render_show::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHA Constant inlined toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 Constant inlined toSpritePtr1_return#1 = (const byte) toSpritePtr1_return#0 Constant inlined render_show::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#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 play_remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 Constant inlined render_show::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined keyboard_modifiers#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined render_screen_render#1 = (byte/signed byte/word/signed word/dword/signed dword) 64 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 render_screen_render#0 = (byte/signed byte/word/signed word/dword/signed dword) 64 Constant inlined $3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined play_lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined $4 = (const byte) toSpritePtr1_return#0 @@ -6511,11 +6669,11 @@ Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed w 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) 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 sprites_irq::toSpritePtr2_$2#0 = (const byte) sprites_irq::toSpritePtr2_return#0 Constant inlined play_move_leftright::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383 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 render_init::li_2#0 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 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 @@ -6525,23 +6683,23 @@ Constant inlined play_remove_lines::w#0 = (const byte) PLAYFIELD_LINES#0*(const Constant inlined play_init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::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 sprites_irq::toSpritePtr2_return#1 = (const byte) sprites_irq::toSpritePtr2_return#0 Constant inlined keyboard_event_scan::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_playfield::$1 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_playfield::$4 = (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 render_show::toD0182_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN_2#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_init::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined render_show::toD0182_screen#0 = (const byte*) PLAYFIELD_SCREEN_2#0 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 render_screen_show#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined render_screen_show#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined sprites_irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SPRITES#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 render_show::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 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 Constant inlined render_init::li_1#0 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero SPRITES_YPOS#0+0 @@ -6549,7 +6707,7 @@ Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_1#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_2#0+0 Simplifying constant integer increment ++0 Successful SSA optimization Pass2ConstantSimplification -Added new block during phi lifting main::@32(between main::@28 and main::@7) +Added new block during phi lifting main::@32(between main::@28 and main::@1) 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) @@ -6602,7 +6760,7 @@ Added new block during phi lifting render_screen_original::@15(between render_sc Added new block during phi lifting render_screen_original::@16(between render_screen_original::@3 and render_screen_original::@4) Added new block during phi lifting render_screen_original::@17(between render_screen_original::@4 and render_screen_original::@5) Added new block during phi lifting render_screen_original::@18(between render_screen_original::@5 and render_screen_original::@5) -Added new block during phi lifting irq::@10(between irq::@3 and irq::@4) +Added new block during phi lifting sprites_irq::@14(between sprites_irq::@5 and sprites_irq::@6) Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @32 @@ -6613,6 +6771,7 @@ Adding NOP phi() at start of main::@17 Adding NOP phi() at start of main::@18 Adding NOP phi() at start of main::@19 Adding NOP phi() at start of main::@20 +Adding NOP phi() at start of main::@6 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@24 Adding NOP phi() at start of main::@30 @@ -6634,213 +6793,217 @@ Adding NOP phi() at start of render_init::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of render_init::@8 Adding NOP phi() at start of render_init::@9 Adding NOP phi() at start of fill -Adding NOP phi() at start of irq::toSpritePtr2 +Adding NOP phi() at start of sprites_irq::toSpritePtr2 CALL GRAPH -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:30 render_show:40 keyboard_event_scan:42 keyboard_event_get:44 play_move_down:48 play_move_leftright:53 play_move_rotate:58 render_playfield:64 render_current:70 render_screen_swap:72 -Calls in [play_move_rotate] to play_collision:164 -Calls in [play_move_leftright] to play_collision:216 play_collision:233 -Calls in [play_move_down] to keyboard_event_pressed:244 play_collision:264 play_lock_current:269 play_remove_lines:271 play_spawn_current:273 -Calls in [play_spawn_current] to sid_rnd:315 -Calls in [keyboard_event_scan] to keyboard_matrix_read:399 keyboard_event_pressed:410 keyboard_event_pressed:416 keyboard_event_pressed:423 keyboard_event_pressed:430 -Calls in [render_init] to render_screen_original:527 render_screen_original:529 fill:531 +Calls in [] to main:11 +Calls in [main] to sid_rnd_init:14 render_init:16 sprites_init:18 sprites_irq_init:20 play_init:22 play_spawn_current:24 render_playfield:26 render_current:31 render_show:40 keyboard_event_scan:42 keyboard_event_get:44 play_move_down:48 play_move_leftright:53 play_move_rotate:58 render_playfield:64 render_current:70 render_screen_swap:72 +Calls in [play_move_rotate] to play_collision:166 +Calls in [play_move_leftright] to play_collision:218 play_collision:235 +Calls in [play_move_down] to keyboard_event_pressed:246 play_collision:266 play_lock_current:271 play_remove_lines:273 play_spawn_current:275 +Calls in [play_spawn_current] to sid_rnd:317 +Calls in [keyboard_event_scan] to keyboard_matrix_read:401 keyboard_event_pressed:412 keyboard_event_pressed:418 keyboard_event_pressed:425 keyboard_event_pressed:432 +Calls in [render_init] to render_screen_original:531 render_screen_original:533 fill:535 -Created 123 initial phi equivalence classes -Not coalescing [26] current_ypos#83 ← current_ypos#18 -Not coalescing [27] current_xpos#109 ← current_xpos#23 -Not coalescing [28] current_piece_gfx#99 ← current_piece_gfx#16 -Not coalescing [29] current_piece_char#87 ← current_piece_char#12 -Coalesced [32] current_piece_gfx#97 ← current_piece_gfx#16 -Coalesced [33] current_xpos#107 ← current_xpos#23 -Coalesced [34] current_ypos#81 ← current_ypos#18 -Coalesced [35] current_piece_char#85 ← current_piece_char#12 -Not coalescing [63] render_screen_render#69 ← render_screen_render#15 -Not coalescing [65] current_ypos#84 ← current_ypos#13 -Not coalescing [66] render_screen_render#68 ← render_screen_render#15 -Not coalescing [67] current_xpos#110 ← current_xpos#19 -Not coalescing [68] current_piece_gfx#100 ← current_piece_gfx#14 -Not coalescing [69] current_piece_char#88 ← current_piece_char#1 -Coalesced [73] render_screen_show#54 ← render_screen_show#11 -Coalesced [74] render_screen_render#67 ← render_screen_render#10 -Coalesced [77] render_screen_show#52 ← render_screen_show#24 -Coalesced [78] render_screen_render#65 ← render_screen_render#31 -Coalesced [79] current_piece#72 ← current_piece#10 -Coalesced [80] current_orientation#75 ← current_orientation#19 -Coalesced [81] current_piece_gfx#98 ← current_piece_gfx#14 -Coalesced [82] current_xpos#108 ← current_xpos#19 -Coalesced [83] current_ypos#82 ← current_ypos#13 -Coalesced [84] current_piece_char#86 ← current_piece_char#1 -Coalesced [85] keyboard_events_size#79 ← keyboard_events_size#16 -Coalesced [86] current_movedown_counter#48 ← current_movedown_counter#10 -Coalesced (already) [87] render_screen_show#53 ← render_screen_show#15 -Coalesced (already) [88] render_screen_render#66 ← render_screen_render#15 -Coalesced [94] render_current::ypos2#11 ← render_current::ypos2#0 -Coalesced [98] render_current::i#14 ← render_current::i#1 -Coalesced [104] render_current::ypos2#12 ← render_current::ypos2#1 -Coalesced [105] render_current::i#12 ← render_current::i#8 -Coalesced [106] render_current::l#11 ← render_current::l#1 -Coalesced [111] render_current::i#15 ← render_current::i#3 -Coalesced [112] render_current::xpos#7 ← render_current::xpos#0 -Coalesced [122] render_current::i#13 ← render_current::i#10 -Coalesced (already) [123] render_current::i#16 ← render_current::i#10 -Coalesced [124] render_current::xpos#8 ← render_current::xpos#1 -Coalesced [125] render_current::c#7 ← render_current::c#1 -Coalesced [131] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [132] render_playfield::screen_line#3 ← render_playfield::screen_line#0 -Coalesced [142] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [143] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [144] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [145] render_playfield::screen_line#4 ← render_playfield::screen_line#1 -Coalesced [146] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [149] current_orientation#78 ← current_orientation#14 -Coalesced [150] current_piece_gfx#103 ← current_piece_gfx#1 -Coalesced [155] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [160] current_piece#76 ← current_piece#10 -Coalesced [161] play_collision::orientation#8 ← play_collision::orientation#3 -Coalesced [162] play_collision::ypos#8 ← play_collision::ypos#3 -Coalesced [163] play_collision::xpos#17 ← play_collision::xpos#3 -Coalesced [170] current_orientation#76 ← current_orientation#4 -Coalesced [171] current_piece_gfx#101 ← current_piece_gfx#3 -Coalesced (already) [172] current_orientation#77 ← current_orientation#14 -Coalesced (already) [173] current_piece_gfx#102 ← current_piece_gfx#1 -Coalesced [176] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [180] play_collision::ypos2#11 ← play_collision::ypos2#0 -Coalesced [183] play_collision::i#12 ← play_collision::i#3 -Not coalescing [184] play_collision::col#9 ← play_collision::xpos#5 -Coalesced [201] play_collision::ypos2#12 ← play_collision::ypos2#1 -Not coalescing [202] play_collision::i#11 ← play_collision::i#1 -Coalesced [203] play_collision::l#11 ← play_collision::l#1 -Not coalescing [204] play_collision::i#13 ← play_collision::i#1 -Coalesced [205] play_collision::col#10 ← play_collision::col#1 -Coalesced [206] play_collision::c#9 ← play_collision::c#1 -Not coalescing [212] current_piece#75 ← current_piece#10 -Coalesced [213] play_collision::orientation#7 ← play_collision::orientation#2 -Coalesced [214] play_collision::ypos#7 ← play_collision::ypos#2 -Coalesced [215] play_collision::xpos#16 ← play_collision::xpos#2 -Coalesced [221] current_xpos#113 ← current_xpos#2 -Coalesced [224] current_xpos#112 ← current_xpos#1 -Coalesced (already) [225] current_xpos#115 ← current_xpos#1 -Not coalescing [229] current_piece#74 ← current_piece#10 -Coalesced [230] play_collision::orientation#6 ← play_collision::orientation#1 -Coalesced [231] play_collision::ypos#6 ← play_collision::ypos#1 -Coalesced [232] play_collision::xpos#15 ← play_collision::xpos#1 -Coalesced [238] current_xpos#111 ← current_xpos#4 -Coalesced (already) [239] current_xpos#114 ← current_xpos#1 -Coalesced [250] play_move_down::movedown#13 ← play_move_down::movedown#2 -Coalesced [254] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [260] current_piece#73 ← current_piece#16 -Coalesced [261] play_collision::orientation#5 ← play_collision::orientation#0 -Coalesced [262] play_collision::ypos#5 ← play_collision::ypos#0 -Coalesced [263] play_collision::xpos#14 ← play_collision::xpos#0 -Coalesced [274] current_ypos#85 ← current_ypos#18 -Coalesced [276] current_piece_gfx#104 ← current_piece_gfx#16 -Coalesced [277] current_xpos#116 ← current_xpos#23 -Coalesced [278] current_piece_char#89 ← current_piece_char#12 -Coalesced (already) [280] current_ypos#88 ← current_ypos#29 -Coalesced [281] current_piece#80 ← current_piece#20 -Coalesced [282] current_orientation#81 ← current_orientation#29 -Coalesced (already) [283] current_piece_gfx#107 ← current_piece_gfx#26 -Coalesced (already) [284] current_xpos#119 ← current_xpos#33 -Coalesced (already) [285] current_piece_char#92 ← current_piece_char#20 -Coalesced [289] current_ypos#86 ← current_ypos#0 -Coalesced (already) [290] current_piece#78 ← current_piece#16 -Coalesced (already) [291] current_orientation#79 ← current_orientation#10 -Coalesced (already) [292] current_piece_gfx#105 ← current_piece_gfx#20 -Coalesced (already) [293] current_xpos#117 ← current_xpos#10 -Coalesced (already) [294] current_piece_char#90 ← current_piece_char#15 -Coalesced [295] current_movedown_counter#49 ← current_movedown_counter#1 -Coalesced (already) [296] current_ypos#87 ← current_ypos#21 -Coalesced (already) [297] current_piece#79 ← current_piece#16 -Coalesced (already) [298] current_orientation#80 ← current_orientation#10 -Coalesced (already) [299] current_piece_gfx#106 ← current_piece_gfx#20 -Coalesced (already) [300] current_xpos#118 ← current_xpos#10 -Coalesced (already) [301] current_piece_char#91 ← current_piece_char#15 -Coalesced [302] play_move_down::movedown#17 ← play_move_down::movedown#7 -Coalesced [303] play_move_down::movedown#15 ← play_move_down::movedown#10 -Coalesced (already) [304] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [319] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced [324] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [325] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [338] play_remove_lines::w#16 ← play_remove_lines::w#2 -Coalesced [342] play_remove_lines::w#18 ← play_remove_lines::w#11 -Coalesced [348] play_remove_lines::w#19 ← play_remove_lines::w#3 -Coalesced [349] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [350] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [351] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [352] play_remove_lines::w#17 ← play_remove_lines::w#1 -Coalesced (already) [353] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [354] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [355] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [356] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [357] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [359] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 -Coalesced [363] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [364] play_lock_current::col#5 ← play_lock_current::col#0 -Coalesced [376] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 -Not coalescing [377] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [378] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [379] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [380] play_lock_current::col#6 ← play_lock_current::col#1 -Coalesced [381] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [391] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [392] keyboard_events_size#81 ← keyboard_events_size#4 -Coalesced [395] keyboard_events_size#80 ← keyboard_events_size#13 -Coalesced [396] keyboard_events_size#82 ← keyboard_events_size#19 -Coalesced [404] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [405] keyboard_events_size#84 ← keyboard_events_size#29 -Coalesced [421] keyboard_modifiers#60 ← keyboard_modifiers#3 -Coalesced [428] keyboard_modifiers#62 ← keyboard_modifiers#4 -Coalesced [436] keyboard_modifiers#63 ← keyboard_modifiers#12 -Coalesced [437] keyboard_modifiers#61 ← keyboard_modifiers#11 -Coalesced [438] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [439] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [440] keyboard_events_size#83 ← keyboard_events_size#13 -Coalesced [441] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [442] keyboard_events_size#86 ← keyboard_events_size#29 -Coalesced [452] keyboard_events_size#88 ← keyboard_events_size#2 -Coalesced [458] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [459] keyboard_events_size#85 ← keyboard_events_size#30 -Coalesced [460] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [461] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [462] keyboard_events_size#87 ← keyboard_events_size#30 -Coalesced [466] keyboard_events_size#91 ← keyboard_events_size#1 -Coalesced (already) [467] keyboard_events_size#90 ← keyboard_events_size#10 -Coalesced (already) [468] keyboard_events_size#89 ← keyboard_events_size#10 -Coalesced [489] play_init::j#3 ← play_init::j#1 -Coalesced [490] play_init::pli#3 ← play_init::pli#1 -Coalesced [491] play_init::idx#3 ← play_init::idx#1 -Coalesced [516] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [517] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [551] render_init::i#3 ← render_init::i#1 -Coalesced [552] render_init::li_1#3 ← render_init::li_1#1 -Coalesced [553] render_init::li_2#3 ← render_init::li_2#1 -Coalesced [554] render_init::line#5 ← render_init::line#1 -Coalesced [555] render_init::l#5 ← render_init::l#1 -Coalesced [556] render_init::c#3 ← render_init::c#1 -Coalesced [563] fill::addr#3 ← fill::addr#1 -Coalesced [565] render_screen_original::screen#13 ← render_screen_original::screen#11 -Coalesced [567] render_screen_original::screen#15 ← render_screen_original::screen#8 -Coalesced [573] render_screen_original::orig#10 ← render_screen_original::orig#5 -Coalesced [574] render_screen_original::x#10 ← render_screen_original::x#1 -Coalesced [575] render_screen_original::screen#17 ← render_screen_original::screen#2 -Coalesced [580] render_screen_original::c#4 ← render_screen_original::c#0 -Coalesced [586] render_screen_original::screen#19 ← render_screen_original::screen#3 -Coalesced [587] render_screen_original::x#12 ← render_screen_original::x#2 -Coalesced [596] render_screen_original::screen#14 ← render_screen_original::screen#12 -Coalesced [597] render_screen_original::orig#9 ← render_screen_original::orig#1 -Coalesced [598] render_screen_original::y#9 ← render_screen_original::y#1 -Coalesced [599] render_screen_original::screen#20 ← render_screen_original::screen#12 -Coalesced [600] render_screen_original::x#13 ← render_screen_original::x#3 -Coalesced (already) [601] render_screen_original::orig#11 ← render_screen_original::orig#1 -Coalesced [602] render_screen_original::x#11 ← render_screen_original::x#2 -Coalesced [603] render_screen_original::screen#18 ← render_screen_original::screen#3 -Coalesced [606] render_screen_original::c#5 ← render_screen_original::c#1 -Coalesced (already) [607] render_screen_original::screen#16 ← render_screen_original::screen#2 -Coalesced [608] render_screen_original::x#9 ← render_screen_original::x#1 -Coalesced [635] irq_raster_next#21 ← irq_raster_next#2 -Coalesced [641] irq::raster_next#5 ← irq::raster_next#1 -Coalesced [647] irq::raster_next#4 ← irq::raster_next#0 -Coalesced [653] irq_raster_next#22 ← irq_raster_next#1 +Created 121 initial phi equivalence classes +Not coalescing [27] current_ypos#84 ← current_ypos#18 +Not coalescing [28] current_xpos#110 ← current_xpos#23 +Not coalescing [29] current_piece_gfx#100 ← current_piece_gfx#16 +Not coalescing [30] current_piece_char#88 ← current_piece_char#12 +Coalesced [33] current_piece_gfx#97 ← current_piece_gfx#16 +Coalesced [34] current_xpos#107 ← current_xpos#23 +Coalesced [35] current_ypos#81 ← current_ypos#18 +Coalesced [36] current_piece_char#85 ← current_piece_char#12 +Not coalescing [63] render_screen_render#63 ← render_screen_render#16 +Not coalescing [65] current_ypos#85 ← current_ypos#13 +Not coalescing [66] render_screen_render#62 ← render_screen_render#16 +Not coalescing [67] current_xpos#111 ← current_xpos#19 +Not coalescing [68] current_piece_gfx#101 ← current_piece_gfx#14 +Not coalescing [69] current_piece_char#89 ← current_piece_char#1 +Coalesced [73] render_screen_show#57 ← render_screen_show#13 +Coalesced [74] render_screen_render#61 ← render_screen_render#11 +Coalesced [75] current_piece#72 ← current_piece#10 +Coalesced [76] current_orientation#75 ← current_orientation#19 +Coalesced [77] current_piece_gfx#98 ← current_piece_gfx#14 +Coalesced [78] current_xpos#108 ← current_xpos#19 +Coalesced [79] current_ypos#82 ← current_ypos#13 +Coalesced [80] current_piece_char#86 ← current_piece_char#1 +Coalesced [81] keyboard_events_size#79 ← keyboard_events_size#16 +Coalesced [82] current_movedown_counter#48 ← current_movedown_counter#10 +Coalesced (already) [83] current_piece#73 ← current_piece#10 +Coalesced (already) [84] current_orientation#76 ← current_orientation#19 +Coalesced (already) [85] current_piece_gfx#99 ← current_piece_gfx#14 +Coalesced (already) [86] current_xpos#109 ← current_xpos#19 +Coalesced (already) [87] current_ypos#83 ← current_ypos#13 +Coalesced (already) [88] current_piece_char#87 ← current_piece_char#1 +Coalesced (already) [89] keyboard_events_size#80 ← keyboard_events_size#16 +Coalesced (already) [90] current_movedown_counter#49 ← current_movedown_counter#10 +Coalesced [96] render_current::ypos2#11 ← render_current::ypos2#0 +Coalesced [100] render_current::i#14 ← render_current::i#1 +Coalesced [106] render_current::ypos2#12 ← render_current::ypos2#1 +Coalesced [107] render_current::i#12 ← render_current::i#8 +Coalesced [108] render_current::l#11 ← render_current::l#1 +Coalesced [113] render_current::i#15 ← render_current::i#3 +Coalesced [114] render_current::xpos#7 ← render_current::xpos#0 +Coalesced [124] render_current::i#13 ← render_current::i#10 +Coalesced (already) [125] render_current::i#16 ← render_current::i#10 +Coalesced [126] render_current::xpos#8 ← render_current::xpos#1 +Coalesced [127] render_current::c#7 ← render_current::c#1 +Coalesced [133] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [134] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [144] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [145] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [146] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [147] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [148] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [151] current_orientation#79 ← current_orientation#14 +Coalesced [152] current_piece_gfx#104 ← current_piece_gfx#1 +Coalesced [157] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [162] current_piece#77 ← current_piece#10 +Coalesced [163] play_collision::orientation#8 ← play_collision::orientation#3 +Coalesced [164] play_collision::ypos#8 ← play_collision::ypos#3 +Coalesced [165] play_collision::xpos#17 ← play_collision::xpos#3 +Coalesced [172] current_orientation#77 ← current_orientation#4 +Coalesced [173] current_piece_gfx#102 ← current_piece_gfx#3 +Coalesced (already) [174] current_orientation#78 ← current_orientation#14 +Coalesced (already) [175] current_piece_gfx#103 ← current_piece_gfx#1 +Coalesced [178] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [182] play_collision::ypos2#11 ← play_collision::ypos2#0 +Coalesced [185] play_collision::i#12 ← play_collision::i#3 +Not coalescing [186] play_collision::col#9 ← play_collision::xpos#5 +Coalesced [203] play_collision::ypos2#12 ← play_collision::ypos2#1 +Not coalescing [204] play_collision::i#11 ← play_collision::i#1 +Coalesced [205] play_collision::l#11 ← play_collision::l#1 +Not coalescing [206] play_collision::i#13 ← play_collision::i#1 +Coalesced [207] play_collision::col#10 ← play_collision::col#1 +Coalesced [208] play_collision::c#9 ← play_collision::c#1 +Not coalescing [214] current_piece#76 ← current_piece#10 +Coalesced [215] play_collision::orientation#7 ← play_collision::orientation#2 +Coalesced [216] play_collision::ypos#7 ← play_collision::ypos#2 +Coalesced [217] play_collision::xpos#16 ← play_collision::xpos#2 +Coalesced [223] current_xpos#114 ← current_xpos#2 +Coalesced [226] current_xpos#113 ← current_xpos#1 +Coalesced (already) [227] current_xpos#116 ← current_xpos#1 +Not coalescing [231] current_piece#75 ← current_piece#10 +Coalesced [232] play_collision::orientation#6 ← play_collision::orientation#1 +Coalesced [233] play_collision::ypos#6 ← play_collision::ypos#1 +Coalesced [234] play_collision::xpos#15 ← play_collision::xpos#1 +Coalesced [240] current_xpos#112 ← current_xpos#4 +Coalesced (already) [241] current_xpos#115 ← current_xpos#1 +Coalesced [252] play_move_down::movedown#13 ← play_move_down::movedown#2 +Coalesced [256] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [262] current_piece#74 ← current_piece#16 +Coalesced [263] play_collision::orientation#5 ← play_collision::orientation#0 +Coalesced [264] play_collision::ypos#5 ← play_collision::ypos#0 +Coalesced [265] play_collision::xpos#14 ← play_collision::xpos#0 +Coalesced [276] current_ypos#86 ← current_ypos#18 +Coalesced [278] current_piece_gfx#105 ← current_piece_gfx#16 +Coalesced [279] current_xpos#117 ← current_xpos#23 +Coalesced [280] current_piece_char#90 ← current_piece_char#12 +Coalesced (already) [282] current_ypos#89 ← current_ypos#29 +Coalesced [283] current_piece#81 ← current_piece#20 +Coalesced [284] current_orientation#82 ← current_orientation#29 +Coalesced (already) [285] current_piece_gfx#108 ← current_piece_gfx#26 +Coalesced (already) [286] current_xpos#120 ← current_xpos#33 +Coalesced (already) [287] current_piece_char#93 ← current_piece_char#20 +Coalesced [291] current_ypos#87 ← current_ypos#0 +Coalesced (already) [292] current_piece#79 ← current_piece#16 +Coalesced (already) [293] current_orientation#80 ← current_orientation#10 +Coalesced (already) [294] current_piece_gfx#106 ← current_piece_gfx#20 +Coalesced (already) [295] current_xpos#118 ← current_xpos#10 +Coalesced (already) [296] current_piece_char#91 ← current_piece_char#15 +Coalesced [297] current_movedown_counter#50 ← current_movedown_counter#1 +Coalesced (already) [298] current_ypos#88 ← current_ypos#21 +Coalesced (already) [299] current_piece#80 ← current_piece#16 +Coalesced (already) [300] current_orientation#81 ← current_orientation#10 +Coalesced (already) [301] current_piece_gfx#107 ← current_piece_gfx#20 +Coalesced (already) [302] current_xpos#119 ← current_xpos#10 +Coalesced (already) [303] current_piece_char#92 ← current_piece_char#15 +Coalesced [304] play_move_down::movedown#17 ← play_move_down::movedown#7 +Coalesced [305] play_move_down::movedown#15 ← play_move_down::movedown#10 +Coalesced (already) [306] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [321] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced [326] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [327] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [340] play_remove_lines::w#16 ← play_remove_lines::w#2 +Coalesced [344] play_remove_lines::w#18 ← play_remove_lines::w#11 +Coalesced [350] play_remove_lines::w#19 ← play_remove_lines::w#3 +Coalesced [351] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [352] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [353] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [354] play_remove_lines::w#17 ← play_remove_lines::w#1 +Coalesced (already) [355] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [356] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [357] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [358] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [359] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [361] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 +Coalesced [365] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [366] play_lock_current::col#5 ← play_lock_current::col#0 +Coalesced [378] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 +Not coalescing [379] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [380] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [381] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [382] play_lock_current::col#6 ← play_lock_current::col#1 +Coalesced [383] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [393] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [394] keyboard_events_size#82 ← keyboard_events_size#4 +Coalesced [397] keyboard_events_size#81 ← keyboard_events_size#13 +Coalesced [398] keyboard_events_size#83 ← keyboard_events_size#19 +Coalesced [406] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [407] keyboard_events_size#85 ← keyboard_events_size#29 +Coalesced [423] keyboard_modifiers#60 ← keyboard_modifiers#3 +Coalesced [430] keyboard_modifiers#62 ← keyboard_modifiers#4 +Coalesced [438] keyboard_modifiers#63 ← keyboard_modifiers#12 +Coalesced [439] keyboard_modifiers#61 ← keyboard_modifiers#11 +Coalesced [440] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [441] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [442] keyboard_events_size#84 ← keyboard_events_size#13 +Coalesced [443] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [444] keyboard_events_size#87 ← keyboard_events_size#29 +Coalesced [454] keyboard_events_size#89 ← keyboard_events_size#2 +Coalesced [460] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [461] keyboard_events_size#86 ← keyboard_events_size#30 +Coalesced [462] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [463] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [464] keyboard_events_size#88 ← keyboard_events_size#30 +Coalesced [468] keyboard_events_size#92 ← keyboard_events_size#1 +Coalesced (already) [469] keyboard_events_size#91 ← keyboard_events_size#10 +Coalesced (already) [470] keyboard_events_size#90 ← keyboard_events_size#10 +Coalesced [492] play_init::j#3 ← play_init::j#1 +Coalesced [493] play_init::pli#3 ← play_init::pli#1 +Coalesced [494] play_init::idx#3 ← play_init::idx#1 +Coalesced [519] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [520] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [555] render_init::i#3 ← render_init::i#1 +Coalesced [556] render_init::li_1#3 ← render_init::li_1#1 +Coalesced [557] render_init::li_2#3 ← render_init::li_2#1 +Coalesced [558] render_init::line#5 ← render_init::line#1 +Coalesced [559] render_init::l#5 ← render_init::l#1 +Coalesced [560] render_init::c#3 ← render_init::c#1 +Coalesced [567] fill::addr#3 ← fill::addr#1 +Coalesced [569] render_screen_original::screen#13 ← render_screen_original::screen#11 +Coalesced [571] render_screen_original::screen#15 ← render_screen_original::screen#8 +Coalesced [577] render_screen_original::orig#10 ← render_screen_original::orig#5 +Coalesced [578] render_screen_original::x#10 ← render_screen_original::x#1 +Coalesced [579] render_screen_original::screen#17 ← render_screen_original::screen#2 +Coalesced [584] render_screen_original::c#4 ← render_screen_original::c#0 +Coalesced [590] render_screen_original::screen#19 ← render_screen_original::screen#3 +Coalesced [591] render_screen_original::x#12 ← render_screen_original::x#2 +Coalesced [600] render_screen_original::screen#14 ← render_screen_original::screen#12 +Coalesced [601] render_screen_original::orig#9 ← render_screen_original::orig#1 +Coalesced [602] render_screen_original::y#9 ← render_screen_original::y#1 +Coalesced [603] render_screen_original::screen#20 ← render_screen_original::screen#12 +Coalesced [604] render_screen_original::x#13 ← render_screen_original::x#3 +Coalesced (already) [605] render_screen_original::orig#11 ← render_screen_original::orig#1 +Coalesced [606] render_screen_original::x#11 ← render_screen_original::x#2 +Coalesced [607] render_screen_original::screen#18 ← render_screen_original::screen#3 +Coalesced [610] render_screen_original::c#5 ← render_screen_original::c#1 +Coalesced (already) [611] render_screen_original::screen#16 ← render_screen_original::screen#2 +Coalesced [612] render_screen_original::x#9 ← render_screen_original::x#1 +Coalesced [635] irq_raster_next#24 ← irq_raster_next#2 +Coalesced [641] sprites_irq::raster_next#4 ← sprites_irq::raster_next#1 +Coalesced [646] sprites_irq::raster_next#5 ← sprites_irq::raster_next#0 +Coalesced [652] irq_raster_next#25 ← irq_raster_next#1 Coalesced down to 79 phi equivalence classes Culled Empty Block (label) main::@32 Culled Empty Block (label) render_current::@14 @@ -6883,7 +7046,7 @@ Culled Empty Block (label) render_screen_original::@12 Culled Empty Block (label) render_screen_original::@18 Culled Empty Block (label) render_screen_original::@15 Culled Empty Block (label) render_screen_original::@13 -Culled Empty Block (label) irq::@10 +Culled Empty Block (label) sprites_irq::@14 Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @32 @@ -6894,6 +7057,7 @@ Adding NOP phi() at start of main::@17 Adding NOP phi() at start of main::@18 Adding NOP phi() at start of main::@19 Adding NOP phi() at start of main::@20 +Adding NOP phi() at start of main::@6 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@24 Adding NOP phi() at start of main::@30 @@ -6916,13 +7080,14 @@ Adding NOP phi() at start of render_init::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of render_init::@8 Adding NOP phi() at start of render_init::@9 Adding NOP phi() at start of fill -Adding NOP phi() at start of irq::toSpritePtr2 +Adding NOP phi() at start of sprites_irq::toSpritePtr2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() to:@14 @14: scope:[] from @begin + [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 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" }} @@ -6944,76 +7109,75 @@ FINAL CONTROL FLOW GRAPH }} to:@21 @21: scope:[] from @20 - [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 + [5] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [6] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:toSpritePtr1 toSpritePtr1: scope:[] from @21 - [6] phi() + [7] phi() to:@33 @33: 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 + [8] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [9] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@32 @32: scope:[] from @33 - [9] phi() - [10] call main + [10] phi() + [11] call main to:@end @end: scope:[] from @32 - [11] phi() -main: scope:[main] from @32 [12] phi() - [13] call sid_rnd_init +main: scope:[main] from @32 + [13] phi() + [14] call sid_rnd_init to:main::@15 main::@15: scope:[main] from main asm { sei } - [15] call render_init + [16] call render_init to:main::@16 main::@16: scope:[main] from main::@15 - [16] phi() - [17] call sprites_init + [17] phi() + [18] call sprites_init to:main::@17 main::@17: scope:[main] from main::@16 - [18] phi() - [19] call sprites_irq_init + [19] phi() + [20] call sprites_irq_init to:main::@18 main::@18: scope:[main] from main::@17 - [20] phi() - [21] call play_init + [21] phi() + [22] call play_init to:main::@19 main::@19: scope:[main] from main::@18 - [22] phi() - [23] call play_spawn_current + [23] phi() + [24] call play_spawn_current to:main::@20 main::@20: scope:[main] from main::@19 - [24] phi() - [25] call render_playfield + [25] phi() + [26] call render_playfield to:main::@21 main::@21: scope:[main] from main::@20 - [26] (byte~) current_ypos#83 ← (byte) current_ypos#18 - [27] (byte~) current_xpos#109 ← (byte) current_xpos#23 - [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 - [29] (byte~) current_piece_char#87 ← (byte) current_piece_char#12 - [30] call render_current - [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [27] (byte~) current_ypos#84 ← (byte) current_ypos#18 + [28] (byte~) current_xpos#110 ← (byte) current_xpos#23 + [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 + [30] (byte~) current_piece_char#88 ← (byte) current_piece_char#12 + [31] call render_current + [32] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@21 main::@7 - [32] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) current_movedown_counter#10 ) - [32] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) keyboard_events_size#16 ) - [32] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@7/(byte) current_piece_char#1 ) - [32] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@7/(byte) current_ypos#13 ) - [32] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@7/(byte) current_xpos#19 ) - [32] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@7/(byte*) current_piece_gfx#14 ) - [32] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) current_orientation#19 ) - [32] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#71 main::@7/(byte*) current_piece#10 ) - [32] (byte) render_screen_render#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@7/(byte) render_screen_render#31 ) - [32] (byte) render_screen_show#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) render_screen_show#24 ) +main::@1: scope:[main] from main::@21 main::@28 main::@30 + [33] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) current_movedown_counter#10 main::@28/(byte) current_movedown_counter#10 ) + [33] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) keyboard_events_size#16 main::@28/(byte) keyboard_events_size#16 ) + [33] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@30/(byte) current_piece_char#1 main::@28/(byte) current_piece_char#1 ) + [33] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@30/(byte) current_ypos#13 main::@28/(byte) current_ypos#13 ) + [33] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@30/(byte) current_xpos#19 main::@28/(byte) current_xpos#19 ) + [33] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@30/(byte*) current_piece_gfx#14 main::@28/(byte*) current_piece_gfx#14 ) + [33] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) current_orientation#19 main::@28/(byte) current_orientation#19 ) + [33] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#71 main::@30/(byte*) current_piece#10 main::@28/(byte*) current_piece#10 ) + [33] (byte) render_screen_render#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@30/(byte) render_screen_render#11 ) + [33] (byte) render_screen_show#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte) render_screen_show#13 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [34] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 - [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 + [35] phi() [36] call render_show to:main::@23 main::@23: scope:[main] from main::@6 @@ -7032,688 +7196,685 @@ main::@25: scope:[main] from main::@24 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@26 main::@26: scope:[main] from main::@25 - [46] (byte~) main::$13 ← (byte) play_move_down::return#3 - [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 + [46] (byte~) main::$12 ← (byte) play_move_down::return#3 + [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 [49] call play_move_leftright [50] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@27 main::@27: scope:[main] from main::@26 - [51] (byte~) main::$14 ← (byte) play_move_leftright::return#4 - [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 + [51] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 [54] call play_move_rotate [55] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 to:main::@28 main::@28: scope:[main] from main::@27 - [56] (byte~) main::$15 ← (byte) play_move_rotate::return#4 - [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 - [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 + [56] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 + [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 to:main::@13 main::@13: scope:[main] from main::@28 - [59] (byte~) render_screen_render#69 ← (byte) render_screen_render#15 + [59] (byte~) render_screen_render#63 ← (byte) render_screen_render#16 [60] call render_playfield to:main::@29 main::@29: scope:[main] from main::@13 - [61] (byte~) current_ypos#84 ← (byte) current_ypos#13 - [62] (byte~) render_screen_render#68 ← (byte) render_screen_render#15 - [63] (byte~) current_xpos#110 ← (byte) current_xpos#19 - [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 - [65] (byte~) current_piece_char#88 ← (byte) current_piece_char#1 + [61] (byte~) current_ypos#85 ← (byte) current_ypos#13 + [62] (byte~) render_screen_render#62 ← (byte) render_screen_render#16 + [63] (byte~) current_xpos#111 ← (byte) current_xpos#19 + [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 + [65] (byte~) current_piece_char#89 ← (byte) current_piece_char#1 [66] call render_current to:main::@30 main::@30: scope:[main] from main::@29 [67] phi() [68] call render_screen_swap - to:main::@7 -main::@7: scope:[main] from main::@28 main::@30 - [69] (byte) render_screen_render#31 ← phi( main::@28/(byte) render_screen_render#15 main::@30/(byte) render_screen_render#10 ) - [69] (byte) render_screen_show#24 ← phi( main::@28/(byte) render_screen_show#15 main::@30/(byte) render_screen_show#11 ) - [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 render_screen_swap: scope:[render_screen_swap] from main::@30 - [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 - [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [73] return + [71] return to:@return render_current: scope:[render_current] from main::@21 main::@29 - [74] (byte) current_piece_char#62 ← phi( main::@21/(byte~) current_piece_char#87 main::@29/(byte~) current_piece_char#88 ) - [74] (byte*) current_piece_gfx#52 ← phi( main::@21/(byte*~) current_piece_gfx#99 main::@29/(byte*~) current_piece_gfx#100 ) - [74] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#109 main::@29/(byte~) current_xpos#110 ) - [74] (byte) render_screen_render#27 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#68 ) - [74] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#83 main::@29/(byte~) current_ypos#84 ) - [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [72] (byte) current_piece_char#63 ← phi( main::@21/(byte~) current_piece_char#88 main::@29/(byte~) current_piece_char#89 ) + [72] (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*~) current_piece_gfx#100 main::@29/(byte*~) current_piece_gfx#101 ) + [72] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#110 main::@29/(byte~) current_xpos#111 ) + [72] (byte) render_screen_render#28 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#62 ) + [72] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#84 main::@29/(byte~) current_ypos#85 ) + [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (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::@3 - [76] (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 ) - [76] (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 ) - [76] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) - [77] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 + [74] (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 ) + [74] (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 ) + [74] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@3/(byte) render_current::ypos2#1 ) + [75] 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::@1 render_current::@13 - [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [76] (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 - [79] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) - [80] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [81] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 - [82] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [77] (byte) render_current::i#8 ← phi( render_current::@5/(byte) render_current::i#10 render_current::@7/(byte) render_current::i#1 ) + [78] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [79] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 + [80] 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::@3 - [83] return + [81] return to:@return render_current::@13: scope:[render_current] from render_current::@1 - [84] 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 + [82] 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 - [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 - [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) - [87] (byte) render_current::xpos#0 ← (byte) current_xpos#47 + [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 + [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) + [85] (byte) render_current::xpos#0 ← (byte) current_xpos#47 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@2 render_current::@5 - [88] (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 ) - [88] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) - [88] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) - [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) - [90] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 - [91] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@5 + [86] (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 ) + [86] (byte) render_current::xpos#2 ← phi( render_current::@2/(byte) render_current::xpos#0 render_current::@5/(byte) render_current::xpos#1 ) + [86] (byte) render_current::i#4 ← phi( render_current::@2/(byte) render_current::i#3 render_current::@5/(byte) render_current::i#10 ) + [87] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) + [88] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 + [89] 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 - [92] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 + [90] 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 - [93] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 + [91] *((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 - [94] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [95] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [96] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@4 + [92] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [93] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [94] 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::@13 main::@20 - [97] (byte) render_screen_render#18 ← phi( main::@13/(byte~) render_screen_render#69 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) + [95] (byte) render_screen_render#19 ← phi( main::@13/(byte~) render_screen_render#63 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [98] (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 ) - [98] (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 ) - [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 - [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [96] (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 ) + [96] (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 ) + [97] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 + [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [102] (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 ) - [102] (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 ) - [102] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [103] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [104] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [105] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [106] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [107] 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 + [100] (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 ) + [100] (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 ) + [100] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [102] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [103] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [104] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [105] 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 - [108] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [109] 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 + [106] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [107] 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 - [110] return + [108] return to:@return play_move_rotate: scope:[play_move_rotate] from main::@27 - [111] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + [109] 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 - [112] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [110] 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 - [113] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) - [113] (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 ) - [113] (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 ) - [114] return + [111] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) + [111] (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 ) + [111] (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 ) + [112] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [115] (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 - [116] (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 + [113] (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 + [114] (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 - [117] (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 ) - [118] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 - [119] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 - [120] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 - [122] call play_collision - [123] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [115] (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 ) + [116] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 + [117] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 + [118] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 + [120] call play_collision + [121] (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 - [124] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [125] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [122] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + [123] 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 - [126] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [124] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [125] (byte*) current_piece_gfx#3 ← (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 - [128] (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 - [129] (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 + [126] (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 + [127] (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 - [130] (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 ) - [130] (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 ) - [130] (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 ) - [130] (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 ) - [131] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [132] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [128] (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 ) + [128] (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 ) + [128] (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 ) + [128] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#74 play_move_leftright::@1/(byte*~) current_piece#75 play_move_leftright::@7/(byte*~) current_piece#76 play_move_rotate::@4/(byte*~) current_piece#77 ) + [129] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [130] (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 - [133] (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 ) - [133] (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 ) - [133] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [134] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [135] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [131] (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 ) + [131] (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 ) + [131] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [132] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [133] (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 - [136] (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 ) - [136] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [136] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [137] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [138] 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 + [134] (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 ) + [134] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [134] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [135] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [136] 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 - [139] 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 + [137] 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 - [140] (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 ) - [141] return + [138] (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 ) + [139] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [142] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [143] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [140] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [141] 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 - [144] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [142] 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 - [145] 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 + [143] 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 - [146] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [147] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [148] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [144] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [145] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [146] 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 - [149] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [150] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [151] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [147] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [148] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [149] 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 - [152] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [150] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [153] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [151] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from main::@26 - [154] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + [152] 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 - [155] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [153] 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 - [156] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [157] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 - [158] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 - [160] call play_collision - [161] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [154] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 + [156] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 + [158] call play_collision + [159] (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 - [162] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [163] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [160] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + [161] 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 - [164] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 + [162] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 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 - [165] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) - [165] (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 ) - [166] return + [163] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) + [163] (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 ) + [164] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [167] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [168] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 - [169] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 - [171] call play_collision - [172] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [165] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [166] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 + [167] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [168] (byte*~) current_piece#75 ← (byte*) current_piece#10 + [169] call play_collision + [170] (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 - [173] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [174] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [171] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [172] 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 - [175] (byte) current_xpos#4 ← -- (byte) current_xpos#1 + [173] (byte) current_xpos#4 ← -- (byte) current_xpos#1 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from main::@25 - [176] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [177] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + [174] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 + [175] 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 - [178] phi() + [176] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [179] (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 ) - [180] call keyboard_event_pressed - [181] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [177] (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 ) + [178] call keyboard_event_pressed + [179] (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 - [182] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [183] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [180] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [181] 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 - [184] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [182] 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 - [185] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [183] (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 - [186] (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 ) - [187] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [184] (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 ) + [185] 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 - [188] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [186] (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 - [189] (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 ) - [190] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [187] (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 ) + [188] 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 - [191] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [192] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 - [193] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 - [195] call play_collision - [196] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [189] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [190] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 + [191] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 + [193] call play_collision + [194] (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 - [197] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [198] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [195] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [196] 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 - [199] phi() - [200] call play_lock_current + [197] phi() + [198] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [201] phi() - [202] call play_remove_lines + [199] phi() + [200] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [203] phi() - [204] call play_spawn_current - [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [201] phi() + [202] call play_spawn_current + [203] (byte*~) current_piece#78 ← (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 - [206] (byte) current_piece_char#20 ← phi( play_move_down::@20/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) - [206] (byte) current_xpos#33 ← phi( play_move_down::@20/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) - [206] (byte*) current_piece_gfx#26 ← phi( play_move_down::@20/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) - [206] (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 ) - [206] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#77 play_move_down::@6/(byte*) current_piece#16 ) - [206] (byte) current_ypos#29 ← phi( play_move_down::@20/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) + [204] (byte) current_piece_char#20 ← phi( play_move_down::@20/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) + [204] (byte) current_xpos#33 ← phi( play_move_down::@20/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) + [204] (byte*) current_piece_gfx#26 ← phi( play_move_down::@20/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) + [204] (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 ) + [204] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#78 play_move_down::@6/(byte*) current_piece#16 ) + [204] (byte) current_ypos#29 ← phi( play_move_down::@20/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [207] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) - [207] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) - [207] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) - [207] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [207] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [207] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) - [207] (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 ) - [207] (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 ) - [208] return + [205] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) + [205] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) + [205] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) + [205] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [205] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [205] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) + [205] (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 ) + [205] (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 ) + [206] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [209] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 + [207] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 to:play_move_down::@7 play_spawn_current: scope:[play_spawn_current] from main::@19 play_move_down::@20 - [210] phi() + [208] phi() to:play_spawn_current::@1 play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [211] (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 ) - [212] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + [209] (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 ) + [210] 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 - [213] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [214] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) - [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) - [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [211] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [212] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) + [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) + [215] (byte) current_piece_char#12 ← *((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 - [218] return + [216] return to:@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [219] phi() - [220] call sid_rnd - [221] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [217] phi() + [218] call sid_rnd + [219] (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 - [222] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [223] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [220] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [221] (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 - [224] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [222] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [225] return + [223] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [226] phi() + [224] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [227] (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 ) - [227] (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 ) - [227] (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 ) + [225] (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 ) + [225] (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 ) + [225] (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 - [228] (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 ) - [228] (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 ) - [228] (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 ) - [228] (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 ) - [229] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [230] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [231] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + [226] (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 ) + [226] (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 ) + [226] (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 ) + [226] (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 ) + [227] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [228] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [229] 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 - [232] (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 ) - [233] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [234] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [235] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [236] 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 + [230] (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 ) + [231] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [232] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [233] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [234] 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 - [237] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [235] 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 - [238] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [236] (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 - [239] (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 ) - [240] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [241] 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 + [237] (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 ) + [238] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [239] 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 - [242] (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 ) - [243] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [240] (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 ) + [241] 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 - [244] return + [242] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [245] *((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 - [246] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [243] *((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 + [244] (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 - [247] phi() + [245] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (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 - [249] (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 ) - [249] (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 ) - [249] (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 ) - [250] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [251] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 + [247] (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 ) + [247] (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 ) + [247] (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 ) + [248] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [249] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [252] (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 ) - [252] (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 ) - [252] (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 ) - [253] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [254] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [250] (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 ) + [250] (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 ) + [250] (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 ) + [251] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [252] if(*((byte*) current_piece_gfx#20 + (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 - [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 + [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [256] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [257] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [258] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [254] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [255] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [256] 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 - [259] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [260] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [261] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [257] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [258] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [259] 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 - [262] return + [260] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [263] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [261] (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 - [264] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [262] (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 - [265] (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 ) - [266] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [267] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [268] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [269] (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) + [263] (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 ) + [264] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [265] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [266] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [267] (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 - [270] return + [268] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@24 - [271] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [269] 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 - [272] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [273] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [270] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [271] (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 - [274] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [274] (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 ) - [275] return + [272] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [272] (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 ) + [273] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - [276] phi() + [274] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [277] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [277] (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 ) - [277] (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 ) - [278] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [279] call keyboard_matrix_read - [280] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [275] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [275] (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 ) + [275] (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 ) + [276] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [277] call keyboard_matrix_read + [278] (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 - [281] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [282] 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 + [279] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [280] 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 - [283] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [281] (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 - [284] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [284] (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 ) - [285] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [286] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [282] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [282] (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 ) + [283] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [284] 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 - [287] phi() - [288] call keyboard_event_pressed - [289] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [285] phi() + [286] call keyboard_event_pressed + [287] (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 - [290] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [291] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [288] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [289] 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 - [292] phi() + [290] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [293] (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 ) - [294] call keyboard_event_pressed - [295] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [291] (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 ) + [292] call keyboard_event_pressed + [293] (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 - [296] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [297] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [294] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [295] 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 - [298] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [296] (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 - [299] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [300] call keyboard_event_pressed - [301] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [297] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [298] call keyboard_event_pressed + [299] (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 - [302] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [303] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [300] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [301] 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 - [304] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [302] (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 - [305] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [306] call keyboard_event_pressed - [307] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [303] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [304] call keyboard_event_pressed + [305] (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 - [308] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [309] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [306] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [307] 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 - [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [308] (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 - [311] return + [309] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [312] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [312] (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 ) - [312] (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 ) - [313] (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) - [314] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [315] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [310] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [310] (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 ) + [310] (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 ) + [311] (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) + [312] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [313] 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 - [316] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [314] 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 - [317] (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) - [318] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [315] (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) + [316] 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 - [319] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [320] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [317] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [318] (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 - [321] (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 ) - [322] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [323] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [324] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [319] (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 ) + [320] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [321] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [322] 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 - [325] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [323] *((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 - [326] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [327] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [328] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [324] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [325] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [326] (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 - [329] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [327] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [328] (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 - [331] return + [329] return to:@return render_show: scope:[render_show] from main::@6 - [332] if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [330] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [333] phi() + [331] phi() to:render_show::@2 render_show::@2: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [334] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [335] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [332] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [333] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [334] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@2 - [336] return + [335] return to:@return render_show::toD0181: scope:[render_show] from render_show - [337] phi() + [336] phi() to:render_show::@2 play_init: scope:[play_init] from main::@18 - [338] phi() + [337] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [339] (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 ) - [339] (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 ) - [339] (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 ) - [340] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [341] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [342] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [343] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [344] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [345] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [346] 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 + [338] (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 ) + [338] (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 ) + [338] (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 ) + [339] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [340] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [341] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [342] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [343] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [344] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [345] 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 - [347] *((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 + [346] *((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 - [348] return + [347] return to:@return sprites_irq_init: scope:[sprites_irq_init] from main::@17 asm { sei } - [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [355] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() + [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [354] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [357] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [360] return + [359] return to:@return sprites_init: scope:[sprites_init] from main::@16 - [361] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [362] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [363] *((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 - [365] (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 ) - [365] (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 ) - [366] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [367] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [368] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [369] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [370] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [371] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [364] (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 ) + [364] (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 ) + [365] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [366] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [368] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [369] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [370] 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 - [372] return + [371] return to:@return render_init: scope:[render_init] from main::@15 - [373] phi() + [372] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [374] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [373] *((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 - [375] phi() + [374] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [376] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@7 render_init::@7: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [377] *((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 + [376] *((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 + [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 @@ -7831,66 +7992,73 @@ sid_rnd_init: scope:[sid_rnd_init] from main sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init [440] return to:@return -irq: scope:[irq] from - [441] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 - [442] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [443] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 - [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 - [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 - [446] *((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 - [447] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 - to:irq::@5 -irq::@5: scope:[irq] from irq::@1 - [448] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 - [450] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 - [451] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 - [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [453] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 - [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [455] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 - [456] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 - [457] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [458] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 - [459] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [460] 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 - [461] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [462] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [463] (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 - [464] (byte) irq_raster_next#12 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#1 ) - [465] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 - [466] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [467] 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 - [468] (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 - [469] (byte) irq::raster_next#2 ← phi( irq::@3/(byte) irq::raster_next#0 irq::@8/(byte) irq::raster_next#1 ) - [470] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 - [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 - [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - to:irq::@return -irq::@return: scope:[irq] from irq::@4 - [473] return +sprites_irq: scope:[sprites_irq] from + [441] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [442] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [443] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + to:sprites_irq::@1 +sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 + [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 + [447] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@8 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 + [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [450] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [451] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [453] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 + to:sprites_irq::@3 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 + [455] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 + to:sprites_irq::@10 +sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 + [457] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [458] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [459] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@5 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 + [460] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) + [461] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 + [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [463] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 + to:sprites_irq::@12 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 + [464] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sprites_irq::@6 +sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 + [465] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) + [466] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 + [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + to:sprites_irq::@return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 + [468] return to:@return -irq::@2: scope:[irq] from irq::@5 - [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [475] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [476] (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 - [477] phi() - to:irq::@9 -irq::@9: scope:[irq] from irq::toSpritePtr2 - [478] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 - to:irq::@3 +sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 + [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [470] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [471] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:sprites_irq::toSpritePtr2 +sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 + [472] phi() + to:sprites_irq::@13 +sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@5 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 + [474] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [475] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [476] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [477] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [478] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [479] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + to:sprites_irq::@3 VARIABLE REGISTER WEIGHTS @@ -8084,51 +8252,51 @@ VARIABLE REGISTER WEIGHTS (byte) YELLOW (byte) current_movedown_counter (byte) current_movedown_counter#1 0.5333333333333333 -(byte) current_movedown_counter#10 0.4482758620689655 -(byte) current_movedown_counter#12 1.0833333333333333 +(byte) current_movedown_counter#10 4.222222222222222 +(byte) current_movedown_counter#12 10.363636363636363 (byte) current_movedown_fast (byte) current_movedown_slow (byte) current_orientation -(byte) current_orientation#10 0.4722222222222223 +(byte) current_orientation#10 3.371428571428571 (byte) current_orientation#14 0.32653061224489793 -(byte) current_orientation#19 0.8947368421052632 +(byte) current_orientation#19 6.941176470588235 (byte) current_orientation#29 4.0 (byte) current_orientation#4 3.0 (byte*) current_piece -(byte*) current_piece#10 0.3285714285714286 +(byte*) current_piece#10 1.8235294117647054 (byte*) current_piece#12 10.0 -(byte*) current_piece#16 0.5277777777777779 +(byte*) current_piece#16 3.428571428571428 (byte*) current_piece#20 6.0 (byte*~) current_piece#71 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#78 4.0 (byte) current_piece_char -(byte) current_piece_char#1 0.896551724137931 +(byte) current_piece_char#1 4.703703703703704 (byte) current_piece_char#12 0.6153846153846154 -(byte) current_piece_char#15 19.20754716981132 +(byte) current_piece_char#15 194.59615384615384 (byte) current_piece_char#20 6.0 -(byte) current_piece_char#62 46.09090909090909 -(byte~) current_piece_char#87 4.0 -(byte~) current_piece_char#88 22.0 +(byte) current_piece_char#63 46.09090909090909 +(byte~) current_piece_char#88 4.0 +(byte~) current_piece_char#89 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#1 0.2962962962962963 -(byte*~) current_piece_gfx#100 11.0 -(byte*) current_piece_gfx#14 1.4736842105263155 +(byte*~) current_piece_gfx#100 2.0 +(byte*~) current_piece_gfx#101 11.0 +(byte*) current_piece_gfx#14 7.588235294117647 (byte*) current_piece_gfx#16 0.5 -(byte*) current_piece_gfx#20 19.20754716981132 +(byte*) current_piece_gfx#20 194.59615384615384 (byte*) current_piece_gfx#26 6.0 (byte*) current_piece_gfx#3 4.0 -(byte*) current_piece_gfx#52 46.09090909090909 -(byte*~) current_piece_gfx#99 2.0 +(byte*) current_piece_gfx#53 46.09090909090909 (byte) current_xpos (byte) current_xpos#1 0.72 -(byte) current_xpos#10 2.2641509433962264 -(byte~) current_xpos#109 1.3333333333333333 -(byte~) current_xpos#110 7.333333333333333 -(byte) current_xpos#19 0.7906976744186045 +(byte) current_xpos#10 21.557692307692307 +(byte~) current_xpos#110 1.3333333333333333 +(byte~) current_xpos#111 7.333333333333333 +(byte) current_xpos#19 3.2926829268292686 (byte) current_xpos#2 4.0 (byte) current_xpos#23 0.5333333333333333 (byte) current_xpos#33 6.0 @@ -8136,12 +8304,12 @@ VARIABLE REGISTER WEIGHTS (byte) current_xpos#47 5.181818181818182 (byte) current_ypos (byte) current_ypos#0 4.0 -(byte) current_ypos#13 0.4571428571428572 +(byte) current_ypos#13 1.9558823529411762 (byte) current_ypos#18 0.5714285714285714 -(byte) current_ypos#21 0.5833333333333335 +(byte) current_ypos#21 3.485714285714285 (byte) current_ypos#29 6.0 -(byte~) current_ypos#83 1.0 -(byte~) current_ypos#84 4.4 +(byte~) current_ypos#84 1.0 +(byte~) current_ypos#85 4.4 (byte) current_ypos#9 15.0 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr @@ -8151,46 +8319,29 @@ 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 2.6666666666666665 -(byte) irq::ptr#1 2.4 -(byte) irq::ptr#2 3.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.2222222222222222 +(byte) irq_cnt#0 0.2 (byte) irq_cnt#1 4.0 -(byte) irq_cnt#13 20.0 +(byte) irq_cnt#14 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 0.2 +(byte) irq_raster_next#0 0.18181818181818182 (byte) irq_raster_next#1 1.0 -(byte) irq_raster_next#12 6.0 +(byte) irq_raster_next#13 6.0 (byte) irq_raster_next#2 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 0.2727272727272727 +(byte) irq_sprite_ptr#0 0.25 (byte) irq_sprite_ptr#1 20.0 (byte) irq_sprite_ptr#2 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 0.8095238095238095 +(byte) irq_sprite_ypos#0 0.7391304347826086 (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 (byte) keyboard_event_get::return#1 4.0 -(byte) keyboard_event_get::return#2 4.333333333333333 -(byte) keyboard_event_get::return#3 22.0 +(byte) keyboard_event_get::return#2 34.33333333333333 +(byte) keyboard_event_get::return#3 202.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 4.0 (byte~) keyboard_event_pressed::$1 4.0 @@ -8206,48 +8357,48 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 2002.0 +(byte/word/dword~) keyboard_event_scan::$11 20002.0 (byte~) keyboard_event_scan::$14 4.0 (byte~) keyboard_event_scan::$18 4.0 (byte~) keyboard_event_scan::$22 4.0 (byte~) keyboard_event_scan::$26 4.0 -(byte~) keyboard_event_scan::$3 2002.0 -(byte~) keyboard_event_scan::$4 2002.0 +(byte~) keyboard_event_scan::$3 20002.0 +(byte~) keyboard_event_scan::$4 20002.0 (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 1501.5 -(byte) keyboard_event_scan::col#2 286.0 +(byte) keyboard_event_scan::col#1 15001.5 +(byte) keyboard_event_scan::col#2 2857.4285714285716 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 2002.0 +(byte) keyboard_event_scan::event_type#0 20002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 202.0 -(byte) keyboard_event_scan::keycode#10 315.7692307692308 -(byte) keyboard_event_scan::keycode#11 50.5 -(byte) keyboard_event_scan::keycode#14 101.0 -(byte) keyboard_event_scan::keycode#15 525.75 +(byte) keyboard_event_scan::keycode#1 2002.0 +(byte) keyboard_event_scan::keycode#10 3154.230769230769 +(byte) keyboard_event_scan::keycode#11 500.5 +(byte) keyboard_event_scan::keycode#14 1001.0 +(byte) keyboard_event_scan::keycode#15 5250.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 151.5 -(byte) keyboard_event_scan::row#2 60.24 +(byte) keyboard_event_scan::row#1 1501.5 +(byte) keyboard_event_scan::row#2 600.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 128.05555555555557 +(byte) keyboard_event_scan::row_scan#0 1278.0555555555554 (byte[8]) keyboard_events (byte) keyboard_events_size -(byte) keyboard_events_size#1 2002.0 -(byte) keyboard_events_size#10 810.9000000000001 -(byte) keyboard_events_size#13 9.967741935483872 -(byte) keyboard_events_size#16 0.45454545454545453 -(byte) keyboard_events_size#19 1.8571428571428572 -(byte) keyboard_events_size#2 2002.0 -(byte) keyboard_events_size#29 43.57142857142858 -(byte) keyboard_events_size#30 1021.2 +(byte) keyboard_events_size#1 20002.0 +(byte) keyboard_events_size#10 8100.9000000000015 +(byte) keyboard_events_size#13 97.06451612903226 +(byte) keyboard_events_size#16 3.741935483870968 +(byte) keyboard_events_size#19 18.999999999999996 +(byte) keyboard_events_size#2 20002.0 +(byte) keyboard_events_size#29 429.2857142857143 +(byte) keyboard_events_size#30 10201.2 (byte) keyboard_events_size#4 3.0 (byte[8]) keyboard_matrix_col_bitmask (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 34.33333333333333 -(byte) keyboard_matrix_read::return#2 202.0 +(byte) keyboard_matrix_read::return#0 334.33333333333337 +(byte) keyboard_matrix_read::return#2 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 103.0 +(byte) keyboard_matrix_read::rowid#0 1003.0 (byte[8]) keyboard_matrix_row_bitmask (byte) keyboard_modifiers (byte) keyboard_modifiers#11 0.8 @@ -8258,34 +8409,33 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) keyboard_modifiers#5 20.0 (byte[8]) keyboard_scan_values (void()) main() -(byte~) main::$13 22.0 -(byte~) main::$14 22.0 -(byte~) main::$15 22.0 -(byte~) main::$9 22.0 +(byte~) main::$12 202.0 +(byte~) main::$13 202.0 +(byte~) main::$14 202.0 (byte) main::key_event -(byte) main::key_event#0 4.0 +(byte) main::key_event#0 36.72727272727273 (byte) main::render -(byte) main::render#1 4.4 -(byte) main::render#2 4.4 -(byte) main::render#3 22.0 +(byte) main::render#1 40.4 +(byte) main::render#2 40.4 +(byte) main::render#3 202.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 2002.0 +(byte~) play_collision::$7 20002.0 (byte) play_collision::c -(byte) play_collision::c#1 1001.0 -(byte) play_collision::c#2 222.44444444444446 +(byte) play_collision::c#1 10001.0 +(byte) play_collision::c#2 2222.4444444444443 (byte) play_collision::col -(byte) play_collision::col#1 500.5 -(byte) play_collision::col#2 638.25 -(byte~) play_collision::col#9 202.0 +(byte) play_collision::col#1 5000.5 +(byte) play_collision::col#2 6375.75 +(byte~) play_collision::col#9 2002.0 (byte) play_collision::i -(byte) play_collision::i#1 161.76923076923077 -(byte~) play_collision::i#11 202.0 -(byte~) play_collision::i#13 2002.0 -(byte) play_collision::i#2 1552.0 -(byte) play_collision::i#3 67.33333333333333 +(byte) play_collision::i#1 1615.6153846153845 +(byte~) play_collision::i#11 2002.0 +(byte~) play_collision::i#13 20002.0 +(byte) play_collision::i#2 15502.0 +(byte) play_collision::i#3 667.3333333333334 (byte) play_collision::l -(byte) play_collision::l#1 101.0 -(byte) play_collision::l#6 12.625 +(byte) play_collision::l#1 1001.0 +(byte) play_collision::l#6 125.125 (byte) play_collision::orientation (byte) play_collision::orientation#0 2.0 (byte) play_collision::orientation#1 2.0 @@ -8293,9 +8443,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::orientation#3 2.0 (byte) play_collision::orientation#4 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 47.76190476190476 +(byte*) play_collision::piece_gfx#0 476.3333333333333 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 78.71428571428571 +(byte*) play_collision::playfield_line#0 785.8571428571429 (byte) play_collision::return (byte) play_collision::return#0 4.0 (byte) play_collision::return#1 4.0 @@ -8307,7 +8457,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::xpos#1 1.0 (byte) play_collision::xpos#2 1.0 (byte) play_collision::xpos#3 1.0 -(byte) play_collision::xpos#5 4.954545454545454 +(byte) play_collision::xpos#5 45.86363636363637 (byte) play_collision::ypos (byte) play_collision::ypos#0 1.0 (byte) play_collision::ypos#1 1.3333333333333333 @@ -8316,8 +8466,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::ypos#4 5.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 4.0 -(byte) play_collision::ypos2#1 50.5 -(byte) play_collision::ypos2#2 87.06666666666668 +(byte) play_collision::ypos2#1 500.5 +(byte) play_collision::ypos2#2 867.0666666666667 (void()) play_init() (byte~) play_init::$1 22.0 (byte) play_init::idx @@ -8331,32 +8481,32 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*) play_init::pli#2 8.25 (void()) play_lock_current() (byte) play_lock_current::c -(byte) play_lock_current::c#1 1001.0 -(byte) play_lock_current::c#2 400.4 +(byte) play_lock_current::c#1 10001.0 +(byte) play_lock_current::c#2 4000.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 202.0 -(byte) play_lock_current::col#1 500.5 -(byte) play_lock_current::col#2 776.0 +(byte) play_lock_current::col#0 2002.0 +(byte) play_lock_current::col#1 5000.5 +(byte) play_lock_current::col#2 7751.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 233.66666666666669 -(byte) play_lock_current::i#2 1552.0 -(byte) play_lock_current::i#3 67.33333333333333 -(byte~) play_lock_current::i#7 202.0 -(byte~) play_lock_current::i#9 2002.0 +(byte) play_lock_current::i#1 2333.6666666666665 +(byte) play_lock_current::i#2 15502.0 +(byte) play_lock_current::i#3 667.3333333333334 +(byte~) play_lock_current::i#7 2002.0 +(byte~) play_lock_current::i#9 20002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 101.0 -(byte) play_lock_current::l#6 16.833333333333332 +(byte) play_lock_current::l#1 1001.0 +(byte) play_lock_current::l#6 166.83333333333334 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 110.19999999999999 +(byte*) play_lock_current::playfield_line#0 1100.2 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 4.0 -(byte) play_lock_current::ypos2#1 50.5 -(byte) play_lock_current::ypos2#2 27.727272727272727 +(byte) play_lock_current::ypos2#1 500.5 +(byte) play_lock_current::ypos2#2 273.1818181818182 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 4.0 (byte~) play_move_down::$2 4.0 (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 6.5 +(byte) play_move_down::key_event#0 51.5 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 1.0 (byte) play_move_down::movedown#2 4.0 @@ -8364,59 +8514,59 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_move_down::movedown#6 6.0 (byte) play_move_down::movedown#7 5.0 (byte) play_move_down::return -(byte) play_move_down::return#2 3.6666666666666665 -(byte) play_move_down::return#3 22.0 +(byte) play_move_down::return#2 33.666666666666664 +(byte) play_move_down::return#3 202.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 4.0 (byte~) play_move_leftright::$8 4.0 (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 7.5 +(byte) play_move_leftright::key_event#0 52.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 3.6666666666666665 -(byte) play_move_leftright::return#4 22.0 +(byte) play_move_leftright::return#1 33.666666666666664 +(byte) play_move_leftright::return#4 202.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 4.0 (byte~) play_move_rotate::$6 4.0 (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 7.5 +(byte) play_move_rotate::key_event#0 52.5 (byte) play_move_rotate::orientation (byte) play_move_rotate::orientation#1 4.0 (byte) play_move_rotate::orientation#2 4.0 (byte) play_move_rotate::orientation#3 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 3.6666666666666665 -(byte) play_move_rotate::return#4 22.0 +(byte) play_move_rotate::return#1 33.666666666666664 +(byte) play_move_rotate::return#4 202.0 (void()) play_remove_lines() (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 600.5999999999999 +(byte) play_remove_lines::c#0 6000.6 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 420.59999999999997 -(byte) play_remove_lines::full#4 400.4 +(byte) play_remove_lines::full#2 4200.6 +(byte) play_remove_lines::full#4 4000.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 161.76923076923077 -(byte) play_remove_lines::r#2 1552.0 -(byte) play_remove_lines::r#3 202.0 +(byte) play_remove_lines::r#1 1615.6153846153845 +(byte) play_remove_lines::r#2 15502.0 +(byte) play_remove_lines::r#3 2002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 551.0 -(byte) play_remove_lines::w#11 134.66666666666666 -(byte) play_remove_lines::w#12 202.0 -(byte) play_remove_lines::w#2 202.0 -(byte) play_remove_lines::w#3 202.0 -(byte) play_remove_lines::w#4 443.42857142857144 -(byte) play_remove_lines::w#6 168.33333333333331 +(byte) play_remove_lines::w#1 5501.0 +(byte) play_remove_lines::w#11 1334.6666666666667 +(byte) play_remove_lines::w#12 2002.0 +(byte) play_remove_lines::w#2 2002.0 +(byte) play_remove_lines::w#3 2002.0 +(byte) play_remove_lines::w#4 4429.142857142857 +(byte) play_remove_lines::w#6 1668.3333333333335 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 1501.5 -(byte) play_remove_lines::x#2 250.25 +(byte) play_remove_lines::x#1 15001.5 +(byte) play_remove_lines::x#2 2500.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 151.5 -(byte) play_remove_lines::y#8 14.428571428571429 +(byte) play_remove_lines::y#1 1501.5 +(byte) play_remove_lines::y#8 143.0 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 202.0 +(byte~) play_spawn_current::$1 2002.0 (byte~) play_spawn_current::$3 0.13333333333333333 (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 202.0 -(byte) play_spawn_current::piece_idx#2 35.00000000000001 +(byte) play_spawn_current::piece_idx#1 2002.0 +(byte) play_spawn_current::piece_idx#2 334.99999999999994 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx @@ -8523,17 +8673,18 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) render_screen_original::y#1 16.5 (byte) render_screen_original::y#8 1.0 (byte) render_screen_render -(byte) render_screen_render#10 3.25 -(byte) render_screen_render#15 1.277777777777778 -(byte) render_screen_render#18 8.615384615384615 -(byte) render_screen_render#27 5.090909090909091 -(byte) render_screen_render#31 16.5 -(byte~) render_screen_render#68 5.5 -(byte~) render_screen_render#69 22.0 +(byte) render_screen_render#11 3.25 +(byte) render_screen_render#16 1.0 +(byte) render_screen_render#19 8.615384615384615 +(byte) render_screen_render#28 5.090909090909091 +(byte~) render_screen_render#62 5.5 +(byte~) render_screen_render#63 22.0 (byte) render_screen_show -(byte) render_screen_show#11 4.333333333333333 -(byte) render_screen_show#15 0.8604651162790697 -(byte) render_screen_show#24 16.5 +(byte) render_screen_show#13 4.333333333333333 +(byte) render_screen_show#16 0.39534883720930225 +(byte) render_screen_showing +(byte) render_screen_showing#0 0.5714285714285714 +(byte) render_screen_showing#1 20.0 (void()) render_screen_swap() (void()) render_show() (byte) render_show::d018val @@ -8566,8 +8717,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*[PLAYFIELD_LINES#0]) screen_lines_2 (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 34.33333333333333 -(byte) sid_rnd::return#2 202.0 +(byte) sid_rnd::return#0 334.33333333333337 +(byte) sid_rnd::return#2 2002.0 (void()) sid_rnd_init() (void()) sprites_init() (byte) sprites_init::s @@ -8578,6 +8729,25 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) sprites_init::xpos (byte) sprites_init::xpos#1 7.333333333333333 (byte) sprites_init::xpos#2 8.25 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 4.0 +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 2.5 +(byte) sprites_irq::ptr#1 2.6666666666666665 +(byte) sprites_irq::ptr#2 4.0 +(byte) sprites_irq::ptr#3 2.6666666666666665 +(byte) sprites_irq::ptr#4 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 2.6666666666666665 +(byte) sprites_irq::raster_next#1 4.0 +(byte) sprites_irq::raster_next#2 6.0 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 2.5 (void()) sprites_irq_init() (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 @@ -8586,27 +8756,27 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte*) toSpritePtr1_sprite Initial phi equivalence classes -[ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -[ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +[ render_screen_show#16 render_screen_show#13 ] +[ render_screen_render#16 render_screen_render#11 ] [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -[ current_ypos#9 current_ypos#83 current_ypos#84 ] -[ render_screen_render#27 render_screen_render#68 ] -[ current_xpos#47 current_xpos#109 current_xpos#110 ] -[ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] -[ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] +[ current_ypos#9 current_ypos#84 current_ypos#85 ] +[ render_screen_render#28 render_screen_render#62 ] +[ current_xpos#47 current_xpos#110 current_xpos#111 ] +[ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] +[ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] [ 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_screen_render#18 render_screen_render#69 ] +[ render_screen_render#19 render_screen_render#63 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#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#73 current_piece#74 current_piece#75 current_piece#76 ] +[ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] [ 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 ] @@ -8619,7 +8789,7 @@ Initial phi equivalence classes [ 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_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -[ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] +[ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] @@ -8661,26 +8831,26 @@ Initial phi equivalence classes [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] [ render_screen_original::x#7 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 ] -[ 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#13 irq_raster_next#2 irq_raster_next#1 ] +[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Added variable render_screen_showing#0 to zero page equivalence class [ render_screen_showing#0 ] 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 main::$9 to zero page equivalence class [ main::$9 ] 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::$13 to zero page equivalence class [ main::$13 ] +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::$14 to zero page equivalence class [ main::$14 ] +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::$15 to zero page equivalence class [ main::$15 ] +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::$5 to zero page equivalence class [ render_current::$5 ] Added variable render_current::screen_line#0 to zero page equivalence class [ render_current::screen_line#0 ] @@ -8731,44 +8901,47 @@ Added variable keyboard_event_scan::$4 to zero page equivalence class [ keyboard Added variable keyboard_event_scan::event_type#0 to zero page equivalence class [ keyboard_event_scan::event_type#0 ] Added variable keyboard_event_scan::$11 to zero page equivalence class [ keyboard_event_scan::$11 ] Added variable keyboard_matrix_read::return#0 to zero page equivalence class [ keyboard_matrix_read::return#0 ] +Added variable render_screen_showing#1 to zero page equivalence class [ render_screen_showing#1 ] Added variable play_init::$1 to zero page equivalence class [ play_init::$1 ] Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init::s2#0 ] Added variable render_init::$12 to zero page equivalence class [ render_init::$12 ] Added variable render_init::$22 to zero page equivalence class [ render_init::$22 ] Added variable render_init::$23 to zero page equivalence class [ render_init::$23 ] -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 sprites_irq::ypos#0 to zero page equivalence class [ sprites_irq::ypos#0 ] +Added variable sprites_irq::ptr#0 to zero page equivalence class [ sprites_irq::ptr#0 ] +Added variable sprites_irq::ptr#3 to zero page equivalence class [ sprites_irq::ptr#3 ] +Added variable sprites_irq::ptr#4 to zero page equivalence class [ sprites_irq::ptr#4 ] 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 sprites_irq::$4 to zero page equivalence class [ sprites_irq::$4 ] +Added variable irq_cnt#14 to zero page equivalence class [ irq_cnt#14 ] 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 ] +Added variable sprites_irq::ptr#1 to zero page equivalence class [ sprites_irq::ptr#1 ] +Added variable sprites_irq::ptr#2 to zero page equivalence class [ sprites_irq::ptr#2 ] Complete equivalence classes -[ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -[ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +[ render_screen_show#16 render_screen_show#13 ] +[ render_screen_render#16 render_screen_render#11 ] [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -[ current_ypos#9 current_ypos#83 current_ypos#84 ] -[ render_screen_render#27 render_screen_render#68 ] -[ current_xpos#47 current_xpos#109 current_xpos#110 ] -[ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] -[ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] +[ current_ypos#9 current_ypos#84 current_ypos#85 ] +[ render_screen_render#28 render_screen_render#62 ] +[ current_xpos#47 current_xpos#110 current_xpos#111 ] +[ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] +[ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] [ 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_screen_render#18 render_screen_render#69 ] +[ render_screen_render#19 render_screen_render#63 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#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#73 current_piece#74 current_piece#75 current_piece#76 ] +[ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] [ 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 ] @@ -8781,7 +8954,7 @@ Complete equivalence classes [ 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_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -[ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] +[ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] @@ -8823,26 +8996,26 @@ Complete equivalence classes [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] [ render_screen_original::x#7 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 ] -[ 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#13 irq_raster_next#2 irq_raster_next#1 ] +[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ render_screen_showing#0 ] [ irq_raster_next#0 ] [ irq_sprite_ypos#0 ] [ irq_sprite_ptr#0 ] [ irq_cnt#0 ] -[ main::$9 ] [ keyboard_event_get::return#3 ] [ main::key_event#0 ] [ play_move_down::key_event#0 ] [ play_move_down::return#3 ] -[ main::$13 ] +[ main::$12 ] [ main::render#1 ] [ play_move_leftright::key_event#0 ] [ play_move_leftright::return#4 ] -[ main::$14 ] +[ main::$13 ] [ main::render#2 ] [ play_move_rotate::key_event#0 ] [ play_move_rotate::return#4 ] -[ main::$15 ] +[ main::$14 ] [ main::render#3 ] [ render_current::$5 ] [ render_current::screen_line#0 ] @@ -8893,43 +9066,46 @@ Complete equivalence classes [ keyboard_event_scan::event_type#0 ] [ keyboard_event_scan::$11 ] [ keyboard_matrix_read::return#0 ] +[ render_screen_showing#1 ] [ play_init::$1 ] [ sprites_init::s2#0 ] [ render_init::$12 ] [ render_init::$22 ] [ render_init::$23 ] -[ irq::ypos#0 ] -[ irq::ptr#0 ] -[ irq::ptr#1 ] -[ irq::ptr#2 ] +[ sprites_irq::ypos#0 ] +[ sprites_irq::ptr#0 ] +[ sprites_irq::ptr#3 ] +[ sprites_irq::ptr#4 ] [ irq_cnt#1 ] [ irq_sprite_ypos#2 ] [ irq_sprite_ptr#2 ] -[ irq::$3 ] -[ irq_cnt#13 ] +[ sprites_irq::$4 ] +[ irq_cnt#14 ] [ irq_sprite_ypos#1 ] [ irq_sprite_ptr#1 ] -Allocated zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -Allocated zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +[ sprites_irq::ptr#1 ] +[ sprites_irq::ptr#2 ] +Allocated zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Allocated zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] Allocated zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Allocated zp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] -Allocated zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] -Allocated zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] -Allocated zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] -Allocated zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] +Allocated zp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] +Allocated zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] +Allocated zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] +Allocated zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] +Allocated zp ZP_BYTE:10 [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] Allocated zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Allocated zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] Allocated zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] Allocated zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] Allocated zp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] -Allocated zp ZP_BYTE:16 [ render_screen_render#18 render_screen_render#69 ] +Allocated zp ZP_BYTE:16 [ render_screen_render#19 render_screen_render#63 ] Allocated zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] Allocated zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Allocated zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] Allocated zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] Allocated zp ZP_BYTE:22 [ play_move_rotate::return#1 ] Allocated zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Allocated zp ZP_WORD:24 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] +Allocated zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] Allocated zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] Allocated zp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] Allocated zp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] @@ -8942,7 +9118,7 @@ Allocated zp ZP_BYTE:34 [ play_collision::return#14 ] Allocated zp ZP_BYTE:35 [ play_move_leftright::return#1 ] Allocated zp ZP_BYTE:36 [ 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_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Allocated zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] +Allocated zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] Allocated zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Allocated zp ZP_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] Allocated zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] @@ -8984,26 +9160,26 @@ Allocated zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original: Allocated zp ZP_BYTE:85 [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] Allocated zp ZP_WORD:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] Allocated zp ZP_BYTE:88 [ render_screen_original::x#7 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Allocated zp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] -Allocated zp ZP_BYTE:90 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] -Allocated zp ZP_BYTE:91 [ irq_raster_next#0 ] -Allocated zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] -Allocated zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] -Allocated zp ZP_BYTE:94 [ irq_cnt#0 ] -Allocated zp ZP_BYTE:95 [ main::$9 ] +Allocated zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] +Allocated zp ZP_BYTE:90 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Allocated zp ZP_BYTE:91 [ render_screen_showing#0 ] +Allocated zp ZP_BYTE:92 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] +Allocated zp ZP_BYTE:95 [ irq_cnt#0 ] Allocated zp ZP_BYTE:96 [ keyboard_event_get::return#3 ] Allocated zp ZP_BYTE:97 [ main::key_event#0 ] Allocated zp ZP_BYTE:98 [ play_move_down::key_event#0 ] Allocated zp ZP_BYTE:99 [ play_move_down::return#3 ] -Allocated zp ZP_BYTE:100 [ main::$13 ] +Allocated zp ZP_BYTE:100 [ main::$12 ] Allocated zp ZP_BYTE:101 [ main::render#1 ] Allocated zp ZP_BYTE:102 [ play_move_leftright::key_event#0 ] Allocated zp ZP_BYTE:103 [ play_move_leftright::return#4 ] -Allocated zp ZP_BYTE:104 [ main::$14 ] +Allocated zp ZP_BYTE:104 [ main::$13 ] Allocated zp ZP_BYTE:105 [ main::render#2 ] Allocated zp ZP_BYTE:106 [ play_move_rotate::key_event#0 ] Allocated zp ZP_BYTE:107 [ play_move_rotate::return#4 ] -Allocated zp ZP_BYTE:108 [ main::$15 ] +Allocated zp ZP_BYTE:108 [ main::$14 ] Allocated zp ZP_BYTE:109 [ main::render#3 ] Allocated zp ZP_BYTE:110 [ render_current::$5 ] Allocated zp ZP_WORD:111 [ render_current::screen_line#0 ] @@ -9054,22 +9230,25 @@ Allocated zp ZP_BYTE:159 [ keyboard_event_scan::$4 ] Allocated zp ZP_BYTE:160 [ keyboard_event_scan::event_type#0 ] Allocated zp ZP_BYTE:161 [ keyboard_event_scan::$11 ] Allocated zp ZP_BYTE:162 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:163 [ play_init::$1 ] -Allocated zp ZP_BYTE:164 [ sprites_init::s2#0 ] -Allocated zp ZP_WORD:165 [ render_init::$12 ] -Allocated zp ZP_BYTE:167 [ render_init::$22 ] -Allocated zp ZP_BYTE:168 [ render_init::$23 ] -Allocated zp ZP_BYTE:169 [ irq::ypos#0 ] -Allocated zp ZP_BYTE:170 [ irq::ptr#0 ] -Allocated zp ZP_BYTE:171 [ irq::ptr#1 ] -Allocated zp ZP_BYTE:172 [ irq::ptr#2 ] -Allocated zp ZP_BYTE:173 [ irq_cnt#1 ] -Allocated zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] -Allocated zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] -Allocated zp ZP_BYTE:176 [ irq::$3 ] -Allocated zp ZP_BYTE:177 [ irq_cnt#13 ] -Allocated zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] -Allocated zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:163 [ render_screen_showing#1 ] +Allocated zp ZP_BYTE:164 [ play_init::$1 ] +Allocated zp ZP_BYTE:165 [ sprites_init::s2#0 ] +Allocated zp ZP_WORD:166 [ render_init::$12 ] +Allocated zp ZP_BYTE:168 [ render_init::$22 ] +Allocated zp ZP_BYTE:169 [ render_init::$23 ] +Allocated zp ZP_BYTE:170 [ sprites_irq::ypos#0 ] +Allocated zp ZP_BYTE:171 [ sprites_irq::ptr#0 ] +Allocated zp ZP_BYTE:172 [ sprites_irq::ptr#3 ] +Allocated zp ZP_BYTE:173 [ sprites_irq::ptr#4 ] +Allocated zp ZP_BYTE:174 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] +Allocated zp ZP_BYTE:177 [ sprites_irq::$4 ] +Allocated zp ZP_BYTE:178 [ irq_cnt#14 ] +Allocated zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:181 [ sprites_irq::ptr#1 ] +Allocated zp ZP_BYTE:182 [ sprites_irq::ptr#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -9156,17 +9335,19 @@ INITIAL ASM .label keyboard_events_size = $3f .label keyboard_modifiers = $3c .label keyboard_modifiers_5 = $9d - .label irq_raster_next = $5b - .label irq_sprite_ypos = $5c - .label irq_sprite_ptr = $5d - .label irq_cnt = $5e - .label irq_cnt_1 = $ad + .label render_screen_showing = $5b + .label render_screen_showing_1 = $a3 + .label irq_raster_next = $5c + .label irq_sprite_ypos = $5d + .label irq_sprite_ptr = $5e + .label irq_cnt = $5f + .label irq_cnt_1 = $ae .label irq_raster_next_1 = $59 - .label irq_sprite_ypos_1 = $b2 - .label irq_sprite_ptr_1 = $b3 + .label irq_sprite_ypos_1 = $b3 + .label irq_sprite_ptr_1 = $b4 .label irq_raster_next_2 = $59 - .label irq_sprite_ypos_2 = $ae - .label irq_sprite_ptr_2 = $af + .label irq_sprite_ypos_2 = $af + .label irq_sprite_ptr_2 = $b0 .label current_movedown_counter = 4 .label current_ypos = $25 .label current_piece_gfx = $29 @@ -9178,396 +9359,390 @@ INITIAL ASM .label current_ypos_9 = 5 .label current_piece = $26 .label current_piece_12 = $18 - .label render_screen_render_18 = $10 - .label render_screen_render_27 = 6 + .label render_screen_render_19 = $10 + .label render_screen_render_28 = 6 .label current_xpos_47 = 7 - .label irq_raster_next_12 = $59 - .label current_piece_gfx_52 = 8 - .label irq_cnt_13 = $b1 - .label current_piece_char_62 = $a - .label current_ypos_83 = 5 + .label irq_raster_next_13 = $59 + .label current_piece_gfx_53 = 8 + .label irq_cnt_14 = $b2 + .label current_piece_char_63 = $a .label current_ypos_84 = 5 - .label render_screen_render_68 = 6 - .label current_xpos_109 = 7 + .label current_ypos_85 = 5 + .label render_screen_render_62 = 6 .label current_xpos_110 = 7 - .label current_piece_gfx_99 = 8 + .label current_xpos_111 = 7 .label current_piece_gfx_100 = 8 - .label current_piece_char_87 = $a + .label current_piece_gfx_101 = 8 .label current_piece_char_88 = $a - .label render_screen_render_69 = $10 - .label current_piece_73 = $18 + .label current_piece_char_89 = $a + .label render_screen_render_63 = $10 .label current_piece_74 = $18 .label current_piece_75 = $18 .label current_piece_76 = $18 + .label current_piece_77 = $18 //SEG2 @begin bbegin: jmp b14 //SEG3 @14 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" }} +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 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" }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} jmp b20 -//SEG6 @20 +//SEG7 @20 b20: -//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 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 b21 -//SEG8 @21 +//SEG9 @21 b21: -//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG10 [5] (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 +//SEG11 [6] (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 @21 to toSpritePtr1 [phi:@21->toSpritePtr1] +//SEG12 [7] phi from @21 to toSpritePtr1 [phi:@21->toSpritePtr1] toSpritePtr1_from_b21: jmp toSpritePtr1 -//SEG12 toSpritePtr1 +//SEG13 toSpritePtr1 toSpritePtr1: jmp b33 -//SEG13 @33 +//SEG14 @33 b33: -//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG15 [8] (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 +//SEG16 [9] (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 @33 to @32 [phi:@33->@32] +//SEG17 [10] phi from @33 to @32 [phi:@33->@32] b32_from_b33: jmp b32 -//SEG17 @32 +//SEG18 @32 b32: -//SEG18 [10] call main -//SEG19 [12] phi from @32 to main [phi:@32->main] +//SEG19 [11] call main +//SEG20 [13] phi from @32 to main [phi:@32->main] main_from_b32: jsr main -//SEG20 [11] phi from @32 to @end [phi:@32->@end] +//SEG21 [12] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG21 @end +//SEG22 @end bend: -//SEG22 main +//SEG23 main main: { - .label _9 = $5f - .label _13 = $64 - .label _14 = $68 - .label _15 = $6c + .label _12 = $64 + .label _13 = $68 + .label _14 = $6c .label key_event = $61 .label render = $65 .label render_2 = $69 .label render_3 = $6d - //SEG23 [13] call sid_rnd_init + //SEG24 [14] call sid_rnd_init jsr sid_rnd_init jmp b15 - //SEG24 main::@15 + //SEG25 main::@15 b15: - //SEG25 asm { sei } + //SEG26 asm { sei } sei - //SEG26 [15] call render_init - //SEG27 [373] phi from main::@15 to render_init [phi:main::@15->render_init] + //SEG27 [16] call render_init + //SEG28 [372] phi from main::@15 to render_init [phi:main::@15->render_init] render_init_from_b15: jsr render_init - //SEG28 [16] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG29 [17] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG29 main::@16 + //SEG30 main::@16 b16: - //SEG30 [17] call sprites_init + //SEG31 [18] call sprites_init jsr sprites_init - //SEG31 [18] phi from main::@16 to main::@17 [phi:main::@16->main::@17] + //SEG32 [19] phi from main::@16 to main::@17 [phi:main::@16->main::@17] b17_from_b16: jmp b17 - //SEG32 main::@17 + //SEG33 main::@17 b17: - //SEG33 [19] call sprites_irq_init + //SEG34 [20] call sprites_irq_init jsr sprites_irq_init - //SEG34 [20] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG35 [21] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG35 main::@18 + //SEG36 main::@18 b18: - //SEG36 [21] call play_init - //SEG37 [338] phi from main::@18 to play_init [phi:main::@18->play_init] + //SEG37 [22] call play_init + //SEG38 [337] phi from main::@18 to play_init [phi:main::@18->play_init] play_init_from_b18: jsr play_init - //SEG38 [22] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG39 [23] phi from main::@18 to main::@19 [phi:main::@18->main::@19] b19_from_b18: jmp b19 - //SEG39 main::@19 + //SEG40 main::@19 b19: - //SEG40 [23] call play_spawn_current - //SEG41 [210] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] + //SEG41 [24] call play_spawn_current + //SEG42 [208] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] play_spawn_current_from_b19: jsr play_spawn_current - //SEG42 [24] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG43 [25] phi from main::@19 to main::@20 [phi:main::@19->main::@20] b20_from_b19: jmp b20 - //SEG43 main::@20 + //SEG44 main::@20 b20: - //SEG44 [25] call render_playfield - //SEG45 [97] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] + //SEG45 [26] call render_playfield + //SEG46 [95] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] render_playfield_from_b20: - //SEG46 [97] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuz1=vbuc1 + //SEG47 [95] phi (byte) render_screen_render#19 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuz1=vbuc1 lda #$40 - sta render_screen_render_18 + sta render_screen_render_19 jsr render_playfield jmp b21 - //SEG47 main::@21 + //SEG48 main::@21 b21: - //SEG48 [26] (byte~) current_ypos#83 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG49 [27] (byte~) current_ypos#84 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_83 - //SEG49 [27] (byte~) current_xpos#109 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + sta current_ypos_84 + //SEG50 [28] (byte~) current_xpos#110 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_109 - //SEG50 [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_110 + //SEG51 [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_99 + sta current_piece_gfx_100 lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG51 [29] (byte~) current_piece_char#87 ← (byte) current_piece_char#12 -- vbuz1=vbuz2 + sta current_piece_gfx_100+1 + //SEG52 [30] (byte~) current_piece_char#88 ← (byte) current_piece_char#12 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_87 - //SEG52 [30] call render_current - //SEG53 [74] phi from main::@21 to render_current [phi:main::@21->render_current] + sta current_piece_char_88 + //SEG53 [31] call render_current + //SEG54 [72] phi from main::@21 to render_current [phi:main::@21->render_current] render_current_from_b21: - //SEG54 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#87 [phi:main::@21->render_current#0] -- register_copy - //SEG55 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#99 [phi:main::@21->render_current#1] -- register_copy - //SEG56 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#109 [phi:main::@21->render_current#2] -- register_copy - //SEG57 [74] phi (byte) render_screen_render#27 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 + //SEG55 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#88 [phi:main::@21->render_current#0] -- register_copy + //SEG56 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#100 [phi:main::@21->render_current#1] -- register_copy + //SEG57 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@21->render_current#2] -- register_copy + //SEG58 [72] phi (byte) render_screen_render#28 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 lda #$40 - sta render_screen_render_27 - //SEG58 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#83 [phi:main::@21->render_current#4] -- register_copy + sta render_screen_render_28 + //SEG59 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@21->render_current#4] -- register_copy jsr render_current - //SEG59 [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG60 [32] (byte*~) current_piece#71 ← (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 - //SEG60 [32] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG61 [33] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG61 [32] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG62 [33] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG62 [32] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG63 [33] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG63 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy - //SEG64 [32] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy - //SEG65 [32] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy - //SEG66 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy - //SEG67 [32] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 + //SEG64 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy + //SEG65 [33] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy + //SEG66 [33] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy + //SEG67 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy + //SEG68 [33] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG68 [32] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy - //SEG69 [32] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 + //SEG69 [33] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy + //SEG70 [33] phi (byte) render_screen_render#16 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG70 [32] phi (byte) render_screen_show#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 + //SEG71 [33] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG71 main::@1 + //SEG72 [33] phi from main::@28 to main::@1 [phi:main::@28->main::@1] + b1_from_b28: + //SEG73 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#0] -- register_copy + //SEG74 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#1] -- register_copy + //SEG75 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#2] -- register_copy + //SEG76 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#3] -- register_copy + //SEG77 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#4] -- register_copy + //SEG78 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#5] -- register_copy + //SEG79 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#6] -- register_copy + //SEG80 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#7] -- register_copy + jmp b1 + //SEG81 main::@1 b1: jmp b4 - //SEG72 main::@4 + //SEG82 main::@4 b4: - //SEG73 [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG83 [34] 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 + //SEG84 [35] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + b6_from_b4: jmp b6 - //SEG74 main::@6 + //SEG85 main::@6 b6: - //SEG75 [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 - lda render_screen_show - lsr - lsr - lsr - lsr - sta _9 - //SEG76 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuz1 - lda _9 - sta BORDERCOL - //SEG77 [36] call render_show + //SEG86 [36] call render_show jsr render_show - //SEG78 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] + //SEG87 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] b23_from_b6: jmp b23 - //SEG79 main::@23 + //SEG88 main::@23 b23: - //SEG80 [38] call keyboard_event_scan - //SEG81 [276] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] + //SEG89 [38] call keyboard_event_scan + //SEG90 [274] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] keyboard_event_scan_from_b23: jsr keyboard_event_scan - //SEG82 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG91 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG83 main::@24 + //SEG92 main::@24 b24: - //SEG84 [40] call keyboard_event_get + //SEG93 [40] call keyboard_event_get jsr keyboard_event_get - //SEG85 [41] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG94 [41] (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 b25 - //SEG86 main::@25 + //SEG95 main::@25 b25: - //SEG87 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + //SEG96 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG88 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG97 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG89 [44] call play_move_down + //SEG98 [44] call play_move_down jsr play_move_down - //SEG90 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuz1=vbuz2 + //SEG99 [45] (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 b26 - //SEG91 main::@26 + //SEG100 main::@26 b26: - //SEG92 [46] (byte~) main::$13 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG101 [46] (byte~) main::$12 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 lda play_move_down.return_3 - sta _13 - //SEG93 [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 -- vbuz1=vbuc1_plus_vbuz2 + sta _12 + //SEG102 [47] (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 _13 + adc _12 sta render - //SEG94 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG103 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG95 [49] call play_move_leftright + //SEG104 [49] call play_move_leftright jsr play_move_leftright - //SEG96 [50] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 -- vbuz1=vbuz2 + //SEG105 [50] (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 b27 - //SEG97 main::@27 + //SEG106 main::@27 b27: - //SEG98 [51] (byte~) main::$14 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 + //SEG107 [51] (byte~) main::$13 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 lda play_move_leftright.return_4 - sta _14 - //SEG99 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 -- vbuz1=vbuz2_plus_vbuz3 + sta _13 + //SEG108 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz2_plus_vbuz3 lda render clc - adc _14 + adc _13 sta render_2 - //SEG100 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG109 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG101 [54] call play_move_rotate + //SEG110 [54] call play_move_rotate jsr play_move_rotate - //SEG102 [55] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 -- vbuz1=vbuz2 + //SEG111 [55] (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 b28 - //SEG103 main::@28 + //SEG112 main::@28 b28: - //SEG104 [56] (byte~) main::$15 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 + //SEG113 [56] (byte~) main::$14 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 lda play_move_rotate.return_4 - sta _15 - //SEG105 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 -- vbuz1=vbuz2_plus_vbuz3 + sta _14 + //SEG114 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc - adc _15 + adc _14 sta render_3 - //SEG106 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + //SEG115 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_eq_0_then_la1 lda render_3 cmp #0 - beq b7_from_b28 + beq b1_from_b28 jmp b13 - //SEG107 main::@13 + //SEG116 main::@13 b13: - //SEG108 [59] (byte~) render_screen_render#69 ← (byte) render_screen_render#15 -- vbuz1=vbuz2 + //SEG117 [59] (byte~) render_screen_render#63 ← (byte) render_screen_render#16 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_69 - //SEG109 [60] call render_playfield - //SEG110 [97] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] + sta render_screen_render_63 + //SEG118 [60] call render_playfield + //SEG119 [95] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] render_playfield_from_b13: - //SEG111 [97] phi (byte) render_screen_render#18 = (byte~) render_screen_render#69 [phi:main::@13->render_playfield#0] -- register_copy + //SEG120 [95] phi (byte) render_screen_render#19 = (byte~) render_screen_render#63 [phi:main::@13->render_playfield#0] -- register_copy jsr render_playfield jmp b29 - //SEG112 main::@29 + //SEG121 main::@29 b29: - //SEG113 [61] (byte~) current_ypos#84 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG122 [61] (byte~) current_ypos#85 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_84 - //SEG114 [62] (byte~) render_screen_render#68 ← (byte) render_screen_render#15 -- vbuz1=vbuz2 + sta current_ypos_85 + //SEG123 [62] (byte~) render_screen_render#62 ← (byte) render_screen_render#16 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_68 - //SEG115 [63] (byte~) current_xpos#110 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_62 + //SEG124 [63] (byte~) current_xpos#111 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_110 - //SEG116 [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_111 + //SEG125 [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_100 + sta current_piece_gfx_101 lda current_piece_gfx+1 - sta current_piece_gfx_100+1 - //SEG117 [65] (byte~) current_piece_char#88 ← (byte) current_piece_char#1 -- vbuz1=vbuz2 + sta current_piece_gfx_101+1 + //SEG126 [65] (byte~) current_piece_char#89 ← (byte) current_piece_char#1 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_88 - //SEG118 [66] call render_current - //SEG119 [74] phi from main::@29 to render_current [phi:main::@29->render_current] + sta current_piece_char_89 + //SEG127 [66] call render_current + //SEG128 [72] phi from main::@29 to render_current [phi:main::@29->render_current] render_current_from_b29: - //SEG120 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#88 [phi:main::@29->render_current#0] -- register_copy - //SEG121 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#100 [phi:main::@29->render_current#1] -- register_copy - //SEG122 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@29->render_current#2] -- register_copy - //SEG123 [74] phi (byte) render_screen_render#27 = (byte~) render_screen_render#68 [phi:main::@29->render_current#3] -- register_copy - //SEG124 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@29->render_current#4] -- register_copy + //SEG129 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#89 [phi:main::@29->render_current#0] -- register_copy + //SEG130 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#101 [phi:main::@29->render_current#1] -- register_copy + //SEG131 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#111 [phi:main::@29->render_current#2] -- register_copy + //SEG132 [72] phi (byte) render_screen_render#28 = (byte~) render_screen_render#62 [phi:main::@29->render_current#3] -- register_copy + //SEG133 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#85 [phi:main::@29->render_current#4] -- register_copy jsr render_current - //SEG125 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG134 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] b30_from_b29: jmp b30 - //SEG126 main::@30 + //SEG135 main::@30 b30: - //SEG127 [68] call render_screen_swap + //SEG136 [68] call render_screen_swap jsr render_screen_swap - //SEG128 [69] phi from main::@28 main::@30 to main::@7 [phi:main::@28/main::@30->main::@7] - b7_from_b28: - b7_from_b30: - //SEG129 [69] phi (byte) render_screen_render#31 = (byte) render_screen_render#15 [phi:main::@28/main::@30->main::@7#0] -- register_copy - //SEG130 [69] phi (byte) render_screen_show#24 = (byte) render_screen_show#15 [phi:main::@28/main::@30->main::@7#1] -- register_copy - jmp b7 - //SEG131 main::@7 - b7: - //SEG132 [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 - lda #0 - sta BORDERCOL - //SEG133 [32] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - b1_from_b7: - //SEG134 [32] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@7->main::@1#0] -- register_copy - //SEG135 [32] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@7->main::@1#1] -- register_copy - //SEG136 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@7->main::@1#2] -- register_copy - //SEG137 [32] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG138 [32] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@7->main::@1#4] -- register_copy - //SEG139 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@7->main::@1#5] -- register_copy - //SEG140 [32] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@7->main::@1#6] -- register_copy - //SEG141 [32] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@7->main::@1#7] -- register_copy - //SEG142 [32] phi (byte) render_screen_render#15 = (byte) render_screen_render#31 [phi:main::@7->main::@1#8] -- register_copy - //SEG143 [32] phi (byte) render_screen_show#15 = (byte) render_screen_show#24 [phi:main::@7->main::@1#9] -- register_copy + //SEG137 [33] phi from main::@30 to main::@1 [phi:main::@30->main::@1] + b1_from_b30: + //SEG138 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@30->main::@1#0] -- register_copy + //SEG139 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@30->main::@1#1] -- register_copy + //SEG140 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@30->main::@1#2] -- register_copy + //SEG141 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@30->main::@1#3] -- register_copy + //SEG142 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@30->main::@1#4] -- register_copy + //SEG143 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@30->main::@1#5] -- register_copy + //SEG144 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@30->main::@1#6] -- register_copy + //SEG145 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@30->main::@1#7] -- register_copy + //SEG146 [33] phi (byte) render_screen_render#16 = (byte) render_screen_render#11 [phi:main::@30->main::@1#8] -- register_copy + //SEG147 [33] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@30->main::@1#9] -- register_copy jmp b1 } -//SEG144 render_screen_swap +//SEG148 render_screen_swap render_screen_swap: { - //SEG145 [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG149 [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG146 [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG150 [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG147 render_screen_swap::@return + //SEG151 render_screen_swap::@return breturn: - //SEG148 [73] return + //SEG152 [71] return rts } -//SEG149 render_current +//SEG153 render_current render_current: { .label _5 = $6e .label ypos2 = $b @@ -9577,142 +9752,142 @@ render_current: { .label l = $c .label current_cell = $71 .label c = $f - //SEG150 [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG154 [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos_9 asl sta ypos2 - //SEG151 [76] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG155 [74] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG152 [76] 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 + //SEG156 [74] 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 - //SEG153 [76] 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 + //SEG157 [74] 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 - //SEG154 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG158 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG155 [76] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + //SEG159 [74] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] b1_from_b3: - //SEG156 [76] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy - //SEG157 [76] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy - //SEG158 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy + //SEG160 [74] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG161 [74] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG162 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy jmp b1 - //SEG159 render_current::@1 + //SEG163 render_current::@1 b1: - //SEG160 [77] 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 + //SEG164 [75] 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 - //SEG161 render_current::@7 + //SEG165 render_current::@7 b7: - //SEG162 [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG166 [76] (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 - //SEG163 [79] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + //SEG167 [77] 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: - //SEG164 [79] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + //SEG168 [77] 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 - //SEG165 render_current::@3 + //SEG169 render_current::@3 b3: - //SEG166 [80] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG170 [78] (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 - //SEG167 [81] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [82] 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 + //SEG172 [80] 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 - //SEG169 render_current::@return + //SEG173 render_current::@return breturn: - //SEG170 [83] return + //SEG174 [81] return rts - //SEG171 render_current::@13 + //SEG175 render_current::@13 b13: - //SEG172 [84] 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 + //SEG176 [82] 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 bcc b2 jmp b7 - //SEG173 render_current::@2 + //SEG177 render_current::@2 b2: - //SEG174 [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 - lda render_screen_render_27 + //SEG178 [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 + lda render_screen_render_28 clc adc ypos2 sta _5 - //SEG175 [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG179 [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuz2 ldy _5 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG176 [87] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 + //SEG180 [85] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 lda current_xpos_47 sta xpos - //SEG177 [88] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + //SEG181 [86] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] b4_from_b2: - //SEG178 [88] 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 + //SEG182 [86] 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 - //SEG179 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy - //SEG180 [88] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + //SEG183 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG184 [86] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy jmp b4 - //SEG181 [88] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + //SEG185 [86] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] b4_from_b5: - //SEG182 [88] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy - //SEG183 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy - //SEG184 [88] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + //SEG186 [86] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG187 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG188 [86] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy jmp b4 - //SEG185 render_current::@4 + //SEG189 render_current::@4 b4: - //SEG186 [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG190 [87] (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_52),y + lda (current_piece_gfx_53),y sta current_cell - //SEG187 [90] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 + //SEG191 [88] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG188 [91] 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 + //SEG192 [89] 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 b5 jmp b9 - //SEG189 render_current::@9 + //SEG193 render_current::@9 b9: - //SEG190 [92] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG194 [90] 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 jmp b10 - //SEG191 render_current::@10 + //SEG195 render_current::@10 b10: - //SEG192 [93] *((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 + //SEG196 [91] *((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 b5 - //SEG193 render_current::@5 + //SEG197 render_current::@5 b5: - //SEG194 [94] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG198 [92] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG195 [95] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG199 [93] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG196 [96] 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 + //SEG200 [94] 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 b4_from_b5 jmp b3_from_b5 } -//SEG197 render_playfield +//SEG201 render_playfield render_playfield: { .label _2 = $72 .label _3 = $73 @@ -9720,87 +9895,87 @@ render_playfield: { .label i = $12 .label c = $15 .label l = $11 - //SEG198 [98] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG202 [96] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG199 [98] 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 + //SEG203 [96] 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 - //SEG200 [98] 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 + //SEG204 [96] 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 - //SEG201 [98] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG205 [96] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG202 [98] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG203 [98] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG206 [96] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG207 [96] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG204 render_playfield::@1 + //SEG208 render_playfield::@1 b1: - //SEG205 [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG209 [97] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _2 - //SEG206 [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 - lda render_screen_render_18 + //SEG210 [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 + lda render_screen_render_19 clc adc _2 sta _3 - //SEG207 [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG211 [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy _3 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG208 [102] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG212 [100] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG209 [102] 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 + //SEG213 [100] 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 - //SEG210 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG211 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG214 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG215 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG212 [102] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG216 [100] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG213 [102] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG214 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG215 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG217 [100] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG218 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG219 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG216 render_playfield::@2 + //SEG220 render_playfield::@2 b2: - //SEG217 [103] *((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 + //SEG221 [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG218 [104] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG222 [102] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG219 [105] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG223 [103] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG220 [106] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG224 [104] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG221 [107] 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 + //SEG225 [105] 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 - //SEG222 render_playfield::@3 + //SEG226 render_playfield::@3 b3: - //SEG223 [108] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG227 [106] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG224 [109] 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 + //SEG228 [107] 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 - //SEG225 render_playfield::@return + //SEG229 render_playfield::@return breturn: - //SEG226 [110] return + //SEG230 [108] return rts } -//SEG227 play_move_rotate +//SEG231 play_move_rotate play_move_rotate: { .label _2 = $74 .label _4 = $77 @@ -9809,90 +9984,90 @@ play_move_rotate: { .label return = $16 .label key_event = $6a .label return_4 = $6b - //SEG228 [111] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG232 [109] 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 - //SEG229 play_move_rotate::@6 + //SEG233 play_move_rotate::@6 b6: - //SEG230 [112] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG234 [110] 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 - //SEG231 [113] 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] + //SEG235 [111] 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: - //SEG232 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG233 [113] 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 - //SEG234 [113] 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 + //SEG236 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG237 [111] 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 + //SEG238 [111] 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 - //SEG235 play_move_rotate::@return + //SEG239 play_move_rotate::@return breturn: - //SEG236 [114] return + //SEG240 [112] return rts - //SEG237 play_move_rotate::@2 + //SEG241 play_move_rotate::@2 b2: - //SEG238 [115] (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 + //SEG242 [113] (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 - //SEG239 [116] (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 + //SEG243 [114] (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 - //SEG240 [117] 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] + //SEG244 [115] 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: - //SEG241 [117] 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 + //SEG245 [115] 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 - //SEG242 play_move_rotate::@4 + //SEG246 play_move_rotate::@4 b4: - //SEG243 [118] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG247 [116] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG244 [119] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG248 [117] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG245 [120] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG249 [118] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG246 [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG250 [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_77 lda current_piece+1 - sta current_piece_76+1 - //SEG247 [122] call play_collision - //SEG248 [130] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_77+1 + //SEG251 [120] call play_collision + //SEG252 [128] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG249 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG250 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG251 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG252 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG253 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG254 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG255 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG256 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG253 [123] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG257 [121] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_13 jmp b14 - //SEG254 play_move_rotate::@14 + //SEG258 play_move_rotate::@14 b14: - //SEG255 [124] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + //SEG259 [122] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 lda play_collision.return_13 sta _6 - //SEG256 [125] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG260 [123] 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 - //SEG257 play_move_rotate::@11 + //SEG261 play_move_rotate::@11 b11: - //SEG258 [126] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG262 [124] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG259 [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG263 [125] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -9900,28 +10075,28 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG260 [113] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG264 [111] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG261 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG262 [113] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG263 [113] 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 + //SEG265 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG266 [111] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG267 [111] 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 - //SEG264 play_move_rotate::@1 + //SEG268 play_move_rotate::@1 b1: - //SEG265 [128] (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 + //SEG269 [126] (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 - //SEG266 [129] (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 + //SEG270 [127] (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 } -//SEG267 play_collision +//SEG271 play_collision play_collision: { .label _7 = $7d .label xpos = $1c @@ -9943,7 +10118,7 @@ play_collision: { .label i_3 = $1f .label i_11 = $1f .label i_13 = $1f - //SEG268 [131] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG272 [129] (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 @@ -9951,290 +10126,290 @@ play_collision: { lda #0 adc current_piece_12+1 sta piece_gfx+1 - //SEG269 [132] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG273 [130] (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 - //SEG270 [133] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG274 [131] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG271 [133] 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 + //SEG275 [131] 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 - //SEG272 [133] 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 + //SEG276 [131] 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 - //SEG273 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG277 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG274 play_collision::@1 + //SEG278 play_collision::@1 b1: - //SEG275 [134] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG279 [132] (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 - //SEG276 [135] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG280 [133] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG277 [136] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG281 [134] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG278 [136] 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 + //SEG282 [134] 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 - //SEG279 [136] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG280 [136] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG283 [134] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG284 [134] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG281 play_collision::@2 + //SEG285 play_collision::@2 b2: - //SEG282 [137] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG286 [135] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG283 [138] 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 + //SEG287 [136] 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 - //SEG284 play_collision::@8 + //SEG288 play_collision::@8 b8: - //SEG285 [139] 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 + //SEG289 [137] 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 - //SEG286 [140] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG290 [138] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG287 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG291 [138] 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 - //SEG288 play_collision::@return + //SEG292 play_collision::@return breturn: - //SEG289 [141] return + //SEG293 [139] return rts - //SEG290 play_collision::@4 + //SEG294 play_collision::@4 b4: - //SEG291 [142] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG295 [140] (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 - //SEG292 [143] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + //SEG296 [141] 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 - //SEG293 [140] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG297 [138] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG294 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG298 [138] 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 - //SEG295 play_collision::@5 + //SEG299 play_collision::@5 b5: - //SEG296 [144] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG300 [142] 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 - //SEG297 [140] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG301 [138] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG298 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG302 [138] 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 - //SEG299 play_collision::@6 + //SEG303 play_collision::@6 b6: - //SEG300 [145] 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 + //SEG304 [143] 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 - //SEG301 [140] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG305 [138] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG302 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG306 [138] 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 - //SEG303 play_collision::@3 + //SEG307 play_collision::@3 b3: - //SEG304 [146] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG308 [144] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG305 [147] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG309 [145] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG306 [148] 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 + //SEG310 [146] 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 - //SEG307 play_collision::@17 + //SEG311 play_collision::@17 b17: - //SEG308 [149] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG312 [147] (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 - //SEG309 [150] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG313 [148] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG310 [151] 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 + //SEG314 [149] 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 - //SEG311 [140] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG315 [138] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG312 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG316 [138] 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 - //SEG313 play_collision::@20 + //SEG317 play_collision::@20 b20: - //SEG314 [152] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG318 [150] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG315 [133] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG319 [131] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG316 [133] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG317 [133] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG318 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG320 [131] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG321 [131] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG322 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG319 play_collision::@21 + //SEG323 play_collision::@21 b21: - //SEG320 [153] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG324 [151] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG321 [136] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG325 [134] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG322 [136] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG323 [136] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG324 [136] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG326 [134] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG327 [134] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG328 [134] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG325 play_move_leftright +//SEG329 play_move_leftright play_move_leftright: { .label _4 = $7f .label _8 = $81 .label return = $23 .label key_event = $66 .label return_4 = $67 - //SEG326 [154] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG330 [152] 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 - //SEG327 play_move_leftright::@6 + //SEG331 play_move_leftright::@6 b6: - //SEG328 [155] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG332 [153] 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 - //SEG329 play_move_leftright::@7 + //SEG333 play_move_leftright::@7 b7: - //SEG330 [156] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG334 [154] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG331 [157] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG335 [155] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG332 [158] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG336 [156] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG333 [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG337 [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_75 + sta current_piece_76 lda current_piece+1 - sta current_piece_75+1 - //SEG334 [160] call play_collision - //SEG335 [130] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + sta current_piece_76+1 + //SEG338 [158] call play_collision + //SEG339 [128] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG336 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG337 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG338 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG339 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG340 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG341 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG342 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG343 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG340 [161] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG344 [159] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_12 jmp b15 - //SEG341 play_move_leftright::@15 + //SEG345 play_move_leftright::@15 b15: - //SEG342 [162] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 + //SEG346 [160] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 lda play_collision.return_12 sta _4 - //SEG343 [163] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG347 [161] 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 - //SEG344 play_move_leftright::@8 + //SEG348 play_move_leftright::@8 b8: - //SEG345 [164] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + //SEG349 [162] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG346 [165] 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] + //SEG350 [163] 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: - //SEG347 [165] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG348 [165] 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 + //SEG351 [163] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG352 [163] 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 - //SEG349 [165] 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] + //SEG353 [163] 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: - //SEG350 [165] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG351 [165] 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 + //SEG354 [163] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG355 [163] 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 - //SEG352 play_move_leftright::@return + //SEG356 play_move_leftright::@return breturn: - //SEG353 [166] return + //SEG357 [164] return rts - //SEG354 play_move_leftright::@1 + //SEG358 play_move_leftright::@1 b1: - //SEG355 [167] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG359 [165] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG356 [168] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG360 [166] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG357 [169] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG361 [167] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG358 [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG362 [168] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 - //SEG359 [171] call play_collision - //SEG360 [130] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + sta current_piece_75+1 + //SEG363 [169] call play_collision + //SEG364 [128] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG361 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG362 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG363 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG364 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG365 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG366 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG367 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG368 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG365 [172] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG369 [170] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return_1 jmp b14 - //SEG366 play_move_leftright::@14 + //SEG370 play_move_leftright::@14 b14: - //SEG367 [173] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG371 [171] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG368 [174] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG372 [172] 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 - //SEG369 play_move_leftright::@11 + //SEG373 play_move_leftright::@11 b11: - //SEG370 [175] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + //SEG374 [173] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG371 play_move_down +//SEG375 play_move_down play_move_down: { .label _2 = $83 .label _12 = $85 @@ -10242,306 +10417,306 @@ play_move_down: { .label return = $2d .label key_event = $62 .label return_3 = $63 - //SEG372 [176] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + //SEG376 [174] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG373 [177] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG377 [175] 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 - //SEG374 [178] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG378 [176] 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 - //SEG375 play_move_down::@8 + //SEG379 play_move_down::@8 b8: - //SEG376 [179] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG380 [177] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG377 [179] 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 + //SEG381 [177] 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 - //SEG378 [179] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG382 [177] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG379 [179] 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 + //SEG383 [177] 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 - //SEG380 play_move_down::@1 + //SEG384 play_move_down::@1 b1: - //SEG381 [180] call keyboard_event_pressed - //SEG382 [265] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG385 [178] call keyboard_event_pressed + //SEG386 [263] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG383 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG387 [263] 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 - //SEG384 [181] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG388 [179] (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 - //SEG385 play_move_down::@17 + //SEG389 play_move_down::@17 b17: - //SEG386 [182] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG390 [180] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG387 [183] 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 + //SEG391 [181] 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 - //SEG388 play_move_down::@9 + //SEG392 play_move_down::@9 b9: - //SEG389 [184] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG393 [182] 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 - //SEG390 play_move_down::@10 + //SEG394 play_move_down::@10 b10: - //SEG391 [185] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG395 [183] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG392 [186] 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] + //SEG396 [184] 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: - //SEG393 [186] 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 + //SEG397 [184] 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 - //SEG394 play_move_down::@2 + //SEG398 play_move_down::@2 b2: - //SEG395 [187] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG399 [185] 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 - //SEG396 play_move_down::@11 + //SEG400 play_move_down::@11 b11: - //SEG397 [188] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG401 [186] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG398 [189] 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] + //SEG402 [187] 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: - //SEG399 [189] 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 + //SEG403 [187] 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 - //SEG400 play_move_down::@4 + //SEG404 play_move_down::@4 b4: - //SEG401 [190] 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 + //SEG405 [188] 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 - //SEG402 play_move_down::@12 + //SEG406 play_move_down::@12 b12: - //SEG403 [191] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG407 [189] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG404 [192] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG408 [190] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG405 [193] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 + //SEG409 [191] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG406 [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG410 [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 - //SEG407 [195] call play_collision - //SEG408 [130] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_74+1 + //SEG411 [193] call play_collision + //SEG412 [128] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG409 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG410 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG411 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG412 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG413 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG414 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG415 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG416 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG413 [196] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG417 [194] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta play_collision.return jmp b18 - //SEG414 play_move_down::@18 + //SEG418 play_move_down::@18 b18: - //SEG415 [197] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG419 [195] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG416 [198] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG420 [196] 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 - //SEG417 [199] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG421 [197] 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 - //SEG418 play_move_down::@13 + //SEG422 play_move_down::@13 b13: - //SEG419 [200] call play_lock_current + //SEG423 [198] call play_lock_current jsr play_lock_current - //SEG420 [201] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG424 [199] 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 - //SEG421 play_move_down::@19 + //SEG425 play_move_down::@19 b19: - //SEG422 [202] call play_remove_lines - //SEG423 [226] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG426 [200] call play_remove_lines + //SEG427 [224] 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 - //SEG424 [203] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG428 [201] 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 - //SEG425 play_move_down::@20 + //SEG429 play_move_down::@20 b20: - //SEG426 [204] call play_spawn_current - //SEG427 [210] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG430 [202] call play_spawn_current + //SEG431 [208] 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 - //SEG428 [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG432 [203] (byte*~) current_piece#78 ← (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 - //SEG429 [206] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG433 [204] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG430 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG431 [206] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy - //SEG432 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG433 [206] 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 + //SEG434 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG435 [204] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy + //SEG436 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG437 [204] 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 - //SEG434 [206] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG435 [206] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy + //SEG438 [204] phi (byte*) current_piece#20 = (byte*~) current_piece#78 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG439 [204] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy jmp b7 - //SEG436 play_move_down::@7 + //SEG440 play_move_down::@7 b7: - //SEG437 [207] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG441 [205] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG438 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG439 [207] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG440 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG441 [207] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG442 [207] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG443 [207] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG444 [207] 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 + //SEG442 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG443 [205] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG444 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG445 [205] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG446 [205] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG447 [205] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG448 [205] 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 - //SEG445 [207] 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 + //SEG449 [205] 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 - //SEG446 [207] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG450 [205] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG447 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG448 [207] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG449 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG450 [207] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG451 [207] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG452 [207] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG453 [207] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG454 [207] 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 + //SEG451 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG452 [205] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG453 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG454 [205] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG455 [205] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG456 [205] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG457 [205] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG458 [205] 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 - //SEG455 play_move_down::@return + //SEG459 play_move_down::@return breturn: - //SEG456 [208] return + //SEG460 [206] return rts - //SEG457 play_move_down::@6 + //SEG461 play_move_down::@6 b6: - //SEG458 [209] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG462 [207] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG459 [206] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG463 [204] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG460 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG461 [206] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG462 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG463 [206] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG464 [206] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG465 [206] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG464 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG465 [204] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG466 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG467 [204] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG468 [204] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG469 [204] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG466 play_spawn_current +//SEG470 play_spawn_current play_spawn_current: { .label _1 = $88 .label _3 = $86 .label piece_idx = $2e - //SEG467 [211] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG471 [209] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG468 [211] 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 + //SEG472 [209] 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 - //SEG469 play_spawn_current::@1 + //SEG473 play_spawn_current::@1 b1: - //SEG470 [212] 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 + //SEG474 [210] 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 - //SEG471 play_spawn_current::@3 + //SEG475 play_spawn_current::@3 b3: - //SEG472 [213] (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 + //SEG476 [211] (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 - //SEG473 [214] (byte*) current_piece_gfx#16 ← (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 + //SEG477 [212] (byte*) current_piece_gfx#16 ← (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 - //SEG474 [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG478 [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_START_X,y sta current_xpos - //SEG475 [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG479 [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_START_Y,y sta current_ypos - //SEG476 [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG480 [215] (byte) current_piece_char#12 ← *((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 - //SEG477 play_spawn_current::@return + //SEG481 play_spawn_current::@return breturn: - //SEG478 [218] return + //SEG482 [216] return rts - //SEG479 [219] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG483 [217] 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 - //SEG480 play_spawn_current::@2 + //SEG484 play_spawn_current::@2 b2: - //SEG481 [220] call sid_rnd + //SEG485 [218] call sid_rnd jsr sid_rnd - //SEG482 [221] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG486 [219] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b7 - //SEG483 play_spawn_current::@7 + //SEG487 play_spawn_current::@7 b7: - //SEG484 [222] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG488 [220] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _1 - //SEG485 [223] (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 + //SEG489 [221] (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 - //SEG486 [211] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG490 [209] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG487 [211] 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 + //SEG491 [209] 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 } -//SEG488 sid_rnd +//SEG492 sid_rnd sid_rnd: { .label return = $89 .label return_2 = $87 - //SEG489 [224] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + //SEG493 [222] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG490 sid_rnd::@return + //SEG494 sid_rnd::@return breturn: - //SEG491 [225] return + //SEG495 [223] return rts } -//SEG492 play_remove_lines +//SEG496 play_remove_lines play_remove_lines: { .label c = $8a .label r = $30 @@ -10549,140 +10724,140 @@ play_remove_lines: { .label x = $31 .label y = $2f .label full = $32 - //SEG493 [227] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG497 [225] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG494 [227] 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 + //SEG498 [225] 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 - //SEG495 [227] 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 + //SEG499 [225] 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 - //SEG496 [227] 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 + //SEG500 [225] 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 - //SEG497 [227] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG501 [225] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG498 [227] 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 - //SEG499 [227] 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 - //SEG500 [227] 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 + //SEG502 [225] 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 + //SEG503 [225] 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 + //SEG504 [225] 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 - //SEG501 play_remove_lines::@1 + //SEG505 play_remove_lines::@1 b1: - //SEG502 [228] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG506 [226] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG503 [228] 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 + //SEG507 [226] 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 - //SEG504 [228] 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 + //SEG508 [226] 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 - //SEG505 [228] 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 - //SEG506 [228] 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 + //SEG509 [226] 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 + //SEG510 [226] 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 - //SEG507 [228] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG511 [226] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG508 [228] 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 - //SEG509 [228] 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 - //SEG510 [228] 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 - //SEG511 [228] 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 + //SEG512 [226] 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 + //SEG513 [226] 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 + //SEG514 [226] 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 + //SEG515 [226] 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 - //SEG512 play_remove_lines::@2 + //SEG516 play_remove_lines::@2 b2: - //SEG513 [229] (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 + //SEG517 [227] (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 - //SEG514 [230] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG518 [228] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG515 [231] 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 + //SEG519 [229] 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 - //SEG516 [232] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG520 [230] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG517 [232] 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 + //SEG521 [230] 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 - //SEG518 play_remove_lines::@3 + //SEG522 play_remove_lines::@3 b3: - //SEG519 [233] *((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 + //SEG523 [231] *((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 - //SEG520 [234] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG524 [232] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG521 [235] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG525 [233] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG522 [236] 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 + //SEG526 [234] 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 - //SEG523 play_remove_lines::@9 + //SEG527 play_remove_lines::@9 b9: - //SEG524 [237] 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 + //SEG528 [235] 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 - //SEG525 play_remove_lines::@10 + //SEG529 play_remove_lines::@10 b10: - //SEG526 [238] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG530 [236] (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 - //SEG527 [239] 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] + //SEG531 [237] 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: - //SEG528 [239] 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 + //SEG532 [237] 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 - //SEG529 play_remove_lines::@4 + //SEG533 play_remove_lines::@4 b4: - //SEG530 [240] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG534 [238] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG531 [241] 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 + //SEG535 [239] 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 - //SEG532 [242] 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] + //SEG536 [240] 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: - //SEG533 [242] 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 + //SEG537 [240] 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 - //SEG534 play_remove_lines::@5 + //SEG538 play_remove_lines::@5 b5: - //SEG535 [243] 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 + //SEG539 [241] 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 - //SEG536 play_remove_lines::@return + //SEG540 play_remove_lines::@return breturn: - //SEG537 [244] return + //SEG541 [242] return rts - //SEG538 play_remove_lines::@6 + //SEG542 play_remove_lines::@6 b6: - //SEG539 [245] *((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 + //SEG543 [243] *((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 - //SEG540 [246] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG544 [244] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG541 [247] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG545 [245] 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 - //SEG542 play_remove_lines::@17 + //SEG546 play_remove_lines::@17 b17: - //SEG543 [232] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG547 [230] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG544 [232] 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 + //SEG548 [230] 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 } -//SEG545 play_lock_current +//SEG549 play_lock_current play_lock_current: { .label ypos2 = $34 .label playfield_line = $8b @@ -10694,111 +10869,111 @@ play_lock_current: { .label i_3 = $36 .label i_7 = $36 .label i_9 = $36 - //SEG546 [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG550 [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG547 [249] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG551 [247] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG548 [249] 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 + //SEG552 [247] 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 - //SEG549 [249] 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 + //SEG553 [247] 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 - //SEG550 [249] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG554 [247] 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 - //SEG551 play_lock_current::@1 + //SEG555 play_lock_current::@1 b1: - //SEG552 [250] (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 + //SEG556 [248] (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 - //SEG553 [251] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG557 [249] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG554 [252] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG558 [250] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG555 [252] 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 + //SEG559 [250] 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 - //SEG556 [252] 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 - //SEG557 [252] 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 + //SEG560 [250] 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 + //SEG561 [250] 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 - //SEG558 play_lock_current::@2 + //SEG562 play_lock_current::@2 b2: - //SEG559 [253] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG563 [251] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG560 [254] if(*((byte*) current_piece_gfx#20 + (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 + //SEG564 [252] if(*((byte*) current_piece_gfx#20 + (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 - //SEG561 play_lock_current::@4 + //SEG565 play_lock_current::@4 b4: - //SEG562 [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG566 [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG563 play_lock_current::@3 + //SEG567 play_lock_current::@3 b3: - //SEG564 [256] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG568 [254] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG565 [257] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG569 [255] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG566 [258] 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 + //SEG570 [256] 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 - //SEG567 play_lock_current::@5 + //SEG571 play_lock_current::@5 b5: - //SEG568 [259] (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 + //SEG572 [257] (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 - //SEG569 [260] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG573 [258] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG570 [261] 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 + //SEG574 [259] 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 - //SEG571 play_lock_current::@return + //SEG575 play_lock_current::@return breturn: - //SEG572 [262] return + //SEG576 [260] return rts - //SEG573 play_lock_current::@7 + //SEG577 play_lock_current::@7 b7: - //SEG574 [263] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG578 [261] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG575 [249] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG579 [247] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG576 [249] 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 - //SEG577 [249] 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 - //SEG578 [249] 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 + //SEG580 [247] 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 + //SEG581 [247] 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 + //SEG582 [247] 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 - //SEG579 play_lock_current::@8 + //SEG583 play_lock_current::@8 b8: - //SEG580 [264] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG584 [262] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG581 [252] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG585 [250] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG582 [252] 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 - //SEG583 [252] 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 - //SEG584 [252] 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 + //SEG586 [250] 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 + //SEG587 [250] 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 + //SEG588 [250] 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 } -//SEG585 keyboard_event_pressed +//SEG589 keyboard_event_pressed keyboard_event_pressed: { .label _0 = $8e .label _1 = $90 @@ -10810,66 +10985,66 @@ keyboard_event_pressed: { .label keycode = $39 .label return_11 = $91 .label return_12 = $82 - //SEG586 [266] (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 + //SEG590 [264] (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 - //SEG587 [267] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG591 [265] (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 - //SEG588 [268] (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 + //SEG592 [266] (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 - //SEG589 [269] (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 + //SEG593 [267] (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 - //SEG590 keyboard_event_pressed::@return + //SEG594 keyboard_event_pressed::@return breturn: - //SEG591 [270] return + //SEG595 [268] return rts } -//SEG592 keyboard_event_get +//SEG596 keyboard_event_get keyboard_event_get: { .label return = $3a .label return_3 = $60 - //SEG593 [271] 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 + //SEG597 [269] 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 - //SEG594 keyboard_event_get::@3 + //SEG598 keyboard_event_get::@3 b3: - //SEG595 [272] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG599 [270] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG596 [273] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG600 [271] (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 - //SEG597 [274] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG601 [272] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG598 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG599 [274] 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 + //SEG602 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG603 [272] 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 - //SEG600 [274] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG604 [272] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG601 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG602 [274] 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 + //SEG605 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG606 [272] 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 - //SEG603 keyboard_event_get::@return + //SEG607 keyboard_event_get::@return breturn: - //SEG604 [275] return + //SEG608 [273] return rts } -//SEG605 keyboard_event_scan +//SEG609 keyboard_event_scan keyboard_event_scan: { .label _3 = $9e .label _4 = $9f @@ -10883,410 +11058,413 @@ keyboard_event_scan: { .label row = $3b .label col = $3d .label event_type = $a0 - //SEG606 [277] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG610 [275] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG607 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG608 [277] 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 + //SEG611 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG612 [275] 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 - //SEG609 [277] 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 + //SEG613 [275] 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 - //SEG610 [277] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG614 [275] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG611 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG612 [277] 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 - //SEG613 [277] 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 + //SEG615 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG616 [275] 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 + //SEG617 [275] 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 - //SEG614 keyboard_event_scan::@1 + //SEG618 keyboard_event_scan::@1 b1: - //SEG615 [278] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG619 [276] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG616 [279] call keyboard_matrix_read + //SEG620 [277] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG617 [280] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG621 [278] (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 - //SEG618 keyboard_event_scan::@25 + //SEG622 keyboard_event_scan::@25 b25: - //SEG619 [281] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG623 [279] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG620 [282] 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 + //SEG624 [280] 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 - //SEG621 keyboard_event_scan::@13 + //SEG625 keyboard_event_scan::@13 b13: - //SEG622 [283] (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 + //SEG626 [281] (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 - //SEG623 [284] 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] + //SEG627 [282] 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: - //SEG624 [284] 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 - //SEG625 [284] 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 + //SEG628 [282] 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 + //SEG629 [282] 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 - //SEG626 keyboard_event_scan::@3 + //SEG630 keyboard_event_scan::@3 b3: - //SEG627 [285] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG631 [283] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG628 [286] 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 + //SEG632 [284] 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 - //SEG629 [287] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG633 [285] 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 - //SEG630 keyboard_event_scan::@20 + //SEG634 keyboard_event_scan::@20 b20: - //SEG631 [288] call keyboard_event_pressed - //SEG632 [265] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG635 [286] call keyboard_event_pressed + //SEG636 [263] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG633 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG637 [263] 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 - //SEG634 [289] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG638 [287] (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 - //SEG635 keyboard_event_scan::@26 + //SEG639 keyboard_event_scan::@26 b26: - //SEG636 [290] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG640 [288] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG637 [291] 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 + //SEG641 [289] 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 - //SEG638 [292] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG642 [290] 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 - //SEG639 keyboard_event_scan::@21 + //SEG643 keyboard_event_scan::@21 b21: - //SEG640 [293] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG644 [291] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG641 [293] 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 + //SEG645 [291] 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 - //SEG642 [293] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG646 [291] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG643 [293] 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 + //SEG647 [291] 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 - //SEG644 keyboard_event_scan::@9 + //SEG648 keyboard_event_scan::@9 b9: - //SEG645 [294] call keyboard_event_pressed - //SEG646 [265] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG649 [292] call keyboard_event_pressed + //SEG650 [263] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG647 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG651 [263] 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 - //SEG648 [295] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG652 [293] (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 - //SEG649 keyboard_event_scan::@27 + //SEG653 keyboard_event_scan::@27 b27: - //SEG650 [296] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG654 [294] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG651 [297] 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 + //SEG655 [295] 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 - //SEG652 keyboard_event_scan::@22 + //SEG656 keyboard_event_scan::@22 b22: - //SEG653 [298] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG657 [296] (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 - //SEG654 [299] 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] + //SEG658 [297] 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: - //SEG655 [299] 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 + //SEG659 [297] 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 - //SEG656 keyboard_event_scan::@10 + //SEG660 keyboard_event_scan::@10 b10: - //SEG657 [300] call keyboard_event_pressed - //SEG658 [265] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG661 [298] call keyboard_event_pressed + //SEG662 [263] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG659 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG663 [263] 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 - //SEG660 [301] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG664 [299] (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 - //SEG661 keyboard_event_scan::@28 + //SEG665 keyboard_event_scan::@28 b28: - //SEG662 [302] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG666 [300] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG663 [303] 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 + //SEG667 [301] 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 - //SEG664 keyboard_event_scan::@23 + //SEG668 keyboard_event_scan::@23 b23: - //SEG665 [304] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG669 [302] (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 - //SEG666 [305] 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] + //SEG670 [303] 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: - //SEG667 [305] 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 + //SEG671 [303] 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 - //SEG668 keyboard_event_scan::@11 + //SEG672 keyboard_event_scan::@11 b11: - //SEG669 [306] call keyboard_event_pressed - //SEG670 [265] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG673 [304] call keyboard_event_pressed + //SEG674 [263] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG671 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG675 [263] 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 - //SEG672 [307] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG676 [305] (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 - //SEG673 keyboard_event_scan::@29 + //SEG677 keyboard_event_scan::@29 b29: - //SEG674 [308] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG678 [306] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG675 [309] 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 + //SEG679 [307] 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 - //SEG676 keyboard_event_scan::@24 + //SEG680 keyboard_event_scan::@24 b24: - //SEG677 [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 + //SEG681 [308] (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 - //SEG678 keyboard_event_scan::@return + //SEG682 keyboard_event_scan::@return breturn: - //SEG679 [311] return + //SEG683 [309] return rts - //SEG680 [312] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG684 [310] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG681 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG682 [312] 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 - //SEG683 [312] 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 + //SEG685 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG686 [310] 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 + //SEG687 [310] 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 - //SEG684 [312] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG688 [310] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG685 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG686 [312] 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 - //SEG687 [312] 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 + //SEG689 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG690 [310] 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 + //SEG691 [310] 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 - //SEG688 keyboard_event_scan::@4 + //SEG692 keyboard_event_scan::@4 b4: - //SEG689 [313] (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 + //SEG693 [311] (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 - //SEG690 [314] (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 + //SEG694 [312] (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 - //SEG691 [315] 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 + //SEG695 [313] 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 - //SEG692 keyboard_event_scan::@15 + //SEG696 keyboard_event_scan::@15 b15: - //SEG693 [316] 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 + //SEG697 [314] 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 - //SEG694 keyboard_event_scan::@16 + //SEG698 keyboard_event_scan::@16 b16: - //SEG695 [317] (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 + //SEG699 [315] (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 - //SEG696 [318] 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 + //SEG700 [316] 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 - //SEG697 keyboard_event_scan::@17 + //SEG701 keyboard_event_scan::@17 b17: - //SEG698 [319] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG702 [317] *((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 - //SEG699 [320] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG703 [318] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG700 [321] 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] + //SEG704 [319] 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: - //SEG701 [321] 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 + //SEG705 [319] 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 - //SEG702 keyboard_event_scan::@5 + //SEG706 keyboard_event_scan::@5 b5: - //SEG703 [322] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG707 [320] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG704 [323] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG708 [321] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG705 [324] 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 + //SEG709 [322] 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 - //SEG706 keyboard_event_scan::@19 + //SEG710 keyboard_event_scan::@19 b19: - //SEG707 [325] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG711 [323] *((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 - //SEG708 keyboard_event_scan::@7 + //SEG712 keyboard_event_scan::@7 b7: - //SEG709 [326] (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 + //SEG713 [324] (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 - //SEG710 [327] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG714 [325] *((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 - //SEG711 [328] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG715 [326] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG712 keyboard_matrix_read +//SEG716 keyboard_matrix_read keyboard_matrix_read: { .label return = $a2 .label rowid = $92 .label return_2 = $93 - //SEG713 [329] *((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 + //SEG717 [327] *((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 - //SEG714 [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG718 [328] (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 - //SEG715 keyboard_matrix_read::@return + //SEG719 keyboard_matrix_read::@return breturn: - //SEG716 [331] return + //SEG720 [329] return rts } -//SEG717 render_show +//SEG721 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .label d018val = $40 - //SEG718 [332] if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG722 [330] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG719 [333] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG723 [331] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG720 render_show::toD0182 + //SEG724 render_show::toD0182 toD0182: - //SEG721 [334] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG725 [332] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG722 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 + //SEG726 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0182_return sta d018val jmp b2 - //SEG723 render_show::@2 + //SEG727 render_show::@2 b2: - //SEG724 [335] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 + //SEG728 [333] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 lda d018val sta D018 + //SEG729 [334] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + lda render_screen_show + sta render_screen_showing_1 jmp breturn - //SEG725 render_show::@return + //SEG730 render_show::@return breturn: - //SEG726 [336] return + //SEG731 [335] return rts - //SEG727 [337] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG732 [336] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG728 render_show::toD0181 + //SEG733 render_show::toD0181 toD0181: - //SEG729 [334] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG734 [332] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG730 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 + //SEG735 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0181_return sta d018val jmp b2 } -//SEG731 play_init +//SEG736 play_init play_init: { - .label _1 = $a3 + .label _1 = $a4 .label pli = $42 .label idx = $44 .label j = $41 - //SEG732 [339] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG737 [338] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG733 [339] 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 + //SEG738 [338] 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 - //SEG734 [339] 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 + //SEG739 [338] 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 - //SEG735 [339] 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 + //SEG740 [338] 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 - //SEG736 [339] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG741 [338] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG737 [339] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG738 [339] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG739 [339] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG742 [338] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG743 [338] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG744 [338] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG740 play_init::@1 + //SEG745 play_init::@1 b1: - //SEG741 [340] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG746 [339] (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 - //SEG742 [341] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG747 [340] *((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 - //SEG743 [342] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG748 [341] *((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 - //SEG744 [343] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG749 [342] (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 @@ -11294,138 +11472,138 @@ play_init: { bcc !+ inc pli+1 !: - //SEG745 [344] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG750 [343] (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 - //SEG746 [345] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG751 [344] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG747 [346] 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 + //SEG752 [345] 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 - //SEG748 play_init::@2 + //SEG753 play_init::@2 b2: - //SEG749 [347] *((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 + //SEG754 [346] *((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 - //SEG750 play_init::@return + //SEG755 play_init::@return breturn: - //SEG751 [348] return + //SEG756 [347] return rts } -//SEG752 sprites_irq_init +//SEG757 sprites_irq_init sprites_irq_init: { - //SEG753 asm { sei } + //SEG758 asm { sei } sei - //SEG754 [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG759 [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG755 asm { ldaCIA1_INTERRUPT } + //SEG760 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG756 [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG761 [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG757 [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG762 [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG758 [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG763 [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG759 [355] *((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 + //SEG764 [354] *((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 - //SEG760 [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG765 [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG761 [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG766 [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG762 [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG763 asm { cli } + //SEG768 asm { cli } cli jmp breturn - //SEG764 sprites_irq_init::@return + //SEG769 sprites_irq_init::@return breturn: - //SEG765 [360] return + //SEG770 [359] return rts } -//SEG766 sprites_init +//SEG771 sprites_init sprites_init: { - .label s2 = $a4 + .label s2 = $a5 .label xpos = $46 .label s = $45 - //SEG767 [361] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG772 [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG768 [362] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG773 [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG769 [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG774 [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG770 [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG775 [363] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG771 [365] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG776 [364] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG772 [365] 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 + //SEG777 [364] 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 - //SEG773 [365] 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 + //SEG778 [364] 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 - //SEG774 [365] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG779 [364] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG775 [365] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG776 [365] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG780 [364] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG781 [364] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG777 sprites_init::@1 + //SEG782 sprites_init::@1 b1: - //SEG778 [366] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG783 [365] (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 - //SEG779 [367] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG784 [366] *((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 - //SEG780 [368] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG785 [367] *((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 - //SEG781 [369] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG786 [368] (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 - //SEG782 [370] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG787 [369] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG783 [371] 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 + //SEG788 [370] 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 - //SEG784 sprites_init::@return + //SEG789 sprites_init::@return breturn: - //SEG785 [372] return + //SEG790 [371] return rts } -//SEG786 render_init +//SEG791 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 - .label _12 = $a5 - .label _22 = $a7 - .label _23 = $a8 + .label _12 = $a6 + .label _22 = $a8 + .label _23 = $a9 .label c = $4a .label line = $47 .label l = $49 @@ -11433,103 +11611,106 @@ render_init: { .label li_2 = $4e .label i = $4b jmp vicSelectGfxBank1 - //SEG787 render_init::vicSelectGfxBank1 + //SEG792 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG788 [374] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG793 [373] *((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 - //SEG789 [375] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG794 [374] 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 - //SEG790 render_init::vicSelectGfxBank1_toDd001 + //SEG795 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG791 render_init::vicSelectGfxBank1_@1 + //SEG796 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG792 [376] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG797 [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b7 - //SEG793 render_init::@7 + //SEG798 render_init::@7 b7: - //SEG794 [377] *((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 + //SEG799 [376] *((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 - //SEG795 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG800 [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG801 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG796 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG802 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG797 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG803 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG798 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG804 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG799 [382] call render_screen_original - //SEG800 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] + //SEG805 [382] call render_screen_original + //SEG806 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] render_screen_original_from_b7: - //SEG801 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 + //SEG807 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG802 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] + //SEG808 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] b8_from_b7: jmp b8 - //SEG803 render_init::@8 + //SEG809 render_init::@8 b8: - //SEG804 [384] call render_screen_original - //SEG805 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] + //SEG810 [384] call render_screen_original + //SEG811 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] render_screen_original_from_b8: - //SEG806 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 + //SEG812 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG807 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG813 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] b9_from_b8: jmp b9 - //SEG808 render_init::@9 + //SEG814 render_init::@9 b9: - //SEG809 [386] call fill - //SEG810 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] + //SEG815 [386] call fill + //SEG816 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] fill_from_b9: jsr fill - //SEG811 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] + //SEG817 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] b1_from_b9: - //SEG812 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 + //SEG818 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 lda #2 sta l - //SEG813 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 + //SEG819 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 lda #COLS+4*$28+$10 sta line+1 jmp b1 - //SEG814 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG820 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG815 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy - //SEG816 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy + //SEG821 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy + //SEG822 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy jmp b1 - //SEG817 render_init::@1 + //SEG823 render_init::@1 b1: - //SEG818 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG824 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG819 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG825 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta c jmp b2 - //SEG820 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] + //SEG826 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] b2_from_b2: - //SEG821 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy + //SEG827 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy jmp b2 - //SEG822 render_init::@2 + //SEG828 render_init::@2 b2: - //SEG823 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG829 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line @@ -11537,20 +11718,20 @@ render_init: { lda #0 adc line+1 sta _12+1 - //SEG824 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG830 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (_12),y - //SEG825 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG831 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG826 [392] 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::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG832 [392] 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::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b4 - //SEG827 render_init::@4 + //SEG833 render_init::@4 b4: - //SEG828 [393] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG834 [393] (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 @@ -11558,57 +11739,57 @@ render_init: { bcc !+ inc line+1 !: - //SEG829 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG835 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG830 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG836 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG831 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] + //SEG837 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] b3_from_b4: - //SEG832 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 + //SEG838 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG833 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 + //SEG839 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG834 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuz1=vbuc1 + //SEG840 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuz1=vbuc1 lda #0 sta i jmp b3 - //SEG835 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG841 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG836 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG837 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy - //SEG838 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy + //SEG842 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG843 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy + //SEG844 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy jmp b3 - //SEG839 render_init::@3 + //SEG845 render_init::@3 b3: - //SEG840 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG846 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _22 - //SEG841 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG847 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _22 lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG842 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG848 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _23 - //SEG843 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG849 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _23 lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG844 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG850 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -11616,7 +11797,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG845 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG851 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -11624,47 +11805,47 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG846 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG852 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG847 [404] 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::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG853 [404] 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::@3 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES-1+1 bne b3_from_b3 jmp breturn - //SEG848 render_init::@return + //SEG854 render_init::@return breturn: - //SEG849 [405] return + //SEG855 [405] return rts } -//SEG850 fill +//SEG856 fill fill: { .const size = $3e8 .label end = COLS+size .label addr = $50 - //SEG851 [407] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG857 [407] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG852 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG858 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 jmp b1 - //SEG853 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG859 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG854 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG860 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG855 fill::@1 + //SEG861 fill::@1 b1: - //SEG856 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG862 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG857 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG863 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG858 [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG864 [410] 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 @@ -11672,12 +11853,12 @@ fill: { cmp #render_screen_original::@1] + //SEG868 [413] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG863 [413] phi (byte) render_screen_original::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG869 [413] phi (byte) render_screen_original::y#8 = (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 - //SEG864 [413] phi (byte*) render_screen_original::orig#5 = (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 + //SEG870 [413] phi (byte*) render_screen_original::orig#5 = (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 - //SEG865 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy + //SEG871 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG866 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] + //SEG872 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] b1_from_b9: - //SEG867 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy - //SEG868 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy - //SEG869 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy + //SEG873 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy + //SEG874 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy + //SEG875 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG870 render_screen_original::@1 + //SEG876 render_screen_original::@1 b1: - //SEG871 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG877 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG872 [414] 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 + //SEG878 [414] 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 - //SEG873 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG879 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG874 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG880 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG875 [414] 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 - //SEG876 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG881 [414] 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 + //SEG882 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG877 render_screen_original::@2 + //SEG883 render_screen_original::@2 b2: - //SEG878 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG884 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG879 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG885 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG880 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG886 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG881 [418] 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 + //SEG887 [418] 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 - //SEG882 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] + //SEG888 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] b3_from_b2: b3_from_b4: - //SEG883 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy - //SEG884 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy - //SEG885 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy + //SEG889 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy + //SEG890 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy + //SEG891 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy jmp b3 - //SEG886 render_screen_original::@3 + //SEG892 render_screen_original::@3 b3: - //SEG887 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_plus_1 + //SEG893 [420] (byte) render_screen_original::c#0 ← *((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 c - //SEG888 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG894 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG889 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuz1_gt_vbuc1_then_la1 + //SEG895 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuz1_gt_vbuc1_then_la1 lda x cmp #$e beq !+ bcs b11 !: - //SEG890 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] + //SEG896 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] b4_from_b3: b4_from_b7: - //SEG891 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy + //SEG897 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy jmp b4 - //SEG892 render_screen_original::@4 + //SEG898 render_screen_original::@4 b4: - //SEG893 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuz2 + //SEG899 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (screen),y - //SEG894 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 + //SEG900 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG895 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG901 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG896 [427] 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 + //SEG902 [427] 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_b4 - //SEG897 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] + //SEG903 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] b5_from_b4: b5_from_b5: - //SEG898 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy - //SEG899 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy + //SEG904 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy + //SEG905 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy jmp b5 - //SEG900 render_screen_original::@5 + //SEG906 render_screen_original::@5 b5: - //SEG901 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG907 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG902 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG908 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG903 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuz1=_inc_vbuz1 + //SEG909 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuz1=_inc_vbuz1 inc x - //SEG904 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG910 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b5_from_b5 jmp b9 - //SEG905 render_screen_original::@9 + //SEG911 render_screen_original::@9 b9: - //SEG906 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 + //SEG912 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG907 [434] 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 + //SEG913 [434] 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_b9 jmp breturn - //SEG908 render_screen_original::@return + //SEG914 render_screen_original::@return breturn: - //SEG909 [435] return + //SEG915 [435] return rts - //SEG910 render_screen_original::@11 + //SEG916 render_screen_original::@11 b11: - //SEG911 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuz1_lt_vbuc1_then_la1 + //SEG917 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$1b bcc b7 - //SEG912 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] + //SEG918 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] b4_from_b11: jmp b4 - //SEG913 render_screen_original::@7 + //SEG919 render_screen_original::@7 b7: - //SEG914 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuz1=vbuz1_bor_vbuc1 + //SEG920 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuz1=vbuz1_bor_vbuc1 lda #$c0 ora c sta c jmp b4_from_b7 } -//SEG915 sid_rnd_init +//SEG921 sid_rnd_init sid_rnd_init: { - //SEG916 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG922 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG917 [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG923 [439] *((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 - //SEG918 sid_rnd_init::@return + //SEG924 sid_rnd_init::@return breturn: - //SEG919 [440] return + //SEG925 [440] return rts } -//SEG920 irq -irq: { +//SEG926 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - .label _3 = $b0 - .label ypos = $a9 - .label ptr = $aa - .label ptr_1 = $ab - .label ptr_2 = $ac + .label _4 = $b1 + .label ypos = $aa + .label ptr = $ab + .label ptr_1 = $b5 + .label ptr_2 = $b6 + .label ptr_3 = $ac + .label ptr_4 = $ad .label raster_next = $5a - //SEG921 entry interrupt(HARDWARE_CLOBBER) + //SEG927 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG922 [441] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG923 [442] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG928 [441] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG924 [443] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG929 [442] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG925 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG930 [443] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG926 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG931 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG927 [446] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG932 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 jmp b1 - //SEG928 irq::@1 + //SEG933 sprites_irq::@1 b1: - //SEG929 [447] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG934 [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - jmp b5 - //SEG930 irq::@5 - b5: - //SEG931 [448] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + bcc b1 + jmp b7 + //SEG935 sprites_irq::@7 + b7: + //SEG936 [447] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG932 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 - lda ptr - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG933 [450] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG937 [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + jmp b8 + //SEG938 sprites_irq::@8 + b8: + //SEG939 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG934 [451] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG940 [450] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny - sty ptr_1 - //SEG935 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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+1 - //SEG936 [453] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 - lda ptr_1 + sty ptr_3 + //SEG941 [451] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG937 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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_1+2 - //SEG938 [455] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuz1 - lda ptr_1 + //SEG942 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG939 [456] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuz1=_inc_vbuz2 - ldy ptr_1 + //SEG943 [453] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + ldy ptr_3 iny - sty ptr_2 - //SEG940 [457] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#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_1+3 - //SEG941 [458] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuz1 - lda ptr_2 + sty ptr_4 + //SEG944 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG942 [459] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + jmp b3 + //SEG945 sprites_irq::@3 + b3: + //SEG946 [455] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG943 [460] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG947 [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a - beq b2 - jmp b6 - //SEG944 irq::@6 - b6: - //SEG945 [461] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + beq b4 + jmp b10 + //SEG948 sprites_irq::@10 + b10: + //SEG949 [457] (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 - //SEG946 [462] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG950 [458] (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 - //SEG947 [463] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG951 [459] (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 - //SEG948 [464] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - b3_from_b6: - b3_from_b9: - //SEG949 [464] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - jmp b3 - //SEG950 irq::@3 - b3: - //SEG951 [465] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuz1=vbuz2 - lda irq_raster_next_12 + //SEG952 [460] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + b5_from_b10: + b5_from_b13: + //SEG953 [460] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + jmp b5 + //SEG954 sprites_irq::@5 + b5: + //SEG955 [461] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuz1=vbuz2 + lda irq_raster_next_13 sta raster_next - //SEG952 [466] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG956 [462] (byte~) sprites_irq::$4 ← (byte) sprites_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 - //SEG953 [467] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuz1_neq_vbuc1_then_la1 - lda _3 + sta _4 + //SEG957 [463] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuz1_neq_vbuc1_then_la1 + lda _4 cmp #3 - bne b4_from_b3 - jmp b8 - //SEG954 irq::@8 - b8: - //SEG955 [468] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 + bne b6_from_b5 + jmp b12 + //SEG958 sprites_irq::@12 + b12: + //SEG959 [464] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 dec raster_next - //SEG956 [469] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - b4_from_b3: - b4_from_b8: - //SEG957 [469] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - jmp b4 - //SEG958 irq::@4 - b4: - //SEG959 [470] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 + //SEG960 [465] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + b6_from_b12: + b6_from_b5: + //SEG961 [465] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + jmp b6 + //SEG962 sprites_irq::@6 + b6: + //SEG963 [466] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuz1 lda raster_next sta RASTER - //SEG960 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG964 [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG961 [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL jmp breturn - //SEG962 irq::@return + //SEG965 sprites_irq::@return breturn: - //SEG963 [473] return - exit interrupt(HARDWARE_CLOBBER) + //SEG966 [468] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -12004,29 +12179,52 @@ irq: { regy: ldy #00 rti - //SEG964 irq::@2 - b2: - //SEG965 [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG967 sprites_irq::@4 + b4: + //SEG968 [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 - sta irq_cnt_13 - //SEG966 [475] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + sta irq_cnt_14 + //SEG969 [470] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next_1 - //SEG967 [476] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG970 [471] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos_1 - //SEG968 [477] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - toSpritePtr2_from_b2: + //SEG971 [472] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG969 irq::toSpritePtr2 + //SEG972 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b9 - //SEG970 irq::@9 - b9: - //SEG971 [478] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b13 + //SEG973 sprites_irq::@13 + b13: + //SEG974 [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 - jmp b3_from_b9 + jmp b5_from_b13 + //SEG975 sprites_irq::@2 + b2: + //SEG976 [474] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + lda ptr + sta PLAYFIELD_SPRITE_PTRS_1 + //SEG977 [475] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + ldy ptr + iny + sty ptr_1 + //SEG978 [476] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG979 [477] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + lda ptr_1 + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG980 [478] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + ldy ptr_1 + iny + sty ptr_2 + //SEG981 [479] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + lda ptr_2 + sta PLAYFIELD_SPRITE_PTRS_1+3 + jmp 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 @@ -12079,374 +12277,373 @@ irq: { REGISTER UPLIFT POTENTIAL REGISTERS -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 [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 [ current_ypos#83 current_ypos#18 current_xpos#109 current_xpos#23 current_piece_gfx#99 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:10 [ current_ypos#83 current_ypos#18 current_xpos#109 current_xpos#23 current_piece_gfx#99 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] +Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [9] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 [ current_ypos#84 current_ypos#18 current_xpos#110 current_xpos#23 current_piece_gfx#100 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:11 [ current_ypos#84 current_ypos#18 current_xpos#110 current_xpos#23 current_piece_gfx#100 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:134 [ play_spawn_current::$3 ] -Statement [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ( main:10 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ) always clobbers reg byte a -Statement [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +Statement [32] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ( main:11 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ) always clobbers reg byte a +Statement [34] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:2 [ render_screen_show#16 render_screen_show#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ 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:63 [ 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:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Statement [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 main::$9 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 main::$9 ] ) always clobbers reg byte a -Statement [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a +Statement [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ main::key_event#0 ] -Statement [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a -Statement [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a -Statement [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#84 render_screen_render#68 current_xpos#110 current_piece_gfx#100 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#84 render_screen_render#68 current_xpos#110 current_piece_gfx#100 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] -Statement [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_screen_show#24 render_screen_render#31 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 ] ( main:10 [ render_screen_show#24 render_screen_render#31 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#15 render_screen_render#10 ] ( main:10::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#15 render_screen_render#10 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#11 render_screen_render#10 ] ( main:10::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#11 render_screen_render#10 ] ) always clobbers reg byte a -Statement [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#0 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#0 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 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:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] -Statement [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ) always clobbers reg byte a +Statement [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a +Statement [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#85 render_screen_render#62 current_xpos#111 current_piece_gfx#101 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#85 render_screen_render#62 current_xpos#111 current_piece_gfx#101 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] +Statement [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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:10 [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] +Statement [76] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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:11 [ 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:12 [ render_current::l#4 render_current::l#1 ] -Statement [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ) always clobbers reg byte a +Statement [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] -Statement [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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 [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [87] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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:14 [ 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:15 [ render_current::c#2 render_current::c#1 ] -Statement [93] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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 [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 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:16 [ render_screen_render#18 render_screen_render#69 ] +Statement [91] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [97] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 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:16 [ render_screen_render#19 render_screen_render#63 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [103] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#18 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 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 [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a +Statement [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#19 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 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:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:134 [ play_spawn_current::$3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ render_screen_render#18 render_screen_render#69 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ render_screen_render#19 render_screen_render#63 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ 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:21 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ 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:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Statement [115] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [113] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ main::render#2 ] -Statement [116] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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) 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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#77 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#77 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ 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:28 [ 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:27 [ 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:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a -Statement [128] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [129] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [131] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_down:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [125] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a +Statement [126] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [127] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [129] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:101 [ main::render#1 ] -Statement [132] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_down:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [134] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [130] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [132] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:29 [ 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:31 [ 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:30 [ play_collision::l#6 play_collision::l#1 ] -Statement [138] 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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [136] 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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:32 [ 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:33 [ play_collision::c#2 play_collision::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ play_collision::i#1 ] -Statement [142] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [145] 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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:10::play_move_leftright:49 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a -Statement [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:10::play_move_leftright:49 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:10::play_move_down:44 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#77 ] ( main:10::play_move_down:44 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#77 ] ) always clobbers reg byte a -Statement [213] (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:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [140] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [143] 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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#76 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:11::play_move_leftright:49 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#76 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a +Statement [168] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:11::play_move_leftright:49 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a +Statement [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#74 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_move_down:44 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#74 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [203] (byte*~) current_piece#78 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#78 ] ( main:11::play_move_down:44 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#78 ] ) always clobbers reg byte a +Statement [211] (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:11::play_spawn_current:24 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 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:46 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Statement [214] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:10::play_spawn_current:23 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [223] (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:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [238] (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:44::play_remove_lines:202 [ render_screen_show#15 render_screen_render#15 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 [212] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [215] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:11::play_spawn_current:24 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [221] (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:11::play_spawn_current:24 [ play_spawn_current::piece_idx#1 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [236] (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:11::play_move_down:44::play_remove_lines:200 [ render_screen_show#16 render_screen_render#16 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:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [245] *((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:44::play_remove_lines:202 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [243] *((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:11::play_move_down:44::play_remove_lines:200 [ render_screen_show#16 render_screen_render#16 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:51 [ 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 [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:10::play_move_down:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [250] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [248] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:52 [ 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:54 [ 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:53 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [254] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [252] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:55 [ 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:56 [ play_lock_current::c#2 play_lock_current::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:141 [ play_lock_current::i#1 ] -Statement [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [266] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [264] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:36 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Statement [268] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [266] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:143 [ keyboard_event_pressed::row_bits#0 ] -Statement [269] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [283] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [267] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [281] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [298] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [304] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:10::keyboard_event_scan:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [313] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [296] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [302] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [308] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [311] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:148 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ 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 [314] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [317] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [319] *((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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [325] *((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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [326] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [329] *((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:38::keyboard_matrix_read:279 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:10::keyboard_event_scan:38::keyboard_matrix_read:279 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [340] (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 [312] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [315] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [317] *((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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [323] *((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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [324] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [327] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:38::keyboard_matrix_read:277 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [328] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:38::keyboard_matrix_read:277 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [339] (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:11::play_init:22 [ 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:65 [ play_init::j#2 play_init::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] -Statement [341] *((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 [342] *((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 [343] (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 [344] (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 [347] *((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 [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [340] *((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:11::play_init:22 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [341] *((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:11::play_init:22 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [342] (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:11::play_init:22 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [343] (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:11::play_init:22 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [346] *((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:11::play_init:22 [ ] ) always clobbers reg byte a +Statement [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [355] *((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 [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [361] *((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 [362] *((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 [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a -Statement [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a -Statement [366] (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 [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [354] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [357] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [363] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [365] (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:11::sprites_init:18 [ 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:69 [ sprites_init::s#2 sprites_init::s#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [367] *((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 [368] *((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 [369] (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 [374] *((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 [376] *((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 [377] *((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 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ) always clobbers reg byte a +Statement [366] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [368] (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:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [373] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [376] *((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:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ( main:11::render_init:16 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ render_init::c#2 render_init::c#1 ] -Statement [390] *((byte*~) render_init::$12) ← (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 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:11::render_init:16 [ 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:73 [ render_init::l#4 render_init::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ render_init::c#2 render_init::c#1 ] -Statement [393] (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 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ) always clobbers reg byte a +Statement [393] (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:11::render_init:16 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ render_init::i#2 render_init::i#1 ] -Statement [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ) always clobbers reg byte a -Statement [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:10::render_init:15::fill:386 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:10::render_init:15::fill:386 [ fill::addr#1 ] ) always clobbers reg byte a -Statement [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ) always clobbers reg byte a +Statement [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:11::render_init:16::fill:386 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:11::render_init:16::fill:386 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 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:82 [ render_screen_original::y#8 render_screen_original::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ render_screen_original::x#7 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:88 [ render_screen_original::x#7 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 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a reg byte y -Statement [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a +Statement [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a reg byte y +Statement [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] -Statement [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ) always clobbers reg byte a reg byte y -Statement [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ) always clobbers reg byte a reg byte y -Statement [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ) always clobbers reg byte a -Statement [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a -Statement [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a -Statement [441] *((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 [447] 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 [459] (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 [460] 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 [461] (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 [462] (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 [463] (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 [466] (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:90 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] -Statement [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [473] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [475] (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 [476] (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 [478] (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 [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 [ current_ypos#83 current_ypos#18 current_xpos#109 current_xpos#23 current_piece_gfx#99 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:10 [ current_ypos#83 current_ypos#18 current_xpos#109 current_xpos#23 current_piece_gfx#99 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ( main:10 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ) always clobbers reg byte a -Statement [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a -Statement [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 main::$9 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 main::$9 ] ) always clobbers reg byte a -Statement [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a -Statement [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a -Statement [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#84 render_screen_render#68 current_xpos#110 current_piece_gfx#100 ] ( main:10 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#84 render_screen_render#68 current_xpos#110 current_piece_gfx#100 ] ) always clobbers reg byte a -Statement [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_screen_show#24 render_screen_render#31 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 ] ( main:10 [ render_screen_show#24 render_screen_render#31 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#15 render_screen_render#10 ] ( main:10::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#15 render_screen_render#10 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#11 render_screen_render#10 ] ( main:10::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#11 render_screen_render#10 ] ) always clobbers reg byte a -Statement [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#0 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#0 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#0 ] ) always clobbers reg byte a -Statement [77] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] ) always clobbers reg byte a -Statement [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ) always clobbers reg byte a -Statement [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ) always clobbers reg byte a -Statement [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ( main:10::render_current:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] main:10::render_current:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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 [93] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#62 [ render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:30 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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:66 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#27 current_xpos#47 current_piece_gfx#52 current_piece_char#62 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 [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [103] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#18 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:10::render_playfield:25 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#18 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:10::render_playfield:60 [ render_screen_show#15 render_screen_render#15 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#18 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 [115] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a -Statement [116] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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 [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a -Statement [128] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [129] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:10::play_move_rotate:54 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [131] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_leftright:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:10::play_move_down:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [132] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_leftright:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:10::play_move_down:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [134] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [138] 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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [142] (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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [145] 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:54::play_collision:122 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:49::play_collision:160 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:49::play_collision:171 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:44::play_collision:195 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:10::play_move_leftright:49 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a -Statement [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:10::play_move_leftright:49 [ render_screen_show#15 render_screen_render#15 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#74 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:10::play_move_down:44 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#73 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#77 ] ( main:10::play_move_down:44 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#77 ] ) always clobbers reg byte a -Statement [213] (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:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [214] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:10::play_spawn_current:23 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:10::play_spawn_current:23 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:10::play_move_down:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [223] (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:44::play_spawn_current:204 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [238] (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:44::play_remove_lines:202 [ render_screen_show#15 render_screen_render#15 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 [245] *((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:44::play_remove_lines:202 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:10::play_move_down:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [250] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [254] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:44::play_lock_current:200 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [266] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [268] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [269] (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:44::keyboard_event_pressed:180 [ render_screen_show#15 render_screen_render#15 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:288 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:294 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:300 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:10::keyboard_event_scan:38::keyboard_event_pressed:306 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [282] 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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [283] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [298] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [304] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:10::keyboard_event_scan:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [313] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [314] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [317] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [319] *((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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [325] *((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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [326] (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:38 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [329] *((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:38::keyboard_matrix_read:279 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:10::keyboard_event_scan:38::keyboard_matrix_read:279 [ render_screen_show#15 render_screen_render#15 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [340] (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 [341] *((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 [342] *((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 [343] (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 [344] (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 [347] *((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 [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a +Statement [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ) always clobbers reg byte a reg byte y +Statement [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ) always clobbers reg byte a reg byte y +Statement [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ) always clobbers reg byte a +Statement [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:11::sid_rnd_init:14 [ ] ) always clobbers reg byte a +Statement [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:11::sid_rnd_init:14 [ ] ) always clobbers reg byte a +Statement [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:171 [ sprites_irq::ptr#0 ] +Statement [455] (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 [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [457] (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 [458] (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 [459] (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 [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +Statement [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [468] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [470] (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 [471] (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 [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [9] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 [ current_ypos#84 current_ypos#18 current_xpos#110 current_xpos#23 current_piece_gfx#100 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:11 [ current_ypos#84 current_ypos#18 current_xpos#110 current_xpos#23 current_piece_gfx#100 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [32] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ( main:11 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#71 ] ) always clobbers reg byte a +Statement [34] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a +Statement [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a +Statement [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#85 render_screen_render#62 current_xpos#111 current_piece_gfx#101 ] ( main:11 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 current_ypos#85 render_screen_render#62 current_xpos#111 current_piece_gfx#101 ] ) always clobbers reg byte a +Statement [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:68 [ current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#0 ] ) always clobbers reg byte a +Statement [75] if((byte) render_current::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_current::@13 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [76] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::l#4 render_current::i#1 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 [ render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ( main:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] main:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 current_piece_gfx#53 current_piece_char#63 render_current::ypos2#2 render_current::i#3 render_current::l#4 render_current::$5 ] ) always clobbers reg byte a +Statement [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [87] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#4) [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [91] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 [ render_screen_render#28 current_xpos#47 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:11::render_current:31 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#28 current_xpos#47 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:11::render_current:66 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#28 current_xpos#47 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 [97] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a +Statement [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#19 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:26 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 render_screen_render#19 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:11::render_playfield:60 [ render_screen_show#16 render_screen_render#16 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 render_screen_render#19 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 [113] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [114] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#77 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#77 ] ) always clobbers reg byte a +Statement [125] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a +Statement [126] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [127] (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#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:11::play_move_rotate:54 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [129] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [130] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [132] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [136] 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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [140] (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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [143] 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:11::play_move_rotate:54::play_collision:120 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 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:11::play_move_leftright:49::play_collision:158 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_leftright:49::play_collision:169 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 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:11::play_move_down:44::play_collision:193 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#76 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:11::play_move_leftright:49 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#76 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a +Statement [168] (byte*~) current_piece#75 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:11::play_move_leftright:49 [ render_screen_show#16 render_screen_render#16 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#75 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a +Statement [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#74 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_move_down:44 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_piece#74 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [203] (byte*~) current_piece#78 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#78 ] ( main:11::play_move_down:44 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#78 ] ) always clobbers reg byte a +Statement [211] (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:11::play_spawn_current:24 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [212] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:11::play_spawn_current:24 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [215] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:11::play_spawn_current:24 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [221] (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:11::play_spawn_current:24 [ play_spawn_current::piece_idx#1 ] main:11::play_move_down:44::play_spawn_current:202 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [236] (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:11::play_move_down:44::play_remove_lines:200 [ render_screen_show#16 render_screen_render#16 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 [243] *((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:11::play_move_down:44::play_remove_lines:200 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [248] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [252] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 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:11::play_move_down:44::play_lock_current:198 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece_gfx#20 current_xpos#10 current_piece_char#15 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 [264] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [266] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [267] (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:11::play_move_down:44::keyboard_event_pressed:178 [ render_screen_show#16 render_screen_render#16 keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:286 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:292 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:298 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:38::keyboard_event_pressed:304 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [280] 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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [281] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [296] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [302] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [308] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [311] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [312] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [315] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [317] *((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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [323] *((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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [324] (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:11::keyboard_event_scan:38 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [327] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:38::keyboard_matrix_read:277 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [328] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:38::keyboard_matrix_read:277 [ render_screen_show#16 render_screen_render#16 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 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 [339] (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:11::play_init:22 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Statement [340] *((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:11::play_init:22 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [341] *((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:11::play_init:22 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [342] (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:11::play_init:22 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [343] (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:11::play_init:22 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [346] *((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:11::play_init:22 [ ] ) always clobbers reg byte a +Statement [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [355] *((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 [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:10::sprites_irq_init:19 [ ] ) always clobbers reg byte a -Statement [361] *((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 [362] *((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 [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a -Statement [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:17 [ ] ) always clobbers reg byte a -Statement [366] (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 [367] *((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 [368] *((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 [369] (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 [374] *((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 [376] *((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 [377] *((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 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:10::render_init:15 [ ] ) always clobbers reg byte a -Statement [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ( main:10::render_init:15 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ) always clobbers reg byte a -Statement [390] *((byte*~) render_init::$12) ← (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 [393] (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 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ) always clobbers reg byte a -Statement [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ) always clobbers reg byte a -Statement [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:10::render_init:15 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:10::render_init:15::fill:386 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:10::render_init:15::fill:386 [ fill::addr#1 ] ) always clobbers reg byte a -Statement [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a reg byte y -Statement [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a -Statement [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ) always clobbers reg byte a reg byte y -Statement [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ) always clobbers reg byte a reg byte y -Statement [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ( main:10::render_init:15::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] main:10::render_init:15::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ) always clobbers reg byte a -Statement [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a -Statement [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:10::sid_rnd_init:13 [ ] ) always clobbers reg byte a -Statement [441] *((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 [447] 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 [459] (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 [460] 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 [461] (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 [462] (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 [463] (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 [466] (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 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [473] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [475] (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 [476] (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 [478] (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 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] : zp ZP_BYTE:2 , reg byte x , -Potential registers zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] : zp ZP_BYTE:3 , reg byte x , +Statement [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [354] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [357] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ ] ) always clobbers reg byte a +Statement [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [363] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:11::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [365] (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:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [366] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [368] (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:11::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [373] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [376] *((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:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:11::render_init:16 [ ] ) always clobbers reg byte a +Statement [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ( main:11::render_init:16 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$12 ] ) always clobbers reg byte a +Statement [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:11::render_init:16 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y +Statement [393] (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:11::render_init:16 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$22 ] ) always clobbers reg byte a +Statement [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$23 ] ) always clobbers reg byte a +Statement [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 [ fill::addr#2 ] ( main:11::render_init:16::fill:386 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:11::render_init:16::fill:386 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::orig#5 render_screen_original::y#8 render_screen_original::screen#5 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#2 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a reg byte y +Statement [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#0 ] ) always clobbers reg byte a +Statement [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 ] ) always clobbers reg byte a reg byte y +Statement [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::screen#7 render_screen_original::x#7 ] ) always clobbers reg byte a reg byte y +Statement [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ( main:11::render_init:16::render_screen_original:382 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] main:11::render_init:16::render_screen_original:384 [ render_screen_original::y#8 render_screen_original::orig#1 render_screen_original::x#5 render_screen_original::screen#10 render_screen_original::c#1 ] ) always clobbers reg byte a +Statement [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:11::sid_rnd_init:14 [ ] ) always clobbers reg byte a +Statement [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:11::sid_rnd_init:14 [ ] ) always clobbers reg byte a +Statement [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a +Statement [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [455] (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 [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [457] (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 [458] (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 [459] (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 [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a +Statement [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [468] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [470] (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 [471] (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 [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] : zp ZP_BYTE:4 , reg byte x , -Potential registers zp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] : zp ZP_WORD:8 , -Potential registers zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] : zp ZP_WORD:8 , +Potential registers zp ZP_BYTE:10 [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ render_screen_render#18 render_screen_render#69 ] : zp ZP_BYTE:16 , reg byte x , +Potential registers zp ZP_BYTE:16 [ render_screen_render#19 render_screen_render#63 ] : zp ZP_BYTE:16 , reg byte x , Potential registers zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] : zp ZP_BYTE:17 , reg byte x , Potential registers zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:18 , reg byte x , Potential registers zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] : zp ZP_WORD:19 , Potential registers zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:21 , reg byte x , Potential registers zp ZP_BYTE:22 [ play_move_rotate::return#1 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:24 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] : zp ZP_WORD:24 , +Potential registers zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] : zp ZP_WORD:24 , Potential registers zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:26 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , @@ -12459,7 +12656,7 @@ Potential registers zp ZP_BYTE:34 [ play_collision::return#14 ] : zp ZP_BYTE:34 Potential registers zp ZP_BYTE:35 [ play_move_leftright::return#1 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:36 [ 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:36 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] : zp ZP_BYTE:37 , reg byte x , -Potential registers zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] : zp ZP_WORD:38 , +Potential registers zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] : zp ZP_WORD:38 , Potential registers zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] : zp ZP_BYTE:40 , reg byte x , Potential registers zp ZP_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] : zp ZP_WORD:41 , Potential registers zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] : zp ZP_BYTE:43 , reg byte x , @@ -12501,26 +12698,26 @@ Potential registers zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen Potential registers zp ZP_BYTE:85 [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] : zp ZP_BYTE:85 , reg byte x , reg byte y , Potential registers zp ZP_WORD:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp ZP_WORD:86 , Potential registers zp ZP_BYTE:88 [ render_screen_original::x#7 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:88 , reg byte x , -Potential registers zp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:89 , -Potential registers zp ZP_BYTE:90 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp ZP_BYTE:90 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ irq_raster_next#0 ] : zp ZP_BYTE:91 , -Potential registers zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:92 , -Potential registers zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:93 , -Potential registers zp ZP_BYTE:94 [ irq_cnt#0 ] : zp ZP_BYTE:94 , -Potential registers zp ZP_BYTE:95 [ main::$9 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:89 , +Potential registers zp ZP_BYTE:90 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] : zp ZP_BYTE:90 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ render_screen_showing#0 ] : zp ZP_BYTE:91 , +Potential registers zp ZP_BYTE:92 [ irq_raster_next#0 ] : zp ZP_BYTE:92 , +Potential registers zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:93 , +Potential registers zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:94 , +Potential registers zp ZP_BYTE:95 [ irq_cnt#0 ] : zp ZP_BYTE:95 , Potential registers zp ZP_BYTE:96 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:97 [ main::key_event#0 ] : zp ZP_BYTE:97 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:98 [ play_move_down::key_event#0 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:99 [ play_move_down::return#3 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ main::$13 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ main::$12 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:101 [ main::render#1 ] : zp ZP_BYTE:101 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:102 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:103 [ play_move_leftright::return#4 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ main::$14 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ main::$13 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:105 [ main::render#2 ] : zp ZP_BYTE:105 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:106 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:107 [ play_move_rotate::return#4 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ main::$15 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ main::$14 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:109 [ main::render#3 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:110 [ render_current::$5 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:111 [ render_current::screen_line#0 ] : zp ZP_WORD:111 , @@ -12571,341 +12768,354 @@ Potential registers zp ZP_BYTE:159 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:159 Potential registers zp ZP_BYTE:160 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:161 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:162 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:162 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:163 [ play_init::$1 ] : zp ZP_BYTE:163 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:164 [ sprites_init::s2#0 ] : zp ZP_BYTE:164 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:165 [ render_init::$12 ] : zp ZP_WORD:165 , -Potential registers zp ZP_BYTE:167 [ render_init::$22 ] : zp ZP_BYTE:167 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:168 [ render_init::$23 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:169 [ irq::ypos#0 ] : zp ZP_BYTE:169 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:170 [ irq::ptr#0 ] : zp ZP_BYTE:170 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:171 [ irq::ptr#1 ] : zp ZP_BYTE:171 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:172 [ irq::ptr#2 ] : zp ZP_BYTE:172 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:173 [ irq_cnt#1 ] : zp ZP_BYTE:173 , -Potential registers zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:174 , -Potential registers zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:175 , -Potential registers zp ZP_BYTE:176 [ irq::$3 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:177 [ irq_cnt#13 ] : zp ZP_BYTE:177 , -Potential registers zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:178 , -Potential registers zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:179 , +Potential registers zp ZP_BYTE:163 [ render_screen_showing#1 ] : zp ZP_BYTE:163 , +Potential registers zp ZP_BYTE:164 [ play_init::$1 ] : zp ZP_BYTE:164 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:165 [ sprites_init::s2#0 ] : zp ZP_BYTE:165 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:166 [ render_init::$12 ] : zp ZP_WORD:166 , +Potential registers zp ZP_BYTE:168 [ render_init::$22 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:169 [ render_init::$23 ] : zp ZP_BYTE:169 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:170 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:170 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:171 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:171 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:172 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:172 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:173 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:173 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:174 [ irq_cnt#1 ] : zp ZP_BYTE:174 , +Potential registers zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:175 , +Potential registers zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:176 , +Potential registers zp ZP_BYTE:177 [ sprites_irq::$4 ] : zp ZP_BYTE:177 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:178 [ irq_cnt#14 ] : zp ZP_BYTE:178 , +Potential registers zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:179 , +Potential registers zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:180 , +Potential registers zp ZP_BYTE:181 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:181 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:182 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:182 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:158 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:159 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:160 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:161 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:62 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:150 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:152 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:154 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:156 [ keyboard_event_scan::$26 ] -Uplift Scope [play_collision] 3,823.33: zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 2,002: zp ZP_BYTE:125 [ play_collision::$7 ] 1,340.75: zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 1,223.44: zp ZP_BYTE:33 [ play_collision::c#2 play_collision::c#1 ] 161.77: zp ZP_BYTE:124 [ play_collision::i#1 ] 141.57: zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 113.62: zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] 78.71: zp ZP_WORD:122 [ play_collision::playfield_line#0 ] 47.76: zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] 18: zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:27 [ 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:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 4: zp ZP_BYTE:117 [ play_collision::return#13 ] 4: zp ZP_BYTE:126 [ play_collision::return#12 ] 4: zp ZP_BYTE:128 [ play_collision::return#1 ] 4: zp ZP_BYTE:132 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:34 [ play_collision::return#14 ] +Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:158 [ keyboard_event_scan::$3 ] 20,002: zp ZP_BYTE:159 [ keyboard_event_scan::$4 ] 20,002: zp ZP_BYTE:160 [ keyboard_event_scan::event_type#0 ] 20,002: zp ZP_BYTE:161 [ keyboard_event_scan::$11 ] 17,858.93: zp ZP_BYTE:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp ZP_BYTE:62 [ 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 ] 2,101.74: zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:150 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:152 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:154 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:156 [ keyboard_event_scan::$26 ] +Uplift Scope [play_collision] 38,173.33: zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 20,002: zp ZP_BYTE:125 [ play_collision::$7 ] 13,378.25: zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 12,223.44: zp ZP_BYTE:33 [ play_collision::c#2 play_collision::c#1 ] 1,615.62: zp ZP_BYTE:124 [ play_collision::i#1 ] 1,371.57: zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 1,126.12: zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp ZP_WORD:122 [ play_collision::playfield_line#0 ] 476.33: zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] 50.2: zp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 18: zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] 4: zp ZP_BYTE:117 [ play_collision::return#13 ] 4: zp ZP_BYTE:126 [ play_collision::return#12 ] 4: zp ZP_BYTE:128 [ play_collision::return#1 ] 4: zp ZP_BYTE:132 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:34 [ play_collision::return#14 ] +Uplift Scope [play_lock_current] 38,173.33: zp ZP_BYTE:54 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 14,001.4: zp ZP_BYTE:56 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp ZP_BYTE:141 [ play_lock_current::i#1 ] 1,167.83: zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] 777.68: zp ZP_BYTE:52 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplift Scope [play_remove_lines] 19,119.62: zp ZP_BYTE:48 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 18,939.14: zp ZP_BYTE:51 [ 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 ] 17,501.75: zp ZP_BYTE:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp ZP_BYTE:138 [ play_remove_lines::c#0 ] 1,644.5: zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplift Scope [] 58,858.19: zp ZP_BYTE:63 [ 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 ] 212.98: zp ZP_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] 205.92: zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] 72.09: zp ZP_BYTE:10 [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] 59.09: zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] 40.1: zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] 30.62: zp ZP_BYTE:16 [ render_screen_render#19 render_screen_render#63 ] 26: zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] 20.4: zp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] 20: zp ZP_BYTE:157 [ keyboard_modifiers#5 ] 20: zp ZP_BYTE:163 [ render_screen_showing#1 ] 20: zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:178 [ irq_cnt#14 ] 20: zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] 19.25: zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] 17.64: zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 16.01: zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] 15.12: zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] 13.85: zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] 11.6: zp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 10.59: zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] 8.33: zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] 4.73: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4.25: zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] 4: zp ZP_BYTE:174 [ irq_cnt#1 ] 0.74: zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] 0.57: zp ZP_BYTE:91 [ render_screen_showing#0 ] 0.25: zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] 0.2: zp ZP_BYTE:95 [ irq_cnt#0 ] 0.18: zp ZP_BYTE:92 [ irq_raster_next#0 ] Uplift Scope [render_current] 2,534.25: zp ZP_BYTE:13 [ 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:15 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] 1,001: zp ZP_BYTE:113 [ render_current::current_cell#0 ] 202: zp ZP_BYTE:110 [ render_current::$5 ] 162.72: zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] 101.16: zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:111 [ render_current::screen_line#0 ] -Uplift Scope [play_lock_current] 3,823.33: zp ZP_BYTE:54 [ 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:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 1,401.4: zp ZP_BYTE:56 [ play_lock_current::c#2 play_lock_current::c#1 ] 233.67: zp ZP_BYTE:141 [ play_lock_current::i#1 ] 117.83: zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] 110.2: zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:52 [ 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:48 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:51 [ 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:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 821: zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 600.6: zp ZP_BYTE:138 [ play_remove_lines::c#0 ] 165.93: zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplift Scope [] 5,894.95: zp ZP_BYTE:63 [ 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 ] 72.09: zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] 59.09: zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] 31.48: zp ZP_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] 30.62: zp ZP_BYTE:16 [ render_screen_render#18 render_screen_render#69 ] 26.72: zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] 26: zp ZP_WORD:24 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] 21.69: zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] 21.03: zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] 20.4: zp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] 20: zp ZP_BYTE:157 [ keyboard_modifiers#5 ] 20: zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:177 [ irq_cnt#13 ] 20: zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] 18.31: zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] 14.86: zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] 13.85: zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] 11.61: zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] 11.6: zp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 10.59: zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] 8.69: zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 8.33: zp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] 4: zp ZP_BYTE:173 [ irq_cnt#1 ] 2.06: zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] 0.81: zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] 0.27: zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] 0.22: zp ZP_BYTE:94 [ irq_cnt#0 ] 0.2: zp ZP_BYTE:91 [ irq_raster_next#0 ] Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:114 [ render_playfield::$2 ] 202: zp ZP_BYTE:115 [ render_playfield::$3 ] 181.8: zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [play_spawn_current] 2,337: zp ZP_BYTE:46 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 2,002: zp ZP_BYTE:136 [ play_spawn_current::$1 ] 0.13: zp ZP_BYTE:134 [ play_spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 2,002: zp ZP_BYTE:147 [ keyboard_matrix_read::return#2 ] 1,003: zp ZP_BYTE:146 [ keyboard_matrix_read::rowid#0 ] 334.33: zp ZP_BYTE:162 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:135 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:137 [ sid_rnd::return#0 ] Uplift Scope [render_screen_original] 779.94: zp ZP_BYTE:88 [ render_screen_original::x#7 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 ] 680.1: zp ZP_WORD:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] 580.75: zp ZP_BYTE:85 [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] 233.98: zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] 17.5: zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] -Uplift Scope [render_init] 252.5: zp ZP_BYTE:74 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:165 [ render_init::$12 ] 27.83: zp ZP_WORD:71 [ render_init::line#4 render_init::line#1 ] 22.79: zp ZP_BYTE:75 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:167 [ render_init::$22 ] 22: zp ZP_BYTE:168 [ render_init::$23 ] 19.64: zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] 12.83: zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] -Uplift Scope [play_spawn_current] 237: zp ZP_BYTE:46 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:136 [ play_spawn_current::$1 ] 0.13: zp ZP_BYTE:134 [ play_spawn_current::$3 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:147 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:146 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:162 [ keyboard_matrix_read::return#0 ] -Uplift Scope [sid_rnd] 202: zp ZP_BYTE:135 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:137 [ sid_rnd::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:95 [ main::$9 ] 22: zp ZP_BYTE:100 [ main::$13 ] 22: zp ZP_BYTE:104 [ main::$14 ] 22: zp ZP_BYTE:108 [ main::$15 ] 22: zp ZP_BYTE:109 [ main::render#3 ] 4.4: zp ZP_BYTE:101 [ main::render#1 ] 4.4: zp ZP_BYTE:105 [ main::render#2 ] 4: zp ZP_BYTE:97 [ main::key_event#0 ] -Uplift Scope [play_init] 23.83: zp ZP_BYTE:65 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:163 [ play_init::$1 ] 13.93: zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:66 [ play_init::pli#2 play_init::pli#1 ] -Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:69 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:164 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:99 [ play_move_down::return#3 ] 20: zp ZP_BYTE:36 [ 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:98 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:131 [ play_move_down::$2 ] 4: zp ZP_BYTE:133 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:45 [ play_move_down::return#2 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:107 [ play_move_rotate::return#4 ] 8.89: zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:106 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:116 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:118 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:119 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:22 [ play_move_rotate::return#1 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:103 [ play_move_leftright::return#4 ] 7.5: zp ZP_BYTE:102 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:127 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:129 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:35 [ play_move_leftright::return#1 ] +Uplift Scope [main] 202: zp ZP_BYTE:100 [ main::$12 ] 202: zp ZP_BYTE:104 [ main::$13 ] 202: zp ZP_BYTE:108 [ main::$14 ] 202: zp ZP_BYTE:109 [ main::render#3 ] 40.4: zp ZP_BYTE:101 [ main::render#1 ] 40.4: zp ZP_BYTE:105 [ main::render#2 ] 36.73: zp ZP_BYTE:97 [ main::key_event#0 ] +Uplift Scope [render_init] 252.5: zp ZP_BYTE:74 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:166 [ render_init::$12 ] 27.83: zp ZP_WORD:71 [ render_init::line#4 render_init::line#1 ] 22.79: zp ZP_BYTE:75 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:168 [ render_init::$22 ] 22: zp ZP_BYTE:169 [ render_init::$23 ] 19.64: zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] 12.83: zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] +Uplift Scope [play_move_down] 202: zp ZP_BYTE:99 [ play_move_down::return#3 ] 51.5: zp ZP_BYTE:98 [ play_move_down::key_event#0 ] 33.67: zp ZP_BYTE:45 [ play_move_down::return#2 ] 20: zp ZP_BYTE:36 [ 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 ] 4: zp ZP_BYTE:131 [ play_move_down::$2 ] 4: zp ZP_BYTE:133 [ play_move_down::$12 ] +Uplift Scope [play_move_rotate] 202: zp ZP_BYTE:107 [ play_move_rotate::return#4 ] 52.5: zp ZP_BYTE:106 [ play_move_rotate::key_event#0 ] 33.67: zp ZP_BYTE:22 [ play_move_rotate::return#1 ] 8.89: zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 4: zp ZP_BYTE:116 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:118 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:119 [ play_move_rotate::$4 ] +Uplift Scope [play_move_leftright] 202: zp ZP_BYTE:103 [ play_move_leftright::return#4 ] 52.5: zp ZP_BYTE:102 [ play_move_leftright::key_event#0 ] 33.67: zp ZP_BYTE:35 [ play_move_leftright::return#1 ] 4: zp ZP_BYTE:127 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:129 [ play_move_leftright::$8 ] +Uplift Scope [keyboard_event_get] 202: zp ZP_BYTE:96 [ keyboard_event_get::return#3 ] 38.33: zp ZP_BYTE:58 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [play_init] 23.83: zp ZP_BYTE:65 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:164 [ play_init::$1 ] 13.93: zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:66 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:69 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:165 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [sprites_irq] 12.67: zp ZP_BYTE:90 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] 4: zp ZP_BYTE:173 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:177 [ sprites_irq::$4 ] 4: zp ZP_BYTE:182 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:172 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:181 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:170 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:171 [ sprites_irq::ptr#0 ] Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:130 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:142 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:144 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:149 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:151 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:153 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:155 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:145 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] Uplift Scope [fill] 33: zp ZP_WORD:80 [ fill::addr#2 fill::addr#1 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:96 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:58 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplift Scope [irq] 12.67: zp ZP_BYTE:90 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] 4: zp ZP_BYTE:176 [ irq::$3 ] 3: zp ZP_BYTE:172 [ irq::ptr#2 ] 2.67: zp ZP_BYTE:170 [ irq::ptr#0 ] 2.5: zp ZP_BYTE:169 [ irq::ypos#0 ] 2.4: zp ZP_BYTE:171 [ irq::ptr#1 ] Uplift Scope [render_show] 2: zp ZP_BYTE:64 [ render_show::d018val#3 ] Uplift Scope [sid_rnd_init] Uplift Scope [render_screen_swap] Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 627012 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:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:62 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:150 [ keyboard_event_scan::$14 ] zp ZP_BYTE:152 [ keyboard_event_scan::$18 ] zp ZP_BYTE:154 [ keyboard_event_scan::$22 ] zp ZP_BYTE:156 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 4517524 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:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:62 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:150 [ keyboard_event_scan::$14 ] zp ZP_BYTE:152 [ keyboard_event_scan::$18 ] zp ZP_BYTE:154 [ keyboard_event_scan::$22 ] zp ZP_BYTE:156 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [play_collision] best 612012 combination zp ZP_BYTE:31 [ 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:32 [ 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:124 [ play_collision::i#1 ] zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:122 [ play_collision::playfield_line#0 ] zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:117 [ play_collision::return#13 ] zp ZP_BYTE:126 [ play_collision::return#12 ] zp ZP_BYTE:128 [ play_collision::return#1 ] zp ZP_BYTE:132 [ play_collision::return#0 ] zp ZP_BYTE:34 [ play_collision::return#14 ] +Uplifting [play_collision] best 4367524 combination zp ZP_BYTE:31 [ 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:32 [ 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:124 [ play_collision::i#1 ] zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:122 [ play_collision::playfield_line#0 ] zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:117 [ play_collision::return#13 ] zp ZP_BYTE:126 [ play_collision::return#12 ] zp ZP_BYTE:128 [ play_collision::return#1 ] zp ZP_BYTE:132 [ play_collision::return#0 ] zp ZP_BYTE:34 [ play_collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [render_current] best 597012 combination zp ZP_BYTE:13 [ 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:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:110 [ render_current::$5 ] zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:111 [ render_current::screen_line#0 ] -Limited combination testing to 100 combinations of 3888 possible. -Uplifting [play_lock_current] best 588012 combination zp ZP_BYTE:54 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:55 [ 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:141 [ play_lock_current::i#1 ] zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:52 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplifting [play_lock_current] best 4277524 combination zp ZP_BYTE:54 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:55 [ 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:141 [ play_lock_current::i#1 ] zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:52 [ 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 574312 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:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:138 [ play_remove_lines::c#0 ] zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 4140524 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:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:138 [ play_remove_lines::c#0 ] zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [] best 574179 combination zp ZP_BYTE:63 [ 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:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] zp ZP_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] reg byte x [ render_screen_render#18 render_screen_render#69 ] zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] zp ZP_WORD:24 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] zp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] zp ZP_BYTE:157 [ keyboard_modifiers#5 ] zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] zp ZP_BYTE:177 [ irq_cnt#13 ] zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] zp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:173 [ irq_cnt#1 ] zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] zp ZP_BYTE:94 [ irq_cnt#0 ] zp ZP_BYTE:91 [ irq_raster_next#0 ] +Uplifting [] best 4139358 combination zp ZP_BYTE:63 [ 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_WORD:41 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] reg byte x [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] reg byte x [ render_screen_render#19 render_screen_render#63 ] zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] zp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] zp ZP_BYTE:157 [ keyboard_modifiers#5 ] zp ZP_BYTE:163 [ render_screen_showing#1 ] zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] zp ZP_BYTE:178 [ irq_cnt#14 ] zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] zp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] zp ZP_BYTE:174 [ irq_cnt#1 ] zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] zp ZP_BYTE:91 [ render_screen_showing#0 ] zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] zp ZP_BYTE:95 [ irq_cnt#0 ] zp ZP_BYTE:92 [ irq_raster_next#0 ] Limited combination testing to 100 combinations of 497664 possible. -Uplifting [render_playfield] best 573579 combination zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_current] best 4133358 combination zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] zp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:110 [ render_current::$5 ] zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:111 [ render_current::screen_line#0 ] +Limited combination testing to 100 combinations of 3888 possible. +Uplifting [render_playfield] best 4132758 combination zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [render_screen_original] best 570479 combination reg byte x [ render_screen_original::x#7 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:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte y [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] -Uplifting [render_init] best 569289 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:165 [ render_init::$12 ] zp ZP_WORD:71 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$22 ] reg byte a [ render_init::$23 ] zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] +Uplifting [play_spawn_current] best 4119748 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:134 [ play_spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 4107742 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 4098739 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [render_screen_original] best 4095639 combination reg byte x [ render_screen_original::x#7 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:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte y [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] +Uplifting [main] best 4093239 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:101 [ main::render#1 ] zp ZP_BYTE:105 [ main::render#2 ] zp ZP_BYTE:97 [ main::key_event#0 ] +Limited combination testing to 100 combinations of 6912 possible. +Uplifting [render_init] best 4092049 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:166 [ render_init::$12 ] zp ZP_WORD:71 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$22 ] reg byte a [ render_init::$23 ] zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [play_spawn_current] best 567979 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:134 [ play_spawn_current::$3 ] -Uplifting [keyboard_matrix_read] best 566773 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 565870 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [main] best 565630 combination reg byte a [ main::$9 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::$15 ] zp ZP_BYTE:109 [ main::render#3 ] zp ZP_BYTE:101 [ main::render#1 ] zp ZP_BYTE:105 [ main::render#2 ] zp ZP_BYTE:97 [ main::key_event#0 ] -Limited combination testing to 100 combinations of 27648 possible. -Uplifting [play_init] best 565460 combination reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:66 [ play_init::pli#2 play_init::pli#1 ] -Uplifting [sprites_init] best 565290 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [play_move_down] best 565176 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:133 [ play_move_down::$12 ] zp ZP_BYTE:45 [ play_move_down::return#2 ] +Uplifting [play_move_down] best 4091040 combination reg byte a [ play_move_down::return#3 ] reg byte a [ play_move_down::key_event#0 ] reg byte x [ play_move_down::return#2 ] zp ZP_BYTE:36 [ 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:131 [ play_move_down::$2 ] zp ZP_BYTE:133 [ play_move_down::$12 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 565074 combination reg byte a [ play_move_rotate::return#4 ] zp ZP_BYTE:23 [ 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:118 [ play_move_rotate::$6 ] zp ZP_BYTE:119 [ play_move_rotate::$4 ] zp ZP_BYTE:22 [ play_move_rotate::return#1 ] +Uplifting [play_move_rotate] best 4089828 combination reg byte a [ play_move_rotate::return#4 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::return#1 ] zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] zp ZP_BYTE:116 [ play_move_rotate::$2 ] zp ZP_BYTE:118 [ play_move_rotate::$6 ] zp ZP_BYTE:119 [ play_move_rotate::$4 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 564966 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:35 [ play_move_leftright::return#1 ] +Uplifting [play_move_leftright] best 4088610 combination reg byte a [ play_move_leftright::return#4 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#1 ] reg byte a [ play_move_leftright::$4 ] zp ZP_BYTE:129 [ play_move_leftright::$8 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [keyboard_event_pressed] best 564946 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:151 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:153 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:155 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:145 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_get] best 4087704 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [play_init] best 4087534 combination reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:66 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [sprites_init] best 4087364 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_irq] best 4087338 combination reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] reg byte x [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::$4 ] reg byte a [ sprites_irq::ptr#2 ] zp ZP_BYTE:172 [ sprites_irq::ptr#3 ] zp ZP_BYTE:181 [ sprites_irq::ptr#1 ] zp ZP_BYTE:170 [ sprites_irq::ypos#0 ] zp ZP_BYTE:171 [ sprites_irq::ptr#0 ] +Limited combination testing to 100 combinations of 36864 possible. +Uplifting [keyboard_event_pressed] best 4087318 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:151 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:153 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:155 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:145 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [fill] best 564946 combination zp ZP_WORD:80 [ fill::addr#2 fill::addr#1 ] -Uplifting [keyboard_event_get] best 564850 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 564815 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte a [ irq::$3 ] reg byte x [ irq::ptr#2 ] reg byte a [ irq::ptr#0 ] zp ZP_BYTE:169 [ irq::ypos#0 ] zp ZP_BYTE:171 [ irq::ptr#1 ] -Limited combination testing to 100 combinations of 3072 possible. -Uplifting [render_show] best 564806 combination reg byte a [ render_show::d018val#3 ] -Uplifting [sid_rnd_init] best 564806 combination -Uplifting [render_screen_swap] best 564806 combination -Uplifting [sprites_irq_init] best 564806 combination +Uplifting [fill] best 4087318 combination zp ZP_WORD:80 [ fill::addr#2 fill::addr#1 ] +Uplifting [render_show] best 4087309 combination reg byte a [ render_show::d018val#3 ] +Uplifting [sid_rnd_init] best 4087309 combination +Uplifting [render_screen_swap] best 4087309 combination +Uplifting [sprites_irq_init] best 4087309 combination Attempting to uplift remaining variables inzp ZP_BYTE:63 [ 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 564806 combination zp ZP_BYTE:63 [ 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 4087309 combination zp ZP_BYTE:63 [ 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:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Uplifting [play_collision] best 564806 combination zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Uplifting [play_collision] best 4087309 combination zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ 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 564806 combination zp ZP_BYTE:54 [ 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:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] -Uplifting [render_current] best 564806 combination zp ZP_BYTE:13 [ 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:21 [ render_playfield::c#2 render_playfield::c#1 ] -Uplifting [render_playfield] best 564806 combination zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] +Uplifting [play_lock_current] best 4087309 combination zp ZP_BYTE:54 [ 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:61 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 549806 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 3937309 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 549806 combination zp ZP_BYTE:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] -Uplifting [render_current] best 549806 combination zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 549806 combination zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [play_remove_lines] best 3937309 combination zp ZP_BYTE:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Uplifting [play_lock_current] best 549806 combination zp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Uplifting [play_lock_current] best 3937309 combination zp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Uplifting [play_collision] best 549806 combination zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Uplifting [play_collision] best 3937309 combination zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ 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 549806 combination zp ZP_BYTE:62 [ 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 3937309 combination zp ZP_BYTE:62 [ 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:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 549806 combination zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 3937309 combination zp ZP_BYTE:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:138 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 549806 combination zp ZP_BYTE:138 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 3937309 combination zp ZP_BYTE:138 [ play_remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] +Uplifting [render_current] best 3937309 combination zp ZP_BYTE:13 [ 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:141 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 549806 combination zp ZP_BYTE:141 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 3937309 combination zp ZP_BYTE:141 [ play_lock_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 549806 combination zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:110 [ render_current::$5 ] -Uplifting [render_current] best 549406 combination reg byte a [ render_current::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 549406 combination zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [keyboard_event_scan] best 3937309 combination zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] +Uplifting [render_playfield] best 3937309 combination zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] +Uplifting [render_current] best 3937309 combination zp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 549406 combination zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] -Uplifting [render_current] best 549406 combination zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] +Uplifting [play_remove_lines] best 3937309 combination zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:124 [ play_collision::i#1 ] -Uplifting [play_collision] best 549406 combination zp ZP_BYTE:124 [ play_collision::i#1 ] +Uplifting [play_collision] best 3937309 combination zp ZP_BYTE:124 [ play_collision::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] +Uplifting [render_current] best 3937309 combination zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 3937309 combination zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Uplifting [play_collision] best 549406 combination zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Uplifting [play_collision] best 3937309 combination zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 549406 combination zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 3937309 combination zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 549406 combination zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 3937309 combination zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 549406 combination zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Uplifting [render_current] best 549406 combination zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Uplifting [play_collision] best 3937309 combination zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplifting [play_lock_current] best 549406 combination zp ZP_BYTE:52 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] -Uplifting [] best 549406 combination zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] +Uplifting [play_lock_current] best 3937309 combination zp ZP_BYTE:52 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Uplifting [] best 549406 combination zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:109 [ main::render#3 ] -Uplifting [main] best 549346 combination reg byte a [ main::render#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -Uplifting [] best 549346 combination zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] -Uplifting [] best 549346 combination zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_ypos#9 current_ypos#83 current_ypos#84 ] -Uplifting [] best 549312 combination reg byte x [ current_ypos#9 current_ypos#83 current_ypos#84 ] -Attempting to uplift remaining variables inzp ZP_BYTE:157 [ keyboard_modifiers#5 ] -Uplifting [] best 549309 combination reg byte a [ keyboard_modifiers#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:174 [ irq_sprite_ypos#2 ] -Uplifting [] best 549309 combination zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:175 [ irq_sprite_ptr#2 ] -Uplifting [] best 549309 combination zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:177 [ irq_cnt#13 ] -Uplifting [] best 549309 combination zp ZP_BYTE:177 [ irq_cnt#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:178 [ irq_sprite_ypos#1 ] -Uplifting [] best 549309 combination zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:179 [ irq_sprite_ptr#1 ] -Uplifting [] best 549309 combination zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] -Uplifting [render_init] best 549309 combination zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Uplifting [] best 549309 combination zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 549296 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:82 [ render_screen_original::y#8 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 549296 combination zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 549296 combination zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 549296 combination zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] -Uplifting [] best 549296 combination zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] -Attempting to uplift remaining variables inzp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Uplifting [] best 549296 combination zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Uplifting [] best 549285 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:6 [ render_screen_render#27 render_screen_render#68 ] -Uplifting [] best 549285 combination zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Uplifting [play_collision] best 549272 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 [] best 3937309 combination zp ZP_BYTE:44 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:110 [ render_current::$5 ] +Uplifting [render_current] best 3936909 combination reg byte a [ render_current::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 3936909 combination zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] +Uplifting [render_current] best 3936909 combination zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Uplifting [render_current] best 3936909 combination zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Uplifting [play_collision] best 549272 combination zp ZP_BYTE:28 [ 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:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 549272 combination zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Uplifting [] best 549272 combination zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] -Uplifting [] best 549272 combination zp ZP_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] +Uplifting [play_collision] best 3936909 combination zp ZP_BYTE:28 [ 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:101 [ main::render#1 ] -Uplifting [main] best 549272 combination zp ZP_BYTE:101 [ main::render#1 ] +Uplifting [main] best 3936909 combination zp ZP_BYTE:101 [ main::render#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:105 [ main::render#2 ] -Uplifting [main] best 549272 combination zp ZP_BYTE:105 [ main::render#2 ] +Uplifting [main] best 3936909 combination zp ZP_BYTE:105 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] +Uplifting [] best 3936909 combination zp ZP_BYTE:43 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:97 [ main::key_event#0 ] -Uplifting [main] best 549272 combination zp ZP_BYTE:97 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ play_collision::return#13 ] -Uplifting [play_collision] best 549266 combination reg byte a [ play_collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 549260 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:119 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 549254 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:126 [ play_collision::return#12 ] -Uplifting [play_collision] best 549248 combination reg byte a [ play_collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:128 [ play_collision::return#1 ] -Uplifting [play_collision] best 549242 combination reg byte a [ play_collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:132 [ play_collision::return#0 ] -Uplifting [play_collision] best 549236 combination reg byte a [ play_collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:133 [ play_move_down::$12 ] -Uplifting [play_move_down] best 549230 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:150 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 549224 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:151 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 549218 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:152 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 549212 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:153 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 549206 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:154 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 549200 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:155 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 549194 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:156 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 549188 combination reg byte a [ keyboard_event_scan::$26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:173 [ irq_cnt#1 ] -Uplifting [] best 549188 combination zp ZP_BYTE:173 [ irq_cnt#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:22 [ play_move_rotate::return#1 ] -Uplifting [play_move_rotate] best 549152 combination reg byte a [ play_move_rotate::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ play_move_leftright::return#1 ] -Uplifting [play_move_leftright] best 549116 combination reg byte a [ play_move_leftright::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_move_down::return#2 ] -Uplifting [play_move_down] best 549100 combination reg byte x [ play_move_down::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:169 [ irq::ypos#0 ] -Uplifting [irq] best 549085 combination reg byte a [ irq::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:171 [ irq::ptr#1 ] -Uplifting [irq] best 549067 combination reg byte x [ irq::ptr#1 ] +Uplifting [main] best 3936909 combination zp ZP_BYTE:97 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_ypos#9 current_ypos#84 current_ypos#85 ] +Uplifting [] best 3936875 combination reg byte y [ current_ypos#9 current_ypos#84 current_ypos#85 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ 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 ] +Uplifting [play_move_down] best 3936860 combination 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 ] +Attempting to uplift remaining variables inzp ZP_BYTE:157 [ keyboard_modifiers#5 ] +Uplifting [] best 3936857 combination reg byte a [ keyboard_modifiers#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:163 [ render_screen_showing#1 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:163 [ render_screen_showing#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:175 [ irq_sprite_ypos#2 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:176 [ irq_sprite_ptr#2 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:178 [ irq_cnt#14 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:178 [ irq_cnt#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:179 [ irq_sprite_ypos#1 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:180 [ irq_sprite_ptr#1 ] +Uplifting [] best 3936857 combination zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] +Uplifting [render_init] best 3936857 combination zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Uplifting [play_collision] best 3936844 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:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Uplifting [] best 3936844 combination zp ZP_BYTE:40 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 3936844 combination zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] +Uplifting [] best 3936844 combination zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 3936844 combination zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Uplifting [] best 549067 combination zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Uplifting [] best 3936844 combination zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 3936844 combination zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] +Uplifting [] best 3936844 combination zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Uplifting [] best 3936833 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:6 [ render_screen_render#28 render_screen_render#62 ] +Uplifting [] best 3936833 combination zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Uplifting [play_collision] best 3936820 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:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Uplifting [play_move_rotate] best 3936820 combination zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] +Uplifting [] best 3936820 combination zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Uplifting [] best 3936820 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] +Uplifting [] best 3936820 combination zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:116 [ play_move_rotate::$2 ] +Uplifting [play_move_rotate] best 3936814 combination reg byte a [ play_move_rotate::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ play_collision::return#13 ] +Uplifting [play_collision] best 3936808 combination reg byte a [ play_collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:118 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 3936802 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 3936796 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:126 [ play_collision::return#12 ] +Uplifting [play_collision] best 3936790 combination reg byte a [ play_collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:128 [ play_collision::return#1 ] +Uplifting [play_collision] best 3936784 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ play_move_leftright::$8 ] +Uplifting [play_move_leftright] best 3936778 combination reg byte a [ play_move_leftright::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:131 [ play_move_down::$2 ] +Uplifting [play_move_down] best 3936772 combination reg byte a [ play_move_down::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ play_collision::return#0 ] +Uplifting [play_collision] best 3936766 combination reg byte a [ play_collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:133 [ play_move_down::$12 ] +Uplifting [play_move_down] best 3936760 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:150 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 3936754 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:151 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 3936748 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:152 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 3936742 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:153 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 3936736 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:154 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 3936730 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:155 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 3936724 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:156 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 3936718 combination reg byte a [ keyboard_event_scan::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:174 [ irq_cnt#1 ] +Uplifting [] best 3936718 combination zp ZP_BYTE:174 [ irq_cnt#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:172 [ sprites_irq::ptr#3 ] +Uplifting [sprites_irq] best 3936706 combination reg byte x [ sprites_irq::ptr#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:181 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 3936696 combination reg byte a [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:170 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 3936681 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:171 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 3936668 combination reg byte x [ sprites_irq::ptr#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 549067 combination zp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 3936668 combination zp ZP_BYTE:143 [ keyboard_event_pressed::row_bits#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:145 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 549049 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 3936650 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ play_collision::return#14 ] -Uplifting [play_collision] best 549022 combination reg byte a [ play_collision::return#14 ] +Uplifting [play_collision] best 3936623 combination reg byte a [ play_collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 549022 combination zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ irq_sprite_ypos#0 ] -Uplifting [] best 549022 combination zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ irq_sprite_ptr#0 ] -Uplifting [] best 549022 combination zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ irq_cnt#0 ] -Uplifting [] best 549022 combination zp ZP_BYTE:94 [ irq_cnt#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ irq_raster_next#0 ] -Uplifting [] best 549022 combination zp ZP_BYTE:91 [ irq_raster_next#0 ] +Uplifting [keyboard_event_pressed] best 3936623 combination zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ irq_sprite_ypos#0 ] +Uplifting [] best 3936623 combination zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ render_screen_showing#0 ] +Uplifting [] best 3936623 combination zp ZP_BYTE:91 [ render_screen_showing#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:94 [ irq_sprite_ptr#0 ] +Uplifting [] best 3936623 combination zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ irq_cnt#0 ] +Uplifting [] best 3936623 combination zp ZP_BYTE:95 [ irq_cnt#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ irq_raster_next#0 ] +Uplifting [] best 3936623 combination zp ZP_BYTE:92 [ irq_raster_next#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:134 [ play_spawn_current::$3 ] -Uplifting [play_spawn_current] best 549022 combination zp ZP_BYTE:134 [ play_spawn_current::$3 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ current_piece#12 current_piece#73 current_piece#74 current_piece#75 current_piece#76 ] ] with [ zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] ] - score: 1 +Uplifting [play_spawn_current] best 3936623 combination zp ZP_BYTE:134 [ play_spawn_current::$3 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 ] ] with [ zp ZP_WORD:120 [ play_collision::piece_gfx#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:37 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] ] with [ zp ZP_BYTE:52 [ 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_BYTE:89 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:91 [ irq_raster_next#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:92 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:174 [ irq_sprite_ypos#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:93 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:175 [ irq_sprite_ptr#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:94 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:173 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:89 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:92 [ irq_raster_next#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:93 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:175 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:94 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:176 [ irq_sprite_ptr#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:95 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:174 [ irq_cnt#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ main::render#1 ] ] with [ zp ZP_BYTE:105 [ main::render#2 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 ] ] with [ zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 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:82 [ render_screen_original::y#8 render_screen_original::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] ] with [ zp ZP_BYTE:68 [ play_init::idx#2 play_init::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:70 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:73 [ render_init::l#4 render_init::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:82 [ render_screen_original::y#8 render_screen_original::y#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] ] with [ zp ZP_BYTE:47 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:53 [ play_lock_current::l#6 play_lock_current::l#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp ZP_BYTE:134 [ play_spawn_current::$3 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 ] ] with [ zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 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:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:54 [ 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:6 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 ] ] with [ zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:28 [ 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:7 [ current_xpos#47 current_xpos#109 current_xpos#110 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:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:62 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 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:143 [ keyboard_event_pressed::row_bits#0 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 ] ] with [ zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:24 [ 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:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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:66 [ play_init::pli#2 play_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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:71 [ render_init::line#4 render_init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:80 [ fill::addr#2 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] ] with [ zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 ] ] with [ zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:138 [ play_remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 ] ] with [ zp ZP_BYTE:141 [ play_lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] ] with [ zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] -Coalescing zero page register [ zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] ] with [ zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] ] with [ zp ZP_BYTE:97 [ main::key_event#0 ] ] -Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 ] ] with [ zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] ] -Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] ] -Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] ] with [ zp ZP_WORD:165 [ render_init::$12 ] ] -Coalescing zero page register [ zp ZP_BYTE:92 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:178 [ irq_sprite_ypos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:93 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:179 [ irq_sprite_ptr#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:94 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:177 [ irq_cnt#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 ] ] with [ zp ZP_BYTE:17 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:23 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 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:49 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:54 [ 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:6 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 ] ] with [ zp ZP_BYTE:18 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:28 [ 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:7 [ current_xpos#47 current_xpos#110 current_xpos#111 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:50 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:55 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:62 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 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:143 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 ] ] with [ zp ZP_WORD:19 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:24 [ current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:66 [ play_init::pli#2 play_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:71 [ render_init::line#4 render_init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:76 [ render_init::li_1#2 render_init::li_1#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:80 [ fill::addr#2 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:83 [ render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 ] ] with [ zp ZP_WORD:139 [ play_lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:21 [ render_playfield::c#2 render_playfield::c#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:29 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:138 [ play_remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 ] ] with [ zp ZP_BYTE:141 [ play_lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:148 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::l#4 render_current::l#1 ] ] with [ zp ZP_BYTE:30 [ play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:13 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 ] ] with [ zp ZP_BYTE:31 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:14 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 ] ] with [ zp ZP_BYTE:32 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:15 [ render_current::c#2 render_current::c#1 ] ] with [ zp ZP_BYTE:97 [ main::key_event#0 ] ] +Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 ] ] with [ zp ZP_WORD:78 [ render_init::li_2#2 render_init::li_2#1 ] ] +Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:86 [ render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] ] +Coalescing zero page register [ zp ZP_WORD:38 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 ] ] with [ zp ZP_WORD:166 [ render_init::$12 ] ] +Coalescing zero page register [ zp ZP_BYTE:91 [ render_screen_showing#0 ] ] with [ zp ZP_BYTE:163 [ render_screen_showing#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:93 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:179 [ irq_sprite_ypos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:94 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:180 [ irq_sprite_ptr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:95 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:178 [ irq_cnt#14 ] ] Coalescing zero page register [ zp ZP_WORD:111 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:122 [ play_collision::playfield_line#0 ] ] -Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] -Allocated (was zp ZP_WORD:8) zp ZP_WORD:7 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] -Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::l#6 play_collision::l#1 ] -Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:11 [ render_current::l#4 render_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:12 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:13 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 main::key_event#0 ] +Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] +Allocated (was zp ZP_WORD:8) zp ZP_WORD:7 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:11 [ 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:14) zp ZP_BYTE:12 [ 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_BYTE:15) zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 main::key_event#0 ] Allocated (was zp ZP_BYTE:37) zp ZP_BYTE:14 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Allocated (was zp ZP_WORD:38) zp ZP_WORD:15 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] +Allocated (was zp ZP_WORD:38) zp ZP_WORD:15 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:17 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] Allocated (was zp ZP_WORD:41) zp ZP_WORD:18 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:20 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] Allocated (was zp ZP_BYTE:44) zp ZP_BYTE:21 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:22 [ 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:89) zp ZP_BYTE:23 [ irq_raster_next#12 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -Allocated (was zp ZP_BYTE:92) zp ZP_BYTE:24 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -Allocated (was zp ZP_BYTE:93) zp ZP_BYTE:25 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -Allocated (was zp ZP_BYTE:94) zp ZP_BYTE:26 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] -Allocated (was zp ZP_BYTE:101) zp ZP_BYTE:27 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:111) zp ZP_WORD:28 [ render_current::screen_line#0 play_collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:124) zp ZP_BYTE:30 [ play_collision::i#1 ] -Interrupt procedure irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG921 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG963 [473] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG963 [473] return - exit interrupt(HARDWARE_CLOBBER) +Allocated (was zp ZP_BYTE:89) zp ZP_BYTE:23 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +Allocated (was zp ZP_BYTE:91) zp ZP_BYTE:24 [ render_screen_showing#0 render_screen_showing#1 ] +Allocated (was zp ZP_BYTE:93) zp ZP_BYTE:25 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:94) zp ZP_BYTE:26 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +Allocated (was zp ZP_BYTE:95) zp ZP_BYTE:27 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] +Allocated (was zp ZP_BYTE:101) zp ZP_BYTE:28 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:111) zp ZP_WORD:29 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:124) zp ZP_BYTE:31 [ play_collision::i#1 ] +Interrupt procedure sprites_irq clobbers AXCNZV +Removing interrupt register storage sty regy+1 in SEG927 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG966 [468] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG966 [468] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -12990,10 +13200,11 @@ ASSEMBLER BEFORE OPTIMIZATION .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $16 + .label render_screen_showing = $18 .label irq_raster_next = $17 - .label irq_sprite_ypos = $18 - .label irq_sprite_ptr = $19 - .label irq_cnt = $1a + .label irq_sprite_ypos = $19 + .label irq_sprite_ptr = $1a + .label irq_cnt = $1b .label current_movedown_counter = 4 .label current_ypos = $e .label current_piece_gfx = $12 @@ -13004,659 +13215,654 @@ ASSEMBLER BEFORE OPTIMIZATION .label render_screen_show = 2 .label current_piece = $f .label current_piece_12 = 7 - .label render_screen_render_27 = 5 + .label render_screen_render_28 = 5 .label current_xpos_47 = 6 - .label current_piece_gfx_52 = 7 - .label current_piece_char_62 = 9 - .label render_screen_render_68 = 5 - .label current_xpos_109 = 6 + .label current_piece_gfx_53 = 7 + .label render_screen_render_62 = 5 .label current_xpos_110 = 6 - .label current_piece_gfx_99 = 7 + .label current_xpos_111 = 6 .label current_piece_gfx_100 = 7 - .label current_piece_char_87 = 9 - .label current_piece_char_88 = 9 - .label current_piece_73 = 7 + .label current_piece_gfx_101 = 7 .label current_piece_74 = 7 .label current_piece_75 = 7 .label current_piece_76 = 7 + .label current_piece_77 = 7 //SEG2 @begin bbegin: jmp b14 //SEG3 @14 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" }} +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 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" }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} jmp b20 -//SEG6 @20 +//SEG7 @20 b20: -//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 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 b21 -//SEG8 @21 +//SEG9 @21 b21: -//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG10 [5] (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 +//SEG11 [6] (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 @21 to toSpritePtr1 [phi:@21->toSpritePtr1] +//SEG12 [7] phi from @21 to toSpritePtr1 [phi:@21->toSpritePtr1] toSpritePtr1_from_b21: jmp toSpritePtr1 -//SEG12 toSpritePtr1 +//SEG13 toSpritePtr1 toSpritePtr1: jmp b33 -//SEG13 @33 +//SEG14 @33 b33: -//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG15 [8] (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 +//SEG16 [9] (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 @33 to @32 [phi:@33->@32] +//SEG17 [10] phi from @33 to @32 [phi:@33->@32] b32_from_b33: jmp b32 -//SEG17 @32 +//SEG18 @32 b32: -//SEG18 [10] call main -//SEG19 [12] phi from @32 to main [phi:@32->main] +//SEG19 [11] call main +//SEG20 [13] phi from @32 to main [phi:@32->main] main_from_b32: jsr main -//SEG20 [11] phi from @32 to @end [phi:@32->@end] +//SEG21 [12] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG21 @end +//SEG22 @end bend: -//SEG22 main +//SEG23 main main: { .label key_event = $d - .label render = $1b - //SEG23 [13] call sid_rnd_init + .label render = $1c + //SEG24 [14] call sid_rnd_init jsr sid_rnd_init jmp b15 - //SEG24 main::@15 + //SEG25 main::@15 b15: - //SEG25 asm { sei } + //SEG26 asm { sei } sei - //SEG26 [15] call render_init - //SEG27 [373] phi from main::@15 to render_init [phi:main::@15->render_init] + //SEG27 [16] call render_init + //SEG28 [372] phi from main::@15 to render_init [phi:main::@15->render_init] render_init_from_b15: jsr render_init - //SEG28 [16] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG29 [17] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG29 main::@16 + //SEG30 main::@16 b16: - //SEG30 [17] call sprites_init + //SEG31 [18] call sprites_init jsr sprites_init - //SEG31 [18] phi from main::@16 to main::@17 [phi:main::@16->main::@17] + //SEG32 [19] phi from main::@16 to main::@17 [phi:main::@16->main::@17] b17_from_b16: jmp b17 - //SEG32 main::@17 + //SEG33 main::@17 b17: - //SEG33 [19] call sprites_irq_init + //SEG34 [20] call sprites_irq_init jsr sprites_irq_init - //SEG34 [20] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG35 [21] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG35 main::@18 + //SEG36 main::@18 b18: - //SEG36 [21] call play_init - //SEG37 [338] phi from main::@18 to play_init [phi:main::@18->play_init] + //SEG37 [22] call play_init + //SEG38 [337] phi from main::@18 to play_init [phi:main::@18->play_init] play_init_from_b18: jsr play_init - //SEG38 [22] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG39 [23] phi from main::@18 to main::@19 [phi:main::@18->main::@19] b19_from_b18: jmp b19 - //SEG39 main::@19 + //SEG40 main::@19 b19: - //SEG40 [23] call play_spawn_current - //SEG41 [210] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] + //SEG41 [24] call play_spawn_current + //SEG42 [208] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] play_spawn_current_from_b19: jsr play_spawn_current - //SEG42 [24] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG43 [25] phi from main::@19 to main::@20 [phi:main::@19->main::@20] b20_from_b19: jmp b20 - //SEG43 main::@20 + //SEG44 main::@20 b20: - //SEG44 [25] call render_playfield - //SEG45 [97] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] + //SEG45 [26] call render_playfield + //SEG46 [95] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] render_playfield_from_b20: - //SEG46 [97] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 + //SEG47 [95] phi (byte) render_screen_render#19 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield jmp b21 - //SEG47 main::@21 + //SEG48 main::@21 b21: - //SEG48 [26] (byte~) current_ypos#83 ← (byte) current_ypos#18 -- vbuxx=vbuz1 - ldx current_ypos - //SEG49 [27] (byte~) current_xpos#109 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG49 [27] (byte~) current_ypos#84 ← (byte) current_ypos#18 -- vbuyy=vbuz1 + ldy current_ypos + //SEG50 [28] (byte~) current_xpos#110 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_109 - //SEG50 [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_110 + //SEG51 [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_99 + sta current_piece_gfx_100 lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG51 [29] (byte~) current_piece_char#87 ← (byte) current_piece_char#12 -- vbuz1=vbuz2 - lda current_piece_char - sta current_piece_char_87 - //SEG52 [30] call render_current - //SEG53 [74] phi from main::@21 to render_current [phi:main::@21->render_current] + sta current_piece_gfx_100+1 + //SEG52 [30] (byte~) current_piece_char#88 ← (byte) current_piece_char#12 -- vbuxx=vbuz1 + ldx current_piece_char + //SEG53 [31] call render_current + //SEG54 [72] phi from main::@21 to render_current [phi:main::@21->render_current] render_current_from_b21: - //SEG54 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#87 [phi:main::@21->render_current#0] -- register_copy - //SEG55 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#99 [phi:main::@21->render_current#1] -- register_copy - //SEG56 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#109 [phi:main::@21->render_current#2] -- register_copy - //SEG57 [74] phi (byte) render_screen_render#27 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 + //SEG55 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#88 [phi:main::@21->render_current#0] -- register_copy + //SEG56 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#100 [phi:main::@21->render_current#1] -- register_copy + //SEG57 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@21->render_current#2] -- register_copy + //SEG58 [72] phi (byte) render_screen_render#28 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 lda #$40 - sta render_screen_render_27 - //SEG58 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#83 [phi:main::@21->render_current#4] -- register_copy + sta render_screen_render_28 + //SEG59 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@21->render_current#4] -- register_copy jsr render_current - //SEG59 [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG60 [32] (byte*~) current_piece#71 ← (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 - //SEG60 [32] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG61 [33] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG61 [32] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG62 [33] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG62 [32] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG63 [33] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG63 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy - //SEG64 [32] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy - //SEG65 [32] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy - //SEG66 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy - //SEG67 [32] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 + //SEG64 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy + //SEG65 [33] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy + //SEG66 [33] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy + //SEG67 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy + //SEG68 [33] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG68 [32] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy - //SEG69 [32] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 + //SEG69 [33] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy + //SEG70 [33] phi (byte) render_screen_render#16 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG70 [32] phi (byte) render_screen_show#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 + //SEG71 [33] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG71 main::@1 + //SEG72 [33] phi from main::@28 to main::@1 [phi:main::@28->main::@1] + b1_from_b28: + //SEG73 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#0] -- register_copy + //SEG74 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#1] -- register_copy + //SEG75 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#2] -- register_copy + //SEG76 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#3] -- register_copy + //SEG77 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#4] -- register_copy + //SEG78 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#5] -- register_copy + //SEG79 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#6] -- register_copy + //SEG80 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#7] -- register_copy + jmp b1 + //SEG81 main::@1 b1: jmp b4 - //SEG72 main::@4 + //SEG82 main::@4 b4: - //SEG73 [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG83 [34] 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 + //SEG84 [35] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + b6_from_b4: jmp b6 - //SEG74 main::@6 + //SEG85 main::@6 b6: - //SEG75 [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 - lda render_screen_show - lsr - lsr - lsr - lsr - //SEG76 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuaa - sta BORDERCOL - //SEG77 [36] call render_show + //SEG86 [36] call render_show jsr render_show - //SEG78 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] + //SEG87 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] b23_from_b6: jmp b23 - //SEG79 main::@23 + //SEG88 main::@23 b23: - //SEG80 [38] call keyboard_event_scan - //SEG81 [276] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] + //SEG89 [38] call keyboard_event_scan + //SEG90 [274] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] keyboard_event_scan_from_b23: jsr keyboard_event_scan - //SEG82 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG91 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG83 main::@24 + //SEG92 main::@24 b24: - //SEG84 [40] call keyboard_event_get + //SEG93 [40] call keyboard_event_get jsr keyboard_event_get - //SEG85 [41] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG94 [41] (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 b25 - //SEG86 main::@25 + //SEG95 main::@25 b25: - //SEG87 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG96 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG88 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG97 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG89 [44] call play_move_down + //SEG98 [44] call play_move_down jsr play_move_down - //SEG90 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx + //SEG99 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx txa jmp b26 - //SEG91 main::@26 + //SEG100 main::@26 b26: - //SEG92 [46] (byte~) main::$13 ← (byte) play_move_down::return#3 - // (byte~) main::$13 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG93 [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 -- vbuz1=vbuc1_plus_vbuaa + //SEG101 [46] (byte~) main::$12 ← (byte) play_move_down::return#3 + // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a + //SEG102 [47] (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 - //SEG94 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG103 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG95 [49] call play_move_leftright + //SEG104 [49] call play_move_leftright jsr play_move_leftright - //SEG96 [50] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + //SEG105 [50] (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 b27 - //SEG97 main::@27 + //SEG106 main::@27 b27: - //SEG98 [51] (byte~) main::$14 ← (byte) play_move_leftright::return#4 - // (byte~) main::$14 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG99 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 -- vbuz1=vbuz1_plus_vbuaa + //SEG107 [51] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a + //SEG108 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG100 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG109 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG101 [54] call play_move_rotate + //SEG110 [54] call play_move_rotate jsr play_move_rotate - //SEG102 [55] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + //SEG111 [55] (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 b28 - //SEG103 main::@28 + //SEG112 main::@28 b28: - //SEG104 [56] (byte~) main::$15 ← (byte) play_move_rotate::return#4 - // (byte~) main::$15 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG105 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 -- vbuaa=vbuz1_plus_vbuaa + //SEG113 [56] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a + //SEG114 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG106 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuaa_eq_0_then_la1 + //SEG115 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 - beq b7_from_b28 + beq b1_from_b28 jmp b13 - //SEG107 main::@13 + //SEG116 main::@13 b13: - //SEG108 [59] (byte~) render_screen_render#69 ← (byte) render_screen_render#15 -- vbuxx=vbuz1 + //SEG117 [59] (byte~) render_screen_render#63 ← (byte) render_screen_render#16 -- vbuxx=vbuz1 ldx render_screen_render - //SEG109 [60] call render_playfield - //SEG110 [97] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] + //SEG118 [60] call render_playfield + //SEG119 [95] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] render_playfield_from_b13: - //SEG111 [97] phi (byte) render_screen_render#18 = (byte~) render_screen_render#69 [phi:main::@13->render_playfield#0] -- register_copy + //SEG120 [95] phi (byte) render_screen_render#19 = (byte~) render_screen_render#63 [phi:main::@13->render_playfield#0] -- register_copy jsr render_playfield jmp b29 - //SEG112 main::@29 + //SEG121 main::@29 b29: - //SEG113 [61] (byte~) current_ypos#84 ← (byte) current_ypos#13 -- vbuxx=vbuz1 - ldx current_ypos - //SEG114 [62] (byte~) render_screen_render#68 ← (byte) render_screen_render#15 -- vbuz1=vbuz2 + //SEG122 [61] (byte~) current_ypos#85 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + ldy current_ypos + //SEG123 [62] (byte~) render_screen_render#62 ← (byte) render_screen_render#16 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_68 - //SEG115 [63] (byte~) current_xpos#110 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_62 + //SEG124 [63] (byte~) current_xpos#111 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_110 - //SEG116 [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_111 + //SEG125 [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_100 + sta current_piece_gfx_101 lda current_piece_gfx+1 - sta current_piece_gfx_100+1 - //SEG117 [65] (byte~) current_piece_char#88 ← (byte) current_piece_char#1 -- vbuz1=vbuz2 - lda current_piece_char - sta current_piece_char_88 - //SEG118 [66] call render_current - //SEG119 [74] phi from main::@29 to render_current [phi:main::@29->render_current] + sta current_piece_gfx_101+1 + //SEG126 [65] (byte~) current_piece_char#89 ← (byte) current_piece_char#1 -- vbuxx=vbuz1 + ldx current_piece_char + //SEG127 [66] call render_current + //SEG128 [72] phi from main::@29 to render_current [phi:main::@29->render_current] render_current_from_b29: - //SEG120 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#88 [phi:main::@29->render_current#0] -- register_copy - //SEG121 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#100 [phi:main::@29->render_current#1] -- register_copy - //SEG122 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@29->render_current#2] -- register_copy - //SEG123 [74] phi (byte) render_screen_render#27 = (byte~) render_screen_render#68 [phi:main::@29->render_current#3] -- register_copy - //SEG124 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@29->render_current#4] -- register_copy + //SEG129 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#89 [phi:main::@29->render_current#0] -- register_copy + //SEG130 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#101 [phi:main::@29->render_current#1] -- register_copy + //SEG131 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#111 [phi:main::@29->render_current#2] -- register_copy + //SEG132 [72] phi (byte) render_screen_render#28 = (byte~) render_screen_render#62 [phi:main::@29->render_current#3] -- register_copy + //SEG133 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#85 [phi:main::@29->render_current#4] -- register_copy jsr render_current - //SEG125 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG134 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] b30_from_b29: jmp b30 - //SEG126 main::@30 + //SEG135 main::@30 b30: - //SEG127 [68] call render_screen_swap + //SEG136 [68] call render_screen_swap jsr render_screen_swap - //SEG128 [69] phi from main::@28 main::@30 to main::@7 [phi:main::@28/main::@30->main::@7] - b7_from_b28: - b7_from_b30: - //SEG129 [69] phi (byte) render_screen_render#31 = (byte) render_screen_render#15 [phi:main::@28/main::@30->main::@7#0] -- register_copy - //SEG130 [69] phi (byte) render_screen_show#24 = (byte) render_screen_show#15 [phi:main::@28/main::@30->main::@7#1] -- register_copy - jmp b7 - //SEG131 main::@7 - b7: - //SEG132 [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 - lda #0 - sta BORDERCOL - //SEG133 [32] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - b1_from_b7: - //SEG134 [32] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@7->main::@1#0] -- register_copy - //SEG135 [32] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@7->main::@1#1] -- register_copy - //SEG136 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@7->main::@1#2] -- register_copy - //SEG137 [32] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG138 [32] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@7->main::@1#4] -- register_copy - //SEG139 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@7->main::@1#5] -- register_copy - //SEG140 [32] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@7->main::@1#6] -- register_copy - //SEG141 [32] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@7->main::@1#7] -- register_copy - //SEG142 [32] phi (byte) render_screen_render#15 = (byte) render_screen_render#31 [phi:main::@7->main::@1#8] -- register_copy - //SEG143 [32] phi (byte) render_screen_show#15 = (byte) render_screen_show#24 [phi:main::@7->main::@1#9] -- register_copy + //SEG137 [33] phi from main::@30 to main::@1 [phi:main::@30->main::@1] + b1_from_b30: + //SEG138 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@30->main::@1#0] -- register_copy + //SEG139 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@30->main::@1#1] -- register_copy + //SEG140 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@30->main::@1#2] -- register_copy + //SEG141 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@30->main::@1#3] -- register_copy + //SEG142 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@30->main::@1#4] -- register_copy + //SEG143 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@30->main::@1#5] -- register_copy + //SEG144 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@30->main::@1#6] -- register_copy + //SEG145 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@30->main::@1#7] -- register_copy + //SEG146 [33] phi (byte) render_screen_render#16 = (byte) render_screen_render#11 [phi:main::@30->main::@1#8] -- register_copy + //SEG147 [33] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@30->main::@1#9] -- register_copy jmp b1 } -//SEG144 render_screen_swap +//SEG148 render_screen_swap render_screen_swap: { - //SEG145 [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG149 [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG146 [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG150 [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG147 render_screen_swap::@return + //SEG151 render_screen_swap::@return breturn: - //SEG148 [73] return + //SEG152 [71] return rts } -//SEG149 render_current +//SEG153 render_current render_current: { - .label ypos2 = $a - .label screen_line = $1c - .label xpos = $d - .label i = $c - .label l = $b - //SEG150 [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa + .label ypos2 = 9 + .label screen_line = $1d + .label xpos = $c + .label i = $b + .label l = $a + .label c = $d + //SEG154 [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + tya asl sta ypos2 - //SEG151 [76] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG155 [74] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG152 [76] 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 + //SEG156 [74] 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 - //SEG153 [76] 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 + //SEG157 [74] 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 - //SEG154 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG158 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG155 [76] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + //SEG159 [74] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] b1_from_b3: - //SEG156 [76] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy - //SEG157 [76] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy - //SEG158 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy + //SEG160 [74] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG161 [74] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG162 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy jmp b1 - //SEG159 render_current::@1 + //SEG163 render_current::@1 b1: - //SEG160 [77] 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 + //SEG164 [75] 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 - //SEG161 render_current::@7 + //SEG165 render_current::@7 b7: - //SEG162 [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG166 [76] (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 - //SEG163 [79] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + //SEG167 [77] 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: - //SEG164 [79] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + //SEG168 [77] 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 - //SEG165 render_current::@3 + //SEG169 render_current::@3 b3: - //SEG166 [80] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG170 [78] (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 - //SEG167 [81] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [82] 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 + //SEG172 [80] 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 - //SEG169 render_current::@return + //SEG173 render_current::@return breturn: - //SEG170 [83] return + //SEG174 [81] return rts - //SEG171 render_current::@13 + //SEG175 render_current::@13 b13: - //SEG172 [84] 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 + //SEG176 [82] 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 bcc b2 jmp b7 - //SEG173 render_current::@2 + //SEG177 render_current::@2 b2: - //SEG174 [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 - lda render_screen_render_27 + //SEG178 [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + lda render_screen_render_28 clc adc ypos2 - //SEG175 [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuaa + //SEG179 [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG176 [87] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 + //SEG180 [85] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 lda current_xpos_47 sta xpos - //SEG177 [88] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + //SEG181 [86] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] b4_from_b2: - //SEG178 [88] 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 - //SEG179 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy - //SEG180 [88] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + //SEG182 [86] 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 + //SEG183 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG184 [86] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy jmp b4 - //SEG181 [88] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + //SEG185 [86] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] b4_from_b5: - //SEG182 [88] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy - //SEG183 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy - //SEG184 [88] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + //SEG186 [86] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG187 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG188 [86] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy jmp b4 - //SEG185 render_current::@4 + //SEG189 render_current::@4 b4: - //SEG186 [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG190 [87] (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_52),y - //SEG187 [90] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_53),y + //SEG191 [88] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG188 [91] 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 + //SEG192 [89] 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 jmp b9 - //SEG189 render_current::@9 + //SEG193 render_current::@9 b9: - //SEG190 [92] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG194 [90] 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 jmp b10 - //SEG191 render_current::@10 + //SEG195 render_current::@10 b10: - //SEG192 [93] *((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 + //SEG196 [91] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 -- pbuz1_derefidx_vbuz2=vbuxx ldy xpos + txa sta (screen_line),y jmp b5 - //SEG193 render_current::@5 + //SEG197 render_current::@5 b5: - //SEG194 [94] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG198 [92] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG195 [95] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx - inx - //SEG196 [96] 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 + //SEG199 [93] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + inc c + //SEG200 [94] 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 b4_from_b5 jmp b3_from_b5 } -//SEG197 render_playfield +//SEG201 render_playfield render_playfield: { .label screen_line = 7 .label i = 6 .label c = 9 .label l = 5 - //SEG198 [98] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG202 [96] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG199 [98] 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 + //SEG203 [96] 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 - //SEG200 [98] 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 + //SEG204 [96] 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 - //SEG201 [98] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG205 [96] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG202 [98] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG203 [98] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG206 [96] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG207 [96] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG204 render_playfield::@1 + //SEG208 render_playfield::@1 b1: - //SEG205 [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG209 [97] (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 - //SEG206 [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG210 [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG207 [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG211 [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG208 [102] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG212 [100] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG209 [102] 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 + //SEG213 [100] 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 - //SEG210 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG211 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG214 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG215 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG212 [102] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG216 [100] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG213 [102] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG214 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG215 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG217 [100] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG218 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG219 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG216 render_playfield::@2 + //SEG220 render_playfield::@2 b2: - //SEG217 [103] *((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 + //SEG221 [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG218 [104] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG222 [102] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG219 [105] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG223 [103] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG220 [106] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG224 [104] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG221 [107] 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 + //SEG225 [105] 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 - //SEG222 render_playfield::@3 + //SEG226 render_playfield::@3 b3: - //SEG223 [108] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG227 [106] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG224 [109] 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 + //SEG228 [107] 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 - //SEG225 render_playfield::@return + //SEG229 render_playfield::@return breturn: - //SEG226 [110] return + //SEG230 [108] return rts } -//SEG227 play_move_rotate +//SEG231 play_move_rotate play_move_rotate: { .label orientation = 5 - //SEG228 [111] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG232 [109] 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 - //SEG229 play_move_rotate::@6 + //SEG233 play_move_rotate::@6 b6: - //SEG230 [112] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG234 [110] 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 - //SEG231 [113] 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] + //SEG235 [111] 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: - //SEG232 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG233 [113] 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 - //SEG234 [113] 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 + //SEG236 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG237 [111] 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 + //SEG238 [111] 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 - //SEG235 play_move_rotate::@return + //SEG239 play_move_rotate::@return breturn: - //SEG236 [114] return + //SEG240 [112] return rts - //SEG237 play_move_rotate::@2 + //SEG241 play_move_rotate::@2 b2: - //SEG238 [115] (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 + //SEG242 [113] (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 - //SEG239 [116] (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 + //SEG243 [114] (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 - //SEG240 [117] 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] + //SEG244 [115] 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: - //SEG241 [117] 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 + //SEG245 [115] 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 - //SEG242 play_move_rotate::@4 + //SEG246 play_move_rotate::@4 b4: - //SEG243 [118] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG247 [116] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG244 [119] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + //SEG248 [117] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 ldy current_ypos - //SEG245 [120] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG249 [118] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG246 [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG250 [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_77 lda current_piece+1 - sta current_piece_76+1 - //SEG247 [122] call play_collision - //SEG248 [130] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_77+1 + //SEG251 [120] call play_collision + //SEG252 [128] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG249 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG250 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG251 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG252 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG253 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG254 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG255 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG256 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG253 [123] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + //SEG257 [121] (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 - //SEG254 play_move_rotate::@14 + //SEG258 play_move_rotate::@14 b14: - //SEG255 [124] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + //SEG259 [122] (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 - //SEG256 [125] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG260 [123] 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 - //SEG257 play_move_rotate::@11 + //SEG261 play_move_rotate::@11 b11: - //SEG258 [126] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG262 [124] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG259 [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG263 [125] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -13664,38 +13870,38 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG260 [113] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG264 [111] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG261 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG262 [113] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG263 [113] 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 + //SEG265 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG266 [111] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG267 [111] 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 - //SEG264 play_move_rotate::@1 + //SEG268 play_move_rotate::@1 b1: - //SEG265 [128] (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 + //SEG269 [126] (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 - //SEG266 [129] (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 + //SEG270 [127] (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 } -//SEG267 play_collision +//SEG271 play_collision play_collision: { .label xpos = 6 .label piece_gfx = 7 .label ypos2 = 9 - .label playfield_line = $1c - .label i = $1e + .label playfield_line = $1d + .label i = $1f .label col = $c .label l = $a .label i_2 = $b .label i_3 = $b .label i_11 = $b .label i_13 = $b - //SEG268 [131] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG272 [129] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -13703,669 +13909,669 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG269 [132] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG273 [130] (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 - //SEG270 [133] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG274 [131] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG271 [133] 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 + //SEG275 [131] 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 - //SEG272 [133] 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 + //SEG276 [131] 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 - //SEG273 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG277 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG274 play_collision::@1 + //SEG278 play_collision::@1 b1: - //SEG275 [134] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG279 [132] (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 - //SEG276 [135] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG280 [133] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG277 [136] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG281 [134] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG278 [136] 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 + //SEG282 [134] 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 - //SEG279 [136] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG280 [136] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG283 [134] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG284 [134] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG281 play_collision::@2 + //SEG285 play_collision::@2 b2: - //SEG282 [137] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG286 [135] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG283 [138] 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 + //SEG287 [136] 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 - //SEG284 play_collision::@8 + //SEG288 play_collision::@8 b8: - //SEG285 [139] 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 + //SEG289 [137] 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 - //SEG286 [140] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG290 [138] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG287 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG291 [138] 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 - //SEG288 play_collision::@return + //SEG292 play_collision::@return breturn: - //SEG289 [141] return + //SEG293 [139] return rts - //SEG290 play_collision::@4 + //SEG294 play_collision::@4 b4: - //SEG291 [142] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG295 [140] (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 - //SEG292 [143] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG296 [141] 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 - //SEG293 [140] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG297 [138] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG294 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG298 [138] 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 - //SEG295 play_collision::@5 + //SEG299 play_collision::@5 b5: - //SEG296 [144] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG300 [142] 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 - //SEG297 [140] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG301 [138] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG298 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG302 [138] 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 - //SEG299 play_collision::@6 + //SEG303 play_collision::@6 b6: - //SEG300 [145] 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 + //SEG304 [143] 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 - //SEG301 [140] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG305 [138] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG302 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG306 [138] 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 - //SEG303 play_collision::@3 + //SEG307 play_collision::@3 b3: - //SEG304 [146] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG308 [144] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG305 [147] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG309 [145] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG306 [148] 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 + //SEG310 [146] 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 - //SEG307 play_collision::@17 + //SEG311 play_collision::@17 b17: - //SEG308 [149] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG312 [147] (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 - //SEG309 [150] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG313 [148] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG310 [151] 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 + //SEG314 [149] 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 - //SEG311 [140] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG315 [138] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG312 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG316 [138] 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 - //SEG313 play_collision::@20 + //SEG317 play_collision::@20 b20: - //SEG314 [152] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG318 [150] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG315 [133] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG319 [131] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG316 [133] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG317 [133] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG318 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG320 [131] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG321 [131] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG322 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG319 play_collision::@21 + //SEG323 play_collision::@21 b21: - //SEG320 [153] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG324 [151] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG321 [136] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG325 [134] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG322 [136] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG323 [136] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG324 [136] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG326 [134] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG327 [134] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG328 [134] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG325 play_move_leftright +//SEG329 play_move_leftright play_move_leftright: { - //SEG326 [154] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG330 [152] 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 - //SEG327 play_move_leftright::@6 + //SEG331 play_move_leftright::@6 b6: - //SEG328 [155] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG332 [153] 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 - //SEG329 play_move_leftright::@7 + //SEG333 play_move_leftright::@7 b7: - //SEG330 [156] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG334 [154] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG331 [157] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + //SEG335 [155] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 ldy current_ypos - //SEG332 [158] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG336 [156] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG333 [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG337 [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_76 + lda current_piece+1 + sta current_piece_76+1 + //SEG338 [158] call play_collision + //SEG339 [128] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + play_collision_from_b7: + //SEG340 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG341 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG342 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG343 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG344 [159] (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 + //SEG345 play_move_leftright::@15 + b15: + //SEG346 [160] (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 + //SEG347 [161] 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 + //SEG348 play_move_leftright::@8 + b8: + //SEG349 [162] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG350 [163] 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: + //SEG351 [163] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG352 [163] 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 + //SEG353 [163] 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: + //SEG354 [163] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG355 [163] 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 + //SEG356 play_move_leftright::@return + breturn: + //SEG357 [164] return + rts + //SEG358 play_move_leftright::@1 + b1: + //SEG359 [165] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx play_collision.xpos + //SEG360 [166] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + ldy current_ypos + //SEG361 [167] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + ldx current_orientation + //SEG362 [168] (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 - //SEG334 [160] call play_collision - //SEG335 [130] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] - play_collision_from_b7: - //SEG336 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG337 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG338 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG339 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy - jsr play_collision - //SEG340 [161] (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 - //SEG341 play_move_leftright::@15 - b15: - //SEG342 [162] (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 - //SEG343 [163] 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 - //SEG344 play_move_leftright::@8 - b8: - //SEG345 [164] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 - inc current_xpos - //SEG346 [165] 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: - //SEG347 [165] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG348 [165] 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 - //SEG349 [165] 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: - //SEG350 [165] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG351 [165] 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 - //SEG352 play_move_leftright::@return - breturn: - //SEG353 [166] return - rts - //SEG354 play_move_leftright::@1 - b1: - //SEG355 [167] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx play_collision.xpos - //SEG356 [168] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG357 [169] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 - ldx current_orientation - //SEG358 [170] (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 - //SEG359 [171] call play_collision - //SEG360 [130] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG363 [169] call play_collision + //SEG364 [128] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG361 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG362 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG363 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG364 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG365 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG366 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG367 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG368 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG365 [172] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + //SEG369 [170] (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 - //SEG366 play_move_leftright::@14 + //SEG370 play_move_leftright::@14 b14: - //SEG367 [173] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG371 [171] (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 - //SEG368 [174] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG372 [172] 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 - //SEG369 play_move_leftright::@11 + //SEG373 play_move_leftright::@11 b11: - //SEG370 [175] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + //SEG374 [173] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG371 play_move_down +//SEG375 play_move_down play_move_down: { - //SEG372 [176] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + //SEG376 [174] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG373 [177] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG377 [175] 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 - //SEG374 [178] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG378 [176] 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 - //SEG375 play_move_down::@8 + //SEG379 play_move_down::@8 b8: - //SEG376 [179] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG380 [177] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG377 [179] 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 + //SEG381 [177] 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 - //SEG378 [179] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG382 [177] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG379 [179] 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 + //SEG383 [177] 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 - //SEG380 play_move_down::@1 + //SEG384 play_move_down::@1 b1: - //SEG381 [180] call keyboard_event_pressed - //SEG382 [265] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG385 [178] call keyboard_event_pressed + //SEG386 [263] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG383 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG387 [263] 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 - //SEG384 [181] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG388 [179] (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 - //SEG385 play_move_down::@17 + //SEG389 play_move_down::@17 b17: - //SEG386 [182] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG390 [180] (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 - //SEG387 [183] 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 + //SEG391 [181] 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 - //SEG388 play_move_down::@9 + //SEG392 play_move_down::@9 b9: - //SEG389 [184] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG393 [182] 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 - //SEG390 play_move_down::@10 + //SEG394 play_move_down::@10 b10: - //SEG391 [185] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG395 [183] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG392 [186] 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] + //SEG396 [184] 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: - //SEG393 [186] 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 + //SEG397 [184] 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 - //SEG394 play_move_down::@2 + //SEG398 play_move_down::@2 b2: - //SEG395 [187] if((byte) current_movedown_counter#1<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG399 [185] 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 - //SEG396 play_move_down::@11 + //SEG400 play_move_down::@11 b11: - //SEG397 [188] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG401 [186] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG398 [189] 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] + //SEG402 [187] 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: - //SEG399 [189] 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 + //SEG403 [187] 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 - //SEG400 play_move_down::@4 + //SEG404 play_move_down::@4 b4: - //SEG401 [190] 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 + //SEG405 [188] 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 - //SEG402 play_move_down::@12 + //SEG406 play_move_down::@12 b12: - //SEG403 [191] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG407 [189] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG404 [192] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG408 [190] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG405 [193] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 + //SEG409 [191] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 ldx current_orientation - //SEG406 [194] (byte*~) current_piece#73 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG410 [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 - //SEG407 [195] call play_collision - //SEG408 [130] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_74+1 + //SEG411 [193] call play_collision + //SEG412 [128] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG409 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG410 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG411 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG412 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG413 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG414 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG415 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG416 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG413 [196] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + //SEG417 [194] (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 - //SEG414 play_move_down::@18 + //SEG418 play_move_down::@18 b18: - //SEG415 [197] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG419 [195] (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 - //SEG416 [198] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG420 [196] 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 - //SEG417 [199] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG421 [197] 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 - //SEG418 play_move_down::@13 + //SEG422 play_move_down::@13 b13: - //SEG419 [200] call play_lock_current + //SEG423 [198] call play_lock_current jsr play_lock_current - //SEG420 [201] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG424 [199] 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 - //SEG421 play_move_down::@19 + //SEG425 play_move_down::@19 b19: - //SEG422 [202] call play_remove_lines - //SEG423 [226] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG426 [200] call play_remove_lines + //SEG427 [224] 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 - //SEG424 [203] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG428 [201] 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 - //SEG425 play_move_down::@20 + //SEG429 play_move_down::@20 b20: - //SEG426 [204] call play_spawn_current - //SEG427 [210] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG430 [202] call play_spawn_current + //SEG431 [208] 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 - //SEG428 [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG432 [203] (byte*~) current_piece#78 ← (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 - //SEG429 [206] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG433 [204] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG430 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG431 [206] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy - //SEG432 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG433 [206] 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 + //SEG434 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG435 [204] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy + //SEG436 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG437 [204] 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 - //SEG434 [206] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG435 [206] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy + //SEG438 [204] phi (byte*) current_piece#20 = (byte*~) current_piece#78 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG439 [204] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy jmp b7 - //SEG436 play_move_down::@7 + //SEG440 play_move_down::@7 b7: - //SEG437 [207] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG441 [205] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG438 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG439 [207] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG440 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG441 [207] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG442 [207] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG443 [207] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG444 [207] 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 + //SEG442 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG443 [205] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG444 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG445 [205] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG446 [205] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG447 [205] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG448 [205] 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 - //SEG445 [207] 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 + //SEG449 [205] 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 - //SEG446 [207] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG450 [205] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG447 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG448 [207] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG449 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG450 [207] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG451 [207] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG452 [207] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG453 [207] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG454 [207] 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 + //SEG451 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG452 [205] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG453 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG454 [205] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG455 [205] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG456 [205] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG457 [205] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG458 [205] 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 - //SEG455 play_move_down::@return + //SEG459 play_move_down::@return breturn: - //SEG456 [208] return + //SEG460 [206] return rts - //SEG457 play_move_down::@6 + //SEG461 play_move_down::@6 b6: - //SEG458 [209] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG462 [207] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG459 [206] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG463 [204] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG460 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG461 [206] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG462 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG463 [206] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG464 [206] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG465 [206] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG464 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG465 [204] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG466 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG467 [204] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG468 [204] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG469 [204] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG466 play_spawn_current +//SEG470 play_spawn_current play_spawn_current: { .label _3 = 4 - //SEG467 [211] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG471 [209] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG468 [211] 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 + //SEG472 [209] 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 - //SEG469 play_spawn_current::@1 + //SEG473 play_spawn_current::@1 b1: - //SEG470 [212] 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 + //SEG474 [210] 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 - //SEG471 play_spawn_current::@3 + //SEG475 play_spawn_current::@3 b3: - //SEG472 [213] (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 + //SEG476 [211] (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 - //SEG473 [214] (byte*) current_piece_gfx#16 ← (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 + //SEG477 [212] (byte*) current_piece_gfx#16 ← (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 - //SEG474 [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG478 [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG475 [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG479 [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG476 [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG480 [215] (byte) current_piece_char#12 ← *((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 - //SEG477 play_spawn_current::@return + //SEG481 play_spawn_current::@return breturn: - //SEG478 [218] return + //SEG482 [216] return rts - //SEG479 [219] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG483 [217] 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 - //SEG480 play_spawn_current::@2 + //SEG484 play_spawn_current::@2 b2: - //SEG481 [220] call sid_rnd + //SEG485 [218] call sid_rnd jsr sid_rnd - //SEG482 [221] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG486 [219] (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 - //SEG483 play_spawn_current::@7 + //SEG487 play_spawn_current::@7 b7: - //SEG484 [222] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG488 [220] (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 - //SEG485 [223] (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 + //SEG489 [221] (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 - //SEG486 [211] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG490 [209] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG487 [211] 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 + //SEG491 [209] 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 } -//SEG488 sid_rnd +//SEG492 sid_rnd sid_rnd: { - //SEG489 [224] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG493 [222] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG490 sid_rnd::@return + //SEG494 sid_rnd::@return breturn: - //SEG491 [225] return + //SEG495 [223] return rts } -//SEG492 play_remove_lines +//SEG496 play_remove_lines play_remove_lines: { .label c = 9 .label x = 5 .label y = 4 .label full = 6 - //SEG493 [227] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG497 [225] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG494 [227] 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 + //SEG498 [225] 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 - //SEG495 [227] 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 + //SEG499 [225] 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 - //SEG496 [227] 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 + //SEG500 [225] 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 - //SEG497 [227] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG501 [225] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG498 [227] 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 - //SEG499 [227] 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 - //SEG500 [227] 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 + //SEG502 [225] 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 + //SEG503 [225] 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 + //SEG504 [225] 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 - //SEG501 play_remove_lines::@1 + //SEG505 play_remove_lines::@1 b1: - //SEG502 [228] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG506 [226] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG503 [228] 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 + //SEG507 [226] 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 - //SEG504 [228] 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 + //SEG508 [226] 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 - //SEG505 [228] 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 - //SEG506 [228] 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 + //SEG509 [226] 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 + //SEG510 [226] 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 - //SEG507 [228] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG511 [226] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG508 [228] 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 - //SEG509 [228] 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 - //SEG510 [228] 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 - //SEG511 [228] 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 + //SEG512 [226] 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 + //SEG513 [226] 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 + //SEG514 [226] 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 + //SEG515 [226] 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 - //SEG512 play_remove_lines::@2 + //SEG516 play_remove_lines::@2 b2: - //SEG513 [229] (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 + //SEG517 [227] (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 - //SEG514 [230] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG518 [228] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG515 [231] 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 + //SEG519 [229] 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 - //SEG516 [232] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG520 [230] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG517 [232] 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 + //SEG521 [230] 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 - //SEG518 play_remove_lines::@3 + //SEG522 play_remove_lines::@3 b3: - //SEG519 [233] *((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 + //SEG523 [231] *((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 - //SEG520 [234] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG524 [232] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG521 [235] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG525 [233] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG522 [236] 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 + //SEG526 [234] 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 - //SEG523 play_remove_lines::@9 + //SEG527 play_remove_lines::@9 b9: - //SEG524 [237] 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 + //SEG528 [235] 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 - //SEG525 play_remove_lines::@10 + //SEG529 play_remove_lines::@10 b10: - //SEG526 [238] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG530 [236] (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 - //SEG527 [239] 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] + //SEG531 [237] 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: - //SEG528 [239] 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 + //SEG532 [237] 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 - //SEG529 play_remove_lines::@4 + //SEG533 play_remove_lines::@4 b4: - //SEG530 [240] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG534 [238] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG531 [241] 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 + //SEG535 [239] 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 - //SEG532 [242] 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] + //SEG536 [240] 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: - //SEG533 [242] 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 + //SEG537 [240] 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 - //SEG534 play_remove_lines::@5 + //SEG538 play_remove_lines::@5 b5: - //SEG535 [243] 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 + //SEG539 [241] 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 - //SEG536 play_remove_lines::@return + //SEG540 play_remove_lines::@return breturn: - //SEG537 [244] return + //SEG541 [242] return rts - //SEG538 play_remove_lines::@6 + //SEG542 play_remove_lines::@6 b6: - //SEG539 [245] *((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 + //SEG543 [243] *((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 - //SEG540 [246] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG544 [244] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG541 [247] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG545 [245] 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 - //SEG542 play_remove_lines::@17 + //SEG546 play_remove_lines::@17 b17: - //SEG543 [232] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG547 [230] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG544 [232] 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 + //SEG548 [230] 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 } -//SEG545 play_lock_current +//SEG549 play_lock_current play_lock_current: { .label ypos2 = $e .label playfield_line = 7 @@ -14376,527 +14582,530 @@ play_lock_current: { .label i_3 = 5 .label i_7 = 5 .label i_9 = 5 - //SEG546 [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG550 [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG547 [249] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG551 [247] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG548 [249] 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 + //SEG552 [247] 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 - //SEG549 [249] 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 + //SEG553 [247] 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 - //SEG550 [249] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG554 [247] 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 - //SEG551 play_lock_current::@1 + //SEG555 play_lock_current::@1 b1: - //SEG552 [250] (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 + //SEG556 [248] (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 - //SEG553 [251] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG557 [249] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG554 [252] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG558 [250] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG555 [252] 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 + //SEG559 [250] 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 - //SEG556 [252] 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 - //SEG557 [252] 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 + //SEG560 [250] 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 + //SEG561 [250] 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 - //SEG558 play_lock_current::@2 + //SEG562 play_lock_current::@2 b2: - //SEG559 [253] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG563 [251] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG560 [254] if(*((byte*) current_piece_gfx#20 + (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 + //SEG564 [252] if(*((byte*) current_piece_gfx#20 + (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 - //SEG561 play_lock_current::@4 + //SEG565 play_lock_current::@4 b4: - //SEG562 [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG566 [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG563 play_lock_current::@3 + //SEG567 play_lock_current::@3 b3: - //SEG564 [256] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG568 [254] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG565 [257] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG569 [255] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG566 [258] 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 + //SEG570 [256] 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 - //SEG567 play_lock_current::@5 + //SEG571 play_lock_current::@5 b5: - //SEG568 [259] (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 + //SEG572 [257] (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 - //SEG569 [260] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG573 [258] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG570 [261] 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 + //SEG574 [259] 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 - //SEG571 play_lock_current::@return + //SEG575 play_lock_current::@return breturn: - //SEG572 [262] return + //SEG576 [260] return rts - //SEG573 play_lock_current::@7 + //SEG577 play_lock_current::@7 b7: - //SEG574 [263] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG578 [261] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG575 [249] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG579 [247] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG576 [249] 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 - //SEG577 [249] 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 - //SEG578 [249] 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 + //SEG580 [247] 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 + //SEG581 [247] 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 + //SEG582 [247] 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 - //SEG579 play_lock_current::@8 + //SEG583 play_lock_current::@8 b8: - //SEG580 [264] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG584 [262] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG581 [252] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG585 [250] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG582 [252] 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 - //SEG583 [252] 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 - //SEG584 [252] 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 + //SEG586 [250] 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 + //SEG587 [250] 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 + //SEG588 [250] 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 } -//SEG585 keyboard_event_pressed +//SEG589 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 6 .label keycode = 5 - //SEG586 [266] (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 + //SEG590 [264] (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 - //SEG587 [267] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG591 [265] (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 - //SEG588 [268] (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 + //SEG592 [266] (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 - //SEG589 [269] (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 + //SEG593 [267] (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 - //SEG590 keyboard_event_pressed::@return + //SEG594 keyboard_event_pressed::@return breturn: - //SEG591 [270] return + //SEG595 [268] return rts } -//SEG592 keyboard_event_get +//SEG596 keyboard_event_get keyboard_event_get: { - //SEG593 [271] 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 + //SEG597 [269] 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 - //SEG594 keyboard_event_get::@3 + //SEG598 keyboard_event_get::@3 b3: - //SEG595 [272] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG599 [270] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG596 [273] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG600 [271] (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 - //SEG597 [274] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG601 [272] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG598 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG599 [274] 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 + //SEG602 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG603 [272] 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 - //SEG600 [274] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG604 [272] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG601 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG602 [274] 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 + //SEG605 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG606 [272] 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 - //SEG603 keyboard_event_get::@return + //SEG607 keyboard_event_get::@return breturn: - //SEG604 [275] return + //SEG608 [273] return rts } -//SEG605 keyboard_event_scan +//SEG609 keyboard_event_scan keyboard_event_scan: { .label row_scan = 9 .label keycode = 6 .label row = 5 - //SEG606 [277] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG610 [275] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG607 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG608 [277] 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 + //SEG611 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG612 [275] 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 - //SEG609 [277] 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 + //SEG613 [275] 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 - //SEG610 [277] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG614 [275] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG611 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG612 [277] 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 - //SEG613 [277] 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 + //SEG615 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG616 [275] 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 + //SEG617 [275] 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 - //SEG614 keyboard_event_scan::@1 + //SEG618 keyboard_event_scan::@1 b1: - //SEG615 [278] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG619 [276] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG616 [279] call keyboard_matrix_read + //SEG620 [277] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG617 [280] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG621 [278] (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 - //SEG618 keyboard_event_scan::@25 + //SEG622 keyboard_event_scan::@25 b25: - //SEG619 [281] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG623 [279] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG620 [282] 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 + //SEG624 [280] 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 - //SEG621 keyboard_event_scan::@13 + //SEG625 keyboard_event_scan::@13 b13: - //SEG622 [283] (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 + //SEG626 [281] (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 - //SEG623 [284] 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] + //SEG627 [282] 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: - //SEG624 [284] 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 - //SEG625 [284] 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 + //SEG628 [282] 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 + //SEG629 [282] 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 - //SEG626 keyboard_event_scan::@3 + //SEG630 keyboard_event_scan::@3 b3: - //SEG627 [285] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG631 [283] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG628 [286] 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 + //SEG632 [284] 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 - //SEG629 [287] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG633 [285] 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 - //SEG630 keyboard_event_scan::@20 + //SEG634 keyboard_event_scan::@20 b20: - //SEG631 [288] call keyboard_event_pressed - //SEG632 [265] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG635 [286] call keyboard_event_pressed + //SEG636 [263] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG633 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG637 [263] 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 - //SEG634 [289] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG638 [287] (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 - //SEG635 keyboard_event_scan::@26 + //SEG639 keyboard_event_scan::@26 b26: - //SEG636 [290] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG640 [288] (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 - //SEG637 [291] 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 + //SEG641 [289] 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 - //SEG638 [292] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG642 [290] 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 - //SEG639 keyboard_event_scan::@21 + //SEG643 keyboard_event_scan::@21 b21: - //SEG640 [293] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG644 [291] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG641 [293] 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 + //SEG645 [291] 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 - //SEG642 [293] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG646 [291] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG643 [293] 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 + //SEG647 [291] 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 - //SEG644 keyboard_event_scan::@9 + //SEG648 keyboard_event_scan::@9 b9: - //SEG645 [294] call keyboard_event_pressed - //SEG646 [265] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG649 [292] call keyboard_event_pressed + //SEG650 [263] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG647 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG651 [263] 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 - //SEG648 [295] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG652 [293] (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 - //SEG649 keyboard_event_scan::@27 + //SEG653 keyboard_event_scan::@27 b27: - //SEG650 [296] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG654 [294] (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 - //SEG651 [297] 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 + //SEG655 [295] 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 - //SEG652 keyboard_event_scan::@22 + //SEG656 keyboard_event_scan::@22 b22: - //SEG653 [298] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG657 [296] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG654 [299] 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] + //SEG658 [297] 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: - //SEG655 [299] 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 + //SEG659 [297] 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 - //SEG656 keyboard_event_scan::@10 + //SEG660 keyboard_event_scan::@10 b10: - //SEG657 [300] call keyboard_event_pressed - //SEG658 [265] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG661 [298] call keyboard_event_pressed + //SEG662 [263] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG659 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG663 [263] 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 - //SEG660 [301] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG664 [299] (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 - //SEG661 keyboard_event_scan::@28 + //SEG665 keyboard_event_scan::@28 b28: - //SEG662 [302] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG666 [300] (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 - //SEG663 [303] 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 + //SEG667 [301] 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 - //SEG664 keyboard_event_scan::@23 + //SEG668 keyboard_event_scan::@23 b23: - //SEG665 [304] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG669 [302] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG666 [305] 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] + //SEG670 [303] 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: - //SEG667 [305] 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 + //SEG671 [303] 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 - //SEG668 keyboard_event_scan::@11 + //SEG672 keyboard_event_scan::@11 b11: - //SEG669 [306] call keyboard_event_pressed - //SEG670 [265] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG673 [304] call keyboard_event_pressed + //SEG674 [263] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG671 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG675 [263] 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 - //SEG672 [307] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG676 [305] (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 - //SEG673 keyboard_event_scan::@29 + //SEG677 keyboard_event_scan::@29 b29: - //SEG674 [308] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG678 [306] (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 - //SEG675 [309] 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 + //SEG679 [307] 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 - //SEG676 keyboard_event_scan::@24 + //SEG680 keyboard_event_scan::@24 b24: - //SEG677 [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG681 [308] (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 - //SEG678 keyboard_event_scan::@return + //SEG682 keyboard_event_scan::@return breturn: - //SEG679 [311] return + //SEG683 [309] return rts - //SEG680 [312] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG684 [310] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG681 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG682 [312] 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 - //SEG683 [312] 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 + //SEG685 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG686 [310] 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 + //SEG687 [310] 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 - //SEG684 [312] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG688 [310] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG685 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG686 [312] 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 - //SEG687 [312] 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 + //SEG689 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG690 [310] 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 + //SEG691 [310] 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 - //SEG688 keyboard_event_scan::@4 + //SEG692 keyboard_event_scan::@4 b4: - //SEG689 [313] (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 + //SEG693 [311] (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 - //SEG690 [314] (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 + //SEG694 [312] (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 - //SEG691 [315] 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 + //SEG695 [313] 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 - //SEG692 keyboard_event_scan::@15 + //SEG696 keyboard_event_scan::@15 b15: - //SEG693 [316] 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 + //SEG697 [314] 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 - //SEG694 keyboard_event_scan::@16 + //SEG698 keyboard_event_scan::@16 b16: - //SEG695 [317] (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 + //SEG699 [315] (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 - //SEG696 [318] 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 + //SEG700 [316] 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 - //SEG697 keyboard_event_scan::@17 + //SEG701 keyboard_event_scan::@17 b17: - //SEG698 [319] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG702 [317] *((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 - //SEG699 [320] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG703 [318] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG700 [321] 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] + //SEG704 [319] 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: - //SEG701 [321] 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 + //SEG705 [319] 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 - //SEG702 keyboard_event_scan::@5 + //SEG706 keyboard_event_scan::@5 b5: - //SEG703 [322] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG707 [320] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG704 [323] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG708 [321] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG705 [324] 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 + //SEG709 [322] 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 - //SEG706 keyboard_event_scan::@19 + //SEG710 keyboard_event_scan::@19 b19: - //SEG707 [325] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG711 [323] *((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 - //SEG708 keyboard_event_scan::@7 + //SEG712 keyboard_event_scan::@7 b7: - //SEG709 [326] (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 + //SEG713 [324] (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 - //SEG710 [327] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG714 [325] *((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 - //SEG711 [328] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG715 [326] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG712 keyboard_matrix_read +//SEG716 keyboard_matrix_read keyboard_matrix_read: { - //SEG713 [329] *((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 + //SEG717 [327] *((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 - //SEG714 [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG718 [328] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG715 keyboard_matrix_read::@return + //SEG719 keyboard_matrix_read::@return breturn: - //SEG716 [331] return + //SEG720 [329] return rts } -//SEG717 render_show +//SEG721 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG718 [332] if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG722 [330] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG719 [333] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG723 [331] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG720 render_show::toD0182 + //SEG724 render_show::toD0182 toD0182: - //SEG721 [334] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG725 [332] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG722 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG726 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return jmp b2 - //SEG723 render_show::@2 + //SEG727 render_show::@2 b2: - //SEG724 [335] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG728 [333] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 + //SEG729 [334] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + lda render_screen_show + sta render_screen_showing jmp breturn - //SEG725 render_show::@return + //SEG730 render_show::@return breturn: - //SEG726 [336] return + //SEG731 [335] return rts - //SEG727 [337] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG732 [336] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG728 render_show::toD0181 + //SEG733 render_show::toD0181 toD0181: - //SEG729 [334] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG734 [332] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG730 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG735 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG731 play_init +//SEG736 play_init play_init: { .label pli = 7 .label idx = 2 - //SEG732 [339] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG737 [338] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG733 [339] 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 + //SEG738 [338] 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 - //SEG734 [339] 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 + //SEG739 [338] 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 - //SEG735 [339] 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 + //SEG740 [338] 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 - //SEG736 [339] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG741 [338] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG737 [339] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG738 [339] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG739 [339] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG742 [338] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG743 [338] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG744 [338] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG740 play_init::@1 + //SEG745 play_init::@1 b1: - //SEG741 [340] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG746 [339] (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 - //SEG742 [341] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG747 [340] *((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 - //SEG743 [342] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG748 [341] *((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 - //SEG744 [343] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG749 [342] (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 @@ -14904,126 +15113,126 @@ play_init: { bcc !+ inc pli+1 !: - //SEG745 [344] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG750 [343] (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 - //SEG746 [345] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG751 [344] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG747 [346] 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 + //SEG752 [345] 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 - //SEG748 play_init::@2 + //SEG753 play_init::@2 b2: - //SEG749 [347] *((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 + //SEG754 [346] *((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 - //SEG750 play_init::@return + //SEG755 play_init::@return breturn: - //SEG751 [348] return + //SEG756 [347] return rts } -//SEG752 sprites_irq_init +//SEG757 sprites_irq_init sprites_irq_init: { - //SEG753 asm { sei } + //SEG758 asm { sei } sei - //SEG754 [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG759 [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG755 asm { ldaCIA1_INTERRUPT } + //SEG760 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG756 [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG761 [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG757 [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG762 [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG758 [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG763 [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG759 [355] *((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 + //SEG764 [354] *((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 - //SEG760 [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG765 [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG761 [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG766 [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG762 [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG763 asm { cli } + //SEG768 asm { cli } cli jmp breturn - //SEG764 sprites_irq_init::@return + //SEG769 sprites_irq_init::@return breturn: - //SEG765 [360] return + //SEG770 [359] return rts } -//SEG766 sprites_init +//SEG771 sprites_init sprites_init: { .label xpos = 2 - //SEG767 [361] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG772 [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG768 [362] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG773 [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG769 [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG774 [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG770 [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG775 [363] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG771 [365] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG776 [364] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG772 [365] 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 + //SEG777 [364] 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 - //SEG773 [365] 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 + //SEG778 [364] 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 - //SEG774 [365] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG779 [364] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG775 [365] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG776 [365] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG780 [364] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG781 [364] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG777 sprites_init::@1 + //SEG782 sprites_init::@1 b1: - //SEG778 [366] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG783 [365] (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 - //SEG779 [367] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG784 [366] *((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 - //SEG780 [368] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG785 [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG781 [369] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG786 [368] (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 - //SEG782 [370] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG787 [369] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG783 [371] 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 + //SEG788 [370] 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 - //SEG784 sprites_init::@return + //SEG789 sprites_init::@return breturn: - //SEG785 [372] return + //SEG790 [371] return rts } -//SEG786 render_init +//SEG791 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label _12 = $f @@ -15032,102 +15241,105 @@ render_init: { .label li_1 = 7 .label li_2 = $f jmp vicSelectGfxBank1 - //SEG787 render_init::vicSelectGfxBank1 + //SEG792 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG788 [374] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG793 [373] *((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 - //SEG789 [375] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG794 [374] 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 - //SEG790 render_init::vicSelectGfxBank1_toDd001 + //SEG795 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG791 render_init::vicSelectGfxBank1_@1 + //SEG796 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG792 [376] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG797 [375] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b7 - //SEG793 render_init::@7 + //SEG798 render_init::@7 b7: - //SEG794 [377] *((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 + //SEG799 [376] *((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 - //SEG795 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG800 [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG801 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG796 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG802 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG797 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG803 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG798 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG804 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG799 [382] call render_screen_original - //SEG800 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] + //SEG805 [382] call render_screen_original + //SEG806 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] render_screen_original_from_b7: - //SEG801 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 + //SEG807 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG802 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] + //SEG808 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] b8_from_b7: jmp b8 - //SEG803 render_init::@8 + //SEG809 render_init::@8 b8: - //SEG804 [384] call render_screen_original - //SEG805 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] + //SEG810 [384] call render_screen_original + //SEG811 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] render_screen_original_from_b8: - //SEG806 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 + //SEG812 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG807 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG813 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] b9_from_b8: jmp b9 - //SEG808 render_init::@9 + //SEG814 render_init::@9 b9: - //SEG809 [386] call fill - //SEG810 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] + //SEG815 [386] call fill + //SEG816 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] fill_from_b9: jsr fill - //SEG811 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] + //SEG817 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] b1_from_b9: - //SEG812 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 + //SEG818 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 lda #2 sta l - //SEG813 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 + //SEG819 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 lda #COLS+4*$28+$10 sta line+1 jmp b1 - //SEG814 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG820 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG815 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy - //SEG816 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy + //SEG821 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy + //SEG822 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy jmp b1 - //SEG817 render_init::@1 + //SEG823 render_init::@1 b1: - //SEG818 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG824 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG819 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuxx=vbuc1 + //SEG825 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG820 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] + //SEG826 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] b2_from_b2: - //SEG821 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy + //SEG827 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy jmp b2 - //SEG822 render_init::@2 + //SEG828 render_init::@2 b2: - //SEG823 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG829 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -15135,19 +15347,19 @@ render_init: { lda #0 adc line+1 sta _12+1 - //SEG824 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG830 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (_12),y - //SEG825 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG831 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG826 [392] 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::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG832 [392] 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::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b4 - //SEG827 render_init::@4 + //SEG833 render_init::@4 b4: - //SEG828 [393] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG834 [393] (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 @@ -15155,54 +15367,54 @@ render_init: { bcc !+ inc line+1 !: - //SEG829 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG835 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG830 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG836 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG831 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] + //SEG837 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] b3_from_b4: - //SEG832 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 + //SEG838 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG833 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 + //SEG839 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG834 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuxx=vbuc1 + //SEG840 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG835 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG841 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG836 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG837 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy - //SEG838 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy + //SEG842 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG843 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy + //SEG844 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy jmp b3 - //SEG839 render_init::@3 + //SEG845 render_init::@3 b3: - //SEG840 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG846 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG841 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG847 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG842 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG848 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG843 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG849 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG844 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG850 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -15210,7 +15422,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG845 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG851 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -15218,46 +15430,46 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG846 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG852 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG847 [404] 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::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG853 [404] 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::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b3_from_b3 jmp breturn - //SEG848 render_init::@return + //SEG854 render_init::@return breturn: - //SEG849 [405] return + //SEG855 [405] return rts } -//SEG850 fill +//SEG856 fill fill: { .const size = $3e8 .label end = COLS+size .label addr = 7 - //SEG851 [407] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG857 [407] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG852 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG858 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 jmp b1 - //SEG853 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG859 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG854 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG860 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG855 fill::@1 + //SEG861 fill::@1 b1: - //SEG856 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG862 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG857 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG863 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG858 [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG864 [410] 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 @@ -15265,321 +15477,334 @@ fill: { cmp #render_screen_original::@1] + //SEG868 [413] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG863 [413] phi (byte) render_screen_original::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG869 [413] phi (byte) render_screen_original::y#8 = (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 - //SEG864 [413] phi (byte*) render_screen_original::orig#5 = (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 + //SEG870 [413] phi (byte*) render_screen_original::orig#5 = (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 - //SEG865 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy + //SEG871 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG866 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] + //SEG872 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] b1_from_b9: - //SEG867 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy - //SEG868 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy - //SEG869 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy + //SEG873 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy + //SEG874 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy + //SEG875 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy jmp b1 - //SEG870 render_screen_original::@1 + //SEG876 render_screen_original::@1 b1: - //SEG871 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG877 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG872 [414] 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 + //SEG878 [414] 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 - //SEG873 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG879 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG874 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG880 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG875 [414] 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 - //SEG876 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG881 [414] 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 + //SEG882 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy jmp b2 - //SEG877 render_screen_original::@2 + //SEG883 render_screen_original::@2 b2: - //SEG878 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG884 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG879 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG885 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG880 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG886 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG881 [418] 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 + //SEG887 [418] 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 - //SEG882 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] + //SEG888 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] b3_from_b2: b3_from_b4: - //SEG883 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy - //SEG884 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy - //SEG885 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy + //SEG889 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy + //SEG890 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy + //SEG891 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy jmp b3 - //SEG886 render_screen_original::@3 + //SEG892 render_screen_original::@3 b3: - //SEG887 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=_deref_pbuz1_plus_1 + //SEG893 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=_deref_pbuz1_plus_1 ldy #0 lda (orig),y tay iny - //SEG888 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG894 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG889 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuxx_gt_vbuc1_then_la1 + //SEG895 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuxx_gt_vbuc1_then_la1 txa cmp #$e beq !+ bcs b11 !: - //SEG890 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] + //SEG896 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] b4_from_b3: b4_from_b7: - //SEG891 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy + //SEG897 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy jmp b4 - //SEG892 render_screen_original::@4 + //SEG898 render_screen_original::@4 b4: - //SEG893 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuyy + //SEG899 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuyy tya ldy #0 sta (screen),y - //SEG894 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 + //SEG900 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG895 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG901 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG896 [427] 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 + //SEG902 [427] 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_b4 - //SEG897 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] + //SEG903 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] b5_from_b4: b5_from_b5: - //SEG898 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy - //SEG899 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy + //SEG904 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy + //SEG905 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy jmp b5 - //SEG900 render_screen_original::@5 + //SEG906 render_screen_original::@5 b5: - //SEG901 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG907 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG902 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG908 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG903 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuxx=_inc_vbuxx + //SEG909 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuxx=_inc_vbuxx inx - //SEG904 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG910 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5_from_b5 jmp b9 - //SEG905 render_screen_original::@9 + //SEG911 render_screen_original::@9 b9: - //SEG906 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 + //SEG912 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG907 [434] 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 + //SEG913 [434] 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_b9 jmp breturn - //SEG908 render_screen_original::@return + //SEG914 render_screen_original::@return breturn: - //SEG909 [435] return + //SEG915 [435] return rts - //SEG910 render_screen_original::@11 + //SEG916 render_screen_original::@11 b11: - //SEG911 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG917 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$1b bcc b7 - //SEG912 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] + //SEG918 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] b4_from_b11: jmp b4 - //SEG913 render_screen_original::@7 + //SEG919 render_screen_original::@7 b7: - //SEG914 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuyy=vbuyy_bor_vbuc1 + //SEG920 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuyy=vbuyy_bor_vbuc1 tya ora #$c0 tay jmp b4_from_b7 } -//SEG915 sid_rnd_init +//SEG921 sid_rnd_init sid_rnd_init: { - //SEG916 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG922 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG917 [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG923 [439] *((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 - //SEG918 sid_rnd_init::@return + //SEG924 sid_rnd_init::@return breturn: - //SEG919 [440] return + //SEG925 [440] return rts } -//SEG920 irq -irq: { +//SEG926 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG921 entry interrupt(HARDWARE_CLOBBER) + //SEG927 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG922 [441] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG923 [442] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG928 [441] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG924 [443] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG929 [442] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG925 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG930 [443] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG926 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG931 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG927 [446] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG932 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 jmp b1 - //SEG928 irq::@1 + //SEG933 sprites_irq::@1 b1: - //SEG929 [447] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG934 [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - jmp b5 - //SEG930 irq::@5 - b5: - //SEG931 [448] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 - lda irq_sprite_ptr - //SEG932 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG933 [450] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_2 - //SEG934 [451] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa - tax + bcc b1 + jmp b7 + //SEG935 sprites_irq::@7 + b7: + //SEG936 [447] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + ldx irq_sprite_ptr + //SEG937 [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + jmp b8 + //SEG938 sprites_irq::@8 + b8: + //SEG939 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_2 + //SEG940 [450] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG935 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG936 [453] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG941 [451] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG937 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG938 [455] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG942 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG939 [456] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG943 [453] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx inx - //SEG940 [457] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+3 - //SEG941 [458] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG944 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG942 [459] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + jmp b3 + //SEG945 sprites_irq::@3 + b3: + //SEG946 [455] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG943 [460] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG947 [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b2 - jmp b6 - //SEG944 irq::@6 - b6: - //SEG945 [461] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + beq b4 + jmp b10 + //SEG948 sprites_irq::@10 + b10: + //SEG949 [457] (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 - //SEG946 [462] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG950 [458] (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 - //SEG947 [463] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG951 [459] (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 - //SEG948 [464] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - b3_from_b6: - b3_from_b9: - //SEG949 [464] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - jmp b3 - //SEG950 irq::@3 - b3: - //SEG951 [465] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG952 [460] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + b5_from_b10: + b5_from_b13: + //SEG953 [460] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + jmp b5 + //SEG954 sprites_irq::@5 + b5: + //SEG955 [461] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG952 [466] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG956 [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG953 [467] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG957 [463] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #3 - bne b4_from_b3 - jmp b8 - //SEG954 irq::@8 - b8: - //SEG955 [468] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + bne b6_from_b5 + jmp b12 + //SEG958 sprites_irq::@12 + b12: + //SEG959 [464] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG956 [469] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - b4_from_b3: - b4_from_b8: - //SEG957 [469] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - jmp b4 - //SEG958 irq::@4 - b4: - //SEG959 [470] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG960 [465] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + b6_from_b12: + b6_from_b5: + //SEG961 [465] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + jmp b6 + //SEG962 sprites_irq::@6 + b6: + //SEG963 [466] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG960 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG964 [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG961 [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL jmp breturn - //SEG962 irq::@return + //SEG965 sprites_irq::@return breturn: - //SEG963 [473] return - exit interrupt(HARDWARE_CLOBBER) + //SEG966 [468] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG964 irq::@2 - b2: - //SEG965 [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG967 sprites_irq::@4 + b4: + //SEG968 [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG966 [475] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG969 [470] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG967 [476] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG970 [471] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG968 [477] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - toSpritePtr2_from_b2: + //SEG971 [472] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG969 irq::toSpritePtr2 + //SEG972 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b9 - //SEG970 irq::@9 - b9: - //SEG971 [478] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b13 + //SEG973 sprites_irq::@13 + b13: + //SEG974 [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b3_from_b9 + jmp b5_from_b13 + //SEG975 sprites_irq::@2 + b2: + //SEG976 [474] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_1 + //SEG977 [475] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG978 [476] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG979 [477] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG980 [478] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG981 [479] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+3 + jmp 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 @@ -15658,7 +15883,6 @@ Removing instruction jmp b28 Removing instruction jmp b13 Removing instruction jmp b29 Removing instruction jmp b30 -Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b7 @@ -15784,14 +16008,16 @@ Removing instruction jmp b9 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 b7 Removing instruction jmp b8 -Removing instruction jmp b4 +Removing instruction jmp b3 +Removing instruction jmp b10 +Removing instruction jmp b5 +Removing instruction jmp b12 +Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp toSpritePtr2 -Removing instruction jmp b9 +Removing instruction jmp b13 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #0 @@ -15806,8 +16032,10 @@ Removing instruction lda #0 Removing instruction lda row_scan Removing instruction lda SPRITES_MC Removing instruction lda SPRITES_EXPAND_Y +Removing instruction lda #BLACK Succesful ASM optimization Pass5UnnecesaryLoadElimination -Replacing label b7_from_b28 with b7 +Replacing label b1 with b4 +Replacing label b1_from_b28 with b4 Replacing label b1 with b4 Replacing label b1_from_b3 with b1 Replacing label b4_from_b5 with b4 @@ -15849,11 +16077,10 @@ Replacing label b3_from_b4 with b3 Replacing label b5_from_b5 with b5 Replacing label b1_from_b9 with b1 Replacing label b4_from_b7 with b4 -Replacing label b4_from_b3 with b4 -Replacing label b3_from_b9 with b3 +Replacing label b6_from_b5 with b6 +Replacing label b5_from_b13 with b5 Removing instruction b14: Removing instruction b20: -Removing instruction b21: Removing instruction toSpritePtr1_from_b21: Removing instruction toSpritePtr1: Removing instruction b32_from_b33: @@ -15867,13 +16094,13 @@ Removing instruction b19_from_b18: Removing instruction play_spawn_current_from_b19: Removing instruction b20_from_b19: Removing instruction render_playfield_from_b20: +Removing instruction b1_from_b28: Removing instruction b1: +Removing instruction b6_from_b4: Removing instruction b23_from_b6: Removing instruction keyboard_event_scan_from_b23: Removing instruction b24_from_b23: Removing instruction b30_from_b29: -Removing instruction b7_from_b28: -Removing instruction b7_from_b30: Removing instruction b1_from_b3: Removing instruction b3_from_b5: Removing instruction b3_from_b7: @@ -15955,14 +16182,15 @@ Removing instruction b4_from_b3: Removing instruction b4_from_b7: Removing instruction b5_from_b4: Removing instruction b5_from_b5: -Removing instruction b3_from_b6: -Removing instruction b3_from_b9: -Removing instruction b4_from_b3: -Removing instruction b4_from_b8: +Removing instruction b5_from_b10: +Removing instruction b5_from_b13: +Removing instruction b6_from_b12: +Removing instruction b6_from_b5: Removing instruction breturn: -Removing instruction toSpritePtr2_from_b2: +Removing instruction toSpritePtr2_from_b4: Removing instruction toSpritePtr2: Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b21: Removing instruction b33: Removing instruction b32: Removing instruction bend: @@ -15988,7 +16216,7 @@ Removing instruction render_playfield_from_b13: Removing instruction b29: Removing instruction render_current_from_b29: Removing instruction b30: -Removing instruction b1_from_b7: +Removing instruction b1_from_b30: Removing instruction breturn: Removing instruction b1_from_render_current: Removing instruction breturn: @@ -16099,10 +16327,11 @@ Removing instruction b9: Removing instruction breturn: Removing instruction b4_from_b11: Removing instruction breturn: -Removing instruction b5: -Removing instruction b6: +Removing instruction b7: Removing instruction b8: -Removing instruction b9: +Removing instruction b10: +Removing instruction b12: +Removing instruction b13: Succesful ASM optimization Pass5UnusedLabelElimination Skipping double jump to b3 in bne b17 Succesful ASM optimization Pass5DoubleJumpElimination @@ -16115,6 +16344,7 @@ Relabelling long label breturn_from_keyboard_event_get to b1 Relabelling long label b9_from_b26 to b2 Relabelling long label b4_from_b25 to b6 Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b1 @@ -16132,6 +16362,7 @@ Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction ldy xpos with TAY Removing instruction b17: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b3 @@ -16419,53 +16650,53 @@ FINAL SYMBOL TABLE (byte) YELLOW (byte) current_movedown_counter (byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 -(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 0.4482758620689655 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 1.0833333333333333 +(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 4.222222222222222 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 10.363636363636363 (byte) current_movedown_fast (const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_slow (const byte) current_movedown_slow#0 current_movedown_slow = (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_orientation -(byte) current_orientation#10 current_orientation zp ZP_BYTE:17 0.4722222222222223 +(byte) current_orientation#10 current_orientation zp ZP_BYTE:17 3.371428571428571 (byte) current_orientation#14 current_orientation zp ZP_BYTE:17 0.32653061224489793 -(byte) current_orientation#19 current_orientation zp ZP_BYTE:17 0.8947368421052632 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:17 6.941176470588235 (byte) current_orientation#29 current_orientation zp ZP_BYTE:17 4.0 (byte) current_orientation#4 current_orientation zp ZP_BYTE:17 3.0 (byte*) current_piece -(byte*) current_piece#10 current_piece zp ZP_WORD:15 0.3285714285714286 +(byte*) current_piece#10 current_piece zp ZP_WORD:15 1.8235294117647054 (byte*) current_piece#12 current_piece#12 zp ZP_WORD:7 10.0 -(byte*) current_piece#16 current_piece zp ZP_WORD:15 0.5277777777777779 +(byte*) current_piece#16 current_piece zp ZP_WORD:15 3.428571428571428 (byte*) current_piece#20 current_piece zp ZP_WORD:15 6.0 (byte*~) current_piece#71 current_piece zp ZP_WORD:15 4.0 -(byte*~) current_piece#73 current_piece#73 zp ZP_WORD:7 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:7 4.0 (byte*~) current_piece#75 current_piece#75 zp ZP_WORD:7 4.0 (byte*~) current_piece#76 current_piece#76 zp ZP_WORD:7 4.0 -(byte*~) current_piece#77 current_piece zp ZP_WORD:15 4.0 +(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:7 4.0 +(byte*~) current_piece#78 current_piece zp ZP_WORD:15 4.0 (byte) current_piece_char -(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:21 0.896551724137931 +(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:21 4.703703703703704 (byte) current_piece_char#12 current_piece_char zp ZP_BYTE:21 0.6153846153846154 -(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:21 19.20754716981132 +(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:21 194.59615384615384 (byte) current_piece_char#20 current_piece_char zp ZP_BYTE:21 6.0 -(byte) current_piece_char#62 current_piece_char#62 zp ZP_BYTE:9 46.09090909090909 -(byte~) current_piece_char#87 current_piece_char#87 zp ZP_BYTE:9 4.0 -(byte~) current_piece_char#88 current_piece_char#88 zp ZP_BYTE:9 22.0 +(byte) current_piece_char#63 reg byte x 46.09090909090909 +(byte~) current_piece_char#88 reg byte x 4.0 +(byte~) current_piece_char#89 reg byte x 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#1 current_piece_gfx zp ZP_WORD:18 0.2962962962962963 -(byte*~) current_piece_gfx#100 current_piece_gfx#100 zp ZP_WORD:7 11.0 -(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:18 1.4736842105263155 +(byte*~) current_piece_gfx#100 current_piece_gfx#100 zp ZP_WORD:7 2.0 +(byte*~) current_piece_gfx#101 current_piece_gfx#101 zp ZP_WORD:7 11.0 +(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:18 7.588235294117647 (byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:18 0.5 -(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:18 19.20754716981132 +(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:18 194.59615384615384 (byte*) current_piece_gfx#26 current_piece_gfx zp ZP_WORD:18 6.0 (byte*) current_piece_gfx#3 current_piece_gfx zp ZP_WORD:18 4.0 -(byte*) current_piece_gfx#52 current_piece_gfx#52 zp ZP_WORD:7 46.09090909090909 -(byte*~) current_piece_gfx#99 current_piece_gfx#99 zp ZP_WORD:7 2.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:7 46.09090909090909 (byte) current_xpos (byte) current_xpos#1 current_xpos zp ZP_BYTE:20 0.72 -(byte) current_xpos#10 current_xpos zp ZP_BYTE:20 2.2641509433962264 -(byte~) current_xpos#109 current_xpos#109 zp ZP_BYTE:6 1.3333333333333333 -(byte~) current_xpos#110 current_xpos#110 zp ZP_BYTE:6 7.333333333333333 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:20 0.7906976744186045 +(byte) current_xpos#10 current_xpos zp ZP_BYTE:20 21.557692307692307 +(byte~) current_xpos#110 current_xpos#110 zp ZP_BYTE:6 1.3333333333333333 +(byte~) current_xpos#111 current_xpos#111 zp ZP_BYTE:6 7.333333333333333 +(byte) current_xpos#19 current_xpos zp ZP_BYTE:20 3.2926829268292686 (byte) current_xpos#2 current_xpos zp ZP_BYTE:20 4.0 (byte) current_xpos#23 current_xpos zp ZP_BYTE:20 0.5333333333333333 (byte) current_xpos#33 current_xpos zp ZP_BYTE:20 6.0 @@ -16473,13 +16704,13 @@ FINAL SYMBOL TABLE (byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:6 5.181818181818182 (byte) current_ypos (byte) current_ypos#0 current_ypos zp ZP_BYTE:14 4.0 -(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 0.4571428571428572 +(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 1.9558823529411762 (byte) current_ypos#18 current_ypos zp ZP_BYTE:14 0.5714285714285714 -(byte) current_ypos#21 current_ypos zp ZP_BYTE:14 0.5833333333333335 +(byte) current_ypos#21 current_ypos zp ZP_BYTE:14 3.485714285714285 (byte) current_ypos#29 current_ypos zp ZP_BYTE:14 6.0 -(byte~) current_ypos#83 reg byte x 1.0 -(byte~) current_ypos#84 reg byte x 4.4 -(byte) current_ypos#9 reg byte x 15.0 +(byte~) current_ypos#84 reg byte y 1.0 +(byte~) current_ypos#85 reg byte y 4.4 +(byte) current_ypos#9 reg byte y 15.0 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -16492,59 +16723,31 @@ 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 2.6666666666666665 -(byte) irq::ptr#1 reg byte x 2.4 -(byte) irq::ptr#2 reg byte x 3.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:26 0.2222222222222222 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:26 4.0 -(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:26 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:27 0.2 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:27 4.0 +(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:27 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:23 0.2 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:23 0.18181818181818182 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:23 1.0 -(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:23 6.0 +(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:23 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:23 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:25 0.2727272727272727 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:25 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:25 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:26 0.25 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:26 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:26 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:24 0.8095238095238095 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:24 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:24 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:25 0.7391304347826086 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:25 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:25 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 4.333333333333333 -(byte) keyboard_event_get::return#3 reg byte a 22.0 +(byte) keyboard_event_get::return#2 reg byte a 34.33333333333333 +(byte) keyboard_event_get::return#3 reg byte a 202.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 reg byte a 4.0 (byte~) keyboard_event_pressed::$1 reg byte a 4.0 @@ -16561,13 +16764,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:6 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 reg byte a 2002.0 +(byte/word/dword~) keyboard_event_scan::$11 reg byte a 20002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 (byte~) keyboard_event_scan::$18 reg byte a 4.0 (byte~) keyboard_event_scan::$22 reg byte a 4.0 (byte~) keyboard_event_scan::$26 reg byte a 4.0 -(byte~) keyboard_event_scan::$3 reg byte a 2002.0 -(byte~) keyboard_event_scan::$4 reg byte a 2002.0 +(byte~) keyboard_event_scan::$3 reg byte a 20002.0 +(byte~) keyboard_event_scan::$4 reg byte a 20002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -16593,43 +16796,43 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 1501.5 -(byte) keyboard_event_scan::col#2 reg byte x 286.0 +(byte) keyboard_event_scan::col#1 reg byte x 15001.5 +(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 2002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:6 202.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:6 315.7692307692308 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:6 50.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:6 101.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:6 525.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:6 2002.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:6 3154.230769230769 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:6 500.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:6 1001.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:6 5250.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:5 151.5 -(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:5 60.24 +(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:5 1501.5 +(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:5 600.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:9 128.05555555555557 +(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:9 1278.0555555555554 (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:22 2002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:22 810.9000000000001 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:22 9.967741935483872 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:22 0.45454545454545453 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:22 1.8571428571428572 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:22 2002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:22 43.57142857142858 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:22 1021.2 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:22 20002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:22 8100.9000000000015 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:22 97.06451612903226 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:22 3.741935483870968 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:22 18.999999999999996 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:22 20002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:22 429.2857142857143 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:22 10201.2 (byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:22 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 34.33333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 202.0 +(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 103.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers @@ -16642,10 +16845,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$9 reg byte a 22.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 (label) main::@1 (label) main::@13 (label) main::@15 @@ -16665,15 +16867,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@30 (label) main::@4 (label) main::@6 -(label) main::@7 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:13 4.0 +(byte) main::key_event#0 key_event zp ZP_BYTE:13 36.72727272727273 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:27 4.4 -(byte) main::render#2 render zp ZP_BYTE:27 4.4 -(byte) main::render#3 reg byte a 22.0 +(byte) main::render#1 render zp ZP_BYTE:28 40.4 +(byte) main::render#2 render zp ZP_BYTE:28 40.4 +(byte) main::render#3 reg byte a 202.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 +(byte~) play_collision::$7 reg byte a 20002.0 (label) play_collision::@1 (label) play_collision::@17 (label) play_collision::@2 @@ -16686,21 +16887,21 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_collision::@8 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 1001.0 -(byte) play_collision::c#2 reg byte x 222.44444444444446 +(byte) play_collision::c#1 reg byte x 10001.0 +(byte) play_collision::c#2 reg byte x 2222.4444444444443 (byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:12 500.5 -(byte) play_collision::col#2 col zp ZP_BYTE:12 638.25 -(byte~) play_collision::col#9 col zp ZP_BYTE:12 202.0 +(byte) play_collision::col#1 col zp ZP_BYTE:12 5000.5 +(byte) play_collision::col#2 col zp ZP_BYTE:12 6375.75 +(byte~) play_collision::col#9 col zp ZP_BYTE:12 2002.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:30 161.76923076923077 -(byte~) play_collision::i#11 i#11 zp ZP_BYTE:11 202.0 -(byte~) play_collision::i#13 i#13 zp ZP_BYTE:11 2002.0 -(byte) play_collision::i#2 i#2 zp ZP_BYTE:11 1552.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:11 67.33333333333333 +(byte) play_collision::i#1 i zp ZP_BYTE:31 1615.6153846153845 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:11 2002.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:11 20002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:11 15502.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:11 667.3333333333334 (byte) play_collision::l -(byte) play_collision::l#1 l zp ZP_BYTE:10 101.0 -(byte) play_collision::l#6 l zp ZP_BYTE:10 12.625 +(byte) play_collision::l#1 l zp ZP_BYTE:10 1001.0 +(byte) play_collision::l#6 l zp ZP_BYTE:10 125.125 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 @@ -16708,9 +16909,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::orientation#3 reg byte x 2.0 (byte) play_collision::orientation#4 reg byte x 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 47.76190476190476 +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 476.3333333333333 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:28 78.71428571428571 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:29 785.8571428571429 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 @@ -16722,7 +16923,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::xpos#1 xpos zp ZP_BYTE:6 1.0 (byte) play_collision::xpos#2 xpos zp ZP_BYTE:6 1.0 (byte) play_collision::xpos#3 xpos zp ZP_BYTE:6 1.0 -(byte) play_collision::xpos#5 xpos zp ZP_BYTE:6 4.954545454545454 +(byte) play_collision::xpos#5 xpos zp ZP_BYTE:6 45.86363636363637 (byte) play_collision::ypos (byte) play_collision::ypos#0 reg byte y 1.0 (byte) play_collision::ypos#1 reg byte y 1.3333333333333333 @@ -16731,8 +16932,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::ypos#4 reg byte y 5.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:9 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:9 50.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:9 87.06666666666668 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:9 500.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:9 867.0666666666667 (void()) play_init() (byte~) play_init::$1 reg byte a 22.0 (label) play_init::@1 @@ -16757,27 +16958,27 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_lock_current::@8 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 1001.0 -(byte) play_lock_current::c#2 reg byte x 400.4 +(byte) play_lock_current::c#1 reg byte x 10001.0 +(byte) play_lock_current::c#2 reg byte x 4000.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:6 202.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:6 500.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:6 776.0 +(byte) play_lock_current::col#0 col zp ZP_BYTE:6 2002.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:6 5000.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:6 7751.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp ZP_BYTE:9 233.66666666666669 -(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:5 1552.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:5 67.33333333333333 -(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:5 202.0 -(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:5 2002.0 +(byte) play_lock_current::i#1 i zp ZP_BYTE:9 2333.6666666666665 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:5 15502.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:5 667.3333333333334 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:5 2002.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:5 20002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp ZP_BYTE:4 101.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 16.833333333333332 +(byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:7 110.19999999999999 +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:7 1100.2 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:14 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:14 50.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:14 27.727272727272727 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:14 500.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:14 273.1818181818182 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 reg byte a 4.0 (byte~) play_move_down::$2 reg byte a 4.0 @@ -16798,7 +16999,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 6.5 +(byte) play_move_down::key_event#0 reg byte a 51.5 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 reg byte x 1.0 (byte) play_move_down::movedown#2 reg byte x 4.0 @@ -16806,8 +17007,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_move_down::movedown#6 reg byte x 6.0 (byte) play_move_down::movedown#7 reg byte x 5.0 (byte) play_move_down::return -(byte) play_move_down::return#2 reg byte x 3.6666666666666665 -(byte) play_move_down::return#3 reg byte a 22.0 +(byte) play_move_down::return#2 reg byte x 33.666666666666664 +(byte) play_move_down::return#3 reg byte a 202.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -16820,10 +17021,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_leftright::@8 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 7.5 +(byte) play_move_leftright::key_event#0 reg byte a 52.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 reg byte a 3.6666666666666665 -(byte) play_move_leftright::return#4 reg byte a 22.0 +(byte) play_move_leftright::return#1 reg byte a 33.666666666666664 +(byte) play_move_leftright::return#4 reg byte a 202.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 @@ -16836,14 +17037,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 7.5 +(byte) play_move_rotate::key_event#0 reg byte a 52.5 (byte) play_move_rotate::orientation (byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:5 4.0 (byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:5 4.0 (byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:5 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 reg byte a 3.6666666666666665 -(byte) play_move_rotate::return#4 reg byte a 22.0 +(byte) play_move_rotate::return#1 reg byte a 33.666666666666664 +(byte) play_move_rotate::return#4 reg byte a 202.0 (void()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@10 @@ -16856,30 +17057,30 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp ZP_BYTE:9 600.5999999999999 +(byte) play_remove_lines::c#0 c zp ZP_BYTE:9 6000.6 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp ZP_BYTE:6 420.59999999999997 -(byte) play_remove_lines::full#4 full zp ZP_BYTE:6 400.4 +(byte) play_remove_lines::full#2 full zp ZP_BYTE:6 4200.6 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:6 4000.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 161.76923076923077 -(byte) play_remove_lines::r#2 reg byte y 1552.0 -(byte) play_remove_lines::r#3 reg byte y 202.0 +(byte) play_remove_lines::r#1 reg byte y 1615.6153846153845 +(byte) play_remove_lines::r#2 reg byte y 15502.0 +(byte) play_remove_lines::r#3 reg byte y 2002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 551.0 -(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 -(byte) play_remove_lines::w#12 reg byte x 202.0 -(byte) play_remove_lines::w#2 reg byte x 202.0 -(byte) play_remove_lines::w#3 reg byte x 202.0 -(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 -(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 +(byte) play_remove_lines::w#1 reg byte x 5501.0 +(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 +(byte) play_remove_lines::w#12 reg byte x 2002.0 +(byte) play_remove_lines::w#2 reg byte x 2002.0 +(byte) play_remove_lines::w#3 reg byte x 2002.0 +(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 +(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp ZP_BYTE:5 1501.5 -(byte) play_remove_lines::x#2 x zp ZP_BYTE:5 250.25 +(byte) play_remove_lines::x#1 x zp ZP_BYTE:5 15001.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:5 2500.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 151.5 -(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 14.428571428571429 +(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 143.0 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$1 reg byte a 2002.0 (byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.13333333333333333 (label) play_spawn_current::@1 (label) play_spawn_current::@2 @@ -16887,8 +17088,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_spawn_current::@7 (label) play_spawn_current::@return (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 -(byte) play_spawn_current::piece_idx#2 reg byte x 35.00000000000001 +(byte) play_spawn_current::piece_idx#1 reg byte x 2002.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 334.99999999999994 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines @@ -16908,29 +17109,29 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) render_current::@9 (label) render_current::@return (byte) render_current::c -(byte) render_current::c#1 reg byte x 1501.5 -(byte) render_current::c#2 reg byte x 286.0 +(byte) render_current::c#1 c zp ZP_BYTE:13 1501.5 +(byte) render_current::c#2 c zp ZP_BYTE:13 286.0 (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i -(byte) render_current::i#1 i zp ZP_BYTE:12 202.0 -(byte) render_current::i#10 i zp ZP_BYTE:12 429.0 -(byte) render_current::i#3 i zp ZP_BYTE:12 50.5 -(byte) render_current::i#4 i zp ZP_BYTE:12 1552.0 -(byte) render_current::i#8 i zp ZP_BYTE:12 300.75 +(byte) render_current::i#1 i zp ZP_BYTE:11 202.0 +(byte) render_current::i#10 i zp ZP_BYTE:11 429.0 +(byte) render_current::i#3 i zp ZP_BYTE:11 50.5 +(byte) render_current::i#4 i zp ZP_BYTE:11 1552.0 +(byte) render_current::i#8 i zp ZP_BYTE:11 300.75 (byte) render_current::l -(byte) render_current::l#1 l zp ZP_BYTE:11 151.5 -(byte) render_current::l#4 l zp ZP_BYTE:11 11.222222222222221 +(byte) render_current::l#1 l zp ZP_BYTE:10 151.5 +(byte) render_current::l#4 l zp ZP_BYTE:10 11.222222222222221 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:28 100.18181818181819 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:29 100.18181818181819 (byte) render_current::xpos -(byte) render_current::xpos#0 xpos zp ZP_BYTE:13 202.0 -(byte) render_current::xpos#1 xpos zp ZP_BYTE:13 667.3333333333334 -(byte) render_current::xpos#2 xpos zp ZP_BYTE:13 684.1666666666667 +(byte) render_current::xpos#0 xpos zp ZP_BYTE:12 202.0 +(byte) render_current::xpos#1 xpos zp ZP_BYTE:12 667.3333333333334 +(byte) render_current::xpos#2 xpos zp ZP_BYTE:12 684.1666666666667 (byte) render_current::ypos2 -(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:10 4.0 -(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:10 67.33333333333333 -(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:10 29.823529411764707 +(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:9 4.0 +(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:9 67.33333333333333 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:9 29.823529411764707 (void()) render_init() (byte*~) render_init::$12 $12 zp ZP_WORD:15 202.0 (byte~) render_init::$22 reg byte a 22.0 @@ -17034,17 +17235,18 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) render_screen_original::y#1 y zp ZP_BYTE:2 16.5 (byte) render_screen_original::y#8 y zp ZP_BYTE:2 1.0 (byte) render_screen_render -(byte) render_screen_render#10 render_screen_render zp ZP_BYTE:3 3.25 -(byte) render_screen_render#15 render_screen_render zp ZP_BYTE:3 1.277777777777778 -(byte) render_screen_render#18 reg byte x 8.615384615384615 -(byte) render_screen_render#27 render_screen_render#27 zp ZP_BYTE:5 5.090909090909091 -(byte) render_screen_render#31 render_screen_render zp ZP_BYTE:3 16.5 -(byte~) render_screen_render#68 render_screen_render#68 zp ZP_BYTE:5 5.5 -(byte~) render_screen_render#69 reg byte x 22.0 +(byte) render_screen_render#11 render_screen_render zp ZP_BYTE:3 3.25 +(byte) render_screen_render#16 render_screen_render zp ZP_BYTE:3 1.0 +(byte) render_screen_render#19 reg byte x 8.615384615384615 +(byte) render_screen_render#28 render_screen_render#28 zp ZP_BYTE:5 5.090909090909091 +(byte~) render_screen_render#62 render_screen_render#62 zp ZP_BYTE:5 5.5 +(byte~) render_screen_render#63 reg byte x 22.0 (byte) render_screen_show -(byte) render_screen_show#11 render_screen_show zp ZP_BYTE:2 4.333333333333333 -(byte) render_screen_show#15 render_screen_show zp ZP_BYTE:2 0.8604651162790697 -(byte) render_screen_show#24 render_screen_show zp ZP_BYTE:2 16.5 +(byte) render_screen_show#13 render_screen_show zp ZP_BYTE:2 4.333333333333333 +(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.39534883720930225 +(byte) render_screen_showing +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:24 0.5714285714285714 +(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:24 20.0 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() @@ -17087,8 +17289,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 34.33333333333333 -(byte) sid_rnd::return#2 reg byte a 202.0 +(byte) sid_rnd::return#0 reg byte a 334.33333333333337 +(byte) sid_rnd::return#2 reg byte a 2002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (void()) sprites_init() @@ -17102,6 +17304,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 reg byte a 4.0 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 reg byte x 2.5 +(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#2 reg byte a 4.0 +(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte x 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) sprites_irq::raster_next#1 reg byte x 4.0 +(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(const byte) sprites_irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 reg byte a 2.5 (void()) sprites_irq_init() (label) sprites_irq_init::@return (label) toSpritePtr1 @@ -17112,20 +17347,20 @@ 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 -zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 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#8 render_screen_original::y#1 ] -zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 render_screen_original::y#8 render_screen_original::y#1 ] +zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 ] -reg byte x [ current_ypos#9 current_ypos#83 current_ypos#84 ] -zp ZP_BYTE:5 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_BYTE:6 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] -zp ZP_WORD:7 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] -zp ZP_BYTE:9 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:10 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::l#6 play_collision::l#1 ] -zp ZP_BYTE:11 [ render_current::l#4 render_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:12 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -zp ZP_BYTE:13 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 main::key_event#0 ] -reg byte x [ render_current::c#2 render_current::c#1 ] -reg byte x [ render_screen_render#18 render_screen_render#69 ] +reg byte y [ current_ypos#9 current_ypos#84 current_ypos#85 ] +zp ZP_BYTE:5 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_BYTE:6 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] +zp ZP_WORD:7 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] +reg byte x [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] +zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:11 [ 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:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 main::key_event#0 ] +reg byte x [ render_screen_render#19 render_screen_render#63 ] reg byte a [ play_move_rotate::return#1 ] reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] @@ -17134,7 +17369,7 @@ 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_BYTE:14 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -zp ZP_WORD:15 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] +zp ZP_WORD:15 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] zp ZP_BYTE:17 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_WORD:18 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] zp ZP_BYTE:20 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] @@ -17155,26 +17390,26 @@ reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte y [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] reg byte x [ render_screen_original::x#7 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:23 [ 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:24 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:25 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:26 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] -reg byte a [ main::$9 ] +zp ZP_BYTE:23 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:24 [ render_screen_showing#0 render_screen_showing#1 ] +zp ZP_BYTE:25 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:26 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:27 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] reg byte a [ keyboard_event_get::return#3 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$13 ] -zp ZP_BYTE:27 [ main::render#1 main::render#2 ] +reg byte a [ main::$12 ] +zp ZP_BYTE:28 [ 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::$14 ] +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::$15 ] +reg byte a [ main::$14 ] reg byte a [ main::render#3 ] reg byte a [ render_current::$5 ] -zp ZP_WORD:28 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +zp ZP_WORD:29 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] @@ -17182,7 +17417,7 @@ 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:30 [ play_collision::i#1 ] +zp ZP_BYTE:31 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] @@ -17218,15 +17453,17 @@ reg byte a [ play_init::$1 ] reg byte a [ sprites_init::s2#0 ] reg byte a [ render_init::$22 ] reg byte a [ render_init::$23 ] -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 ] +reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::ptr#0 ] +reg byte x [ sprites_irq::ptr#3 ] +reg byte x [ sprites_irq::ptr#4 ] +reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#1 ] +reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 448735 +Score: 3208568 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -17310,10 +17547,11 @@ Score: 448735 .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label keyboard_events_size = $16 + .label render_screen_showing = $18 .label irq_raster_next = $17 - .label irq_sprite_ypos = $18 - .label irq_sprite_ptr = $19 - .label irq_cnt = $1a + .label irq_sprite_ypos = $19 + .label irq_sprite_ptr = $1a + .label irq_cnt = $1b .label current_movedown_counter = 4 .label current_ypos = $e .label current_piece_gfx = $12 @@ -17324,571 +17562,566 @@ Score: 448735 .label render_screen_show = 2 .label current_piece = $f .label current_piece_12 = 7 - .label render_screen_render_27 = 5 + .label render_screen_render_28 = 5 .label current_xpos_47 = 6 - .label current_piece_gfx_52 = 7 - .label current_piece_char_62 = 9 - .label render_screen_render_68 = 5 - .label current_xpos_109 = 6 + .label current_piece_gfx_53 = 7 + .label render_screen_render_62 = 5 .label current_xpos_110 = 6 - .label current_piece_gfx_99 = 7 + .label current_xpos_111 = 6 .label current_piece_gfx_100 = 7 - .label current_piece_char_87 = 9 - .label current_piece_char_88 = 9 - .label current_piece_73 = 7 + .label current_piece_gfx_101 = 7 .label current_piece_74 = 7 .label current_piece_75 = 7 .label current_piece_76 = 7 + .label current_piece_77 = 7 //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 @20 -//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 @21 -//SEG9 [4] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta render_screen_showing +//SEG5 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" }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ .import binary "nes-screen.iscr" }} +//SEG7 @20 +//SEG8 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 } } }} +//SEG9 @21 +//SEG10 [5] (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 +//SEG11 [6] (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 @21 to toSpritePtr1 [phi:@21->toSpritePtr1] -//SEG12 toSpritePtr1 -//SEG13 @33 -//SEG14 [7] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG12 [7] phi from @21 to toSpritePtr1 [phi:@21->toSpritePtr1] +//SEG13 toSpritePtr1 +//SEG14 @33 +//SEG15 [8] (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 +//SEG16 [9] (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 @33 to @32 [phi:@33->@32] -//SEG17 @32 -//SEG18 [10] call main -//SEG19 [12] phi from @32 to main [phi:@32->main] +//SEG17 [10] phi from @33 to @32 [phi:@33->@32] +//SEG18 @32 +//SEG19 [11] call main +//SEG20 [13] phi from @32 to main [phi:@32->main] jsr main -//SEG20 [11] phi from @32 to @end [phi:@32->@end] -//SEG21 @end -//SEG22 main +//SEG21 [12] phi from @32 to @end [phi:@32->@end] +//SEG22 @end +//SEG23 main main: { .label key_event = $d - .label render = $1b - //SEG23 [13] call sid_rnd_init + .label render = $1c + //SEG24 [14] call sid_rnd_init jsr sid_rnd_init - //SEG24 main::@15 - //SEG25 asm { sei } + //SEG25 main::@15 + //SEG26 asm { sei } sei - //SEG26 [15] call render_init - //SEG27 [373] phi from main::@15 to render_init [phi:main::@15->render_init] + //SEG27 [16] call render_init + //SEG28 [372] phi from main::@15 to render_init [phi:main::@15->render_init] jsr render_init - //SEG28 [16] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - //SEG29 main::@16 - //SEG30 [17] call sprites_init + //SEG29 [17] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG30 main::@16 + //SEG31 [18] call sprites_init jsr sprites_init - //SEG31 [18] phi from main::@16 to main::@17 [phi:main::@16->main::@17] - //SEG32 main::@17 - //SEG33 [19] call sprites_irq_init + //SEG32 [19] phi from main::@16 to main::@17 [phi:main::@16->main::@17] + //SEG33 main::@17 + //SEG34 [20] call sprites_irq_init jsr sprites_irq_init - //SEG34 [20] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - //SEG35 main::@18 - //SEG36 [21] call play_init - //SEG37 [338] phi from main::@18 to play_init [phi:main::@18->play_init] + //SEG35 [21] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG36 main::@18 + //SEG37 [22] call play_init + //SEG38 [337] phi from main::@18 to play_init [phi:main::@18->play_init] jsr play_init - //SEG38 [22] phi from main::@18 to main::@19 [phi:main::@18->main::@19] - //SEG39 main::@19 - //SEG40 [23] call play_spawn_current - //SEG41 [210] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] + //SEG39 [23] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG40 main::@19 + //SEG41 [24] call play_spawn_current + //SEG42 [208] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] jsr play_spawn_current - //SEG42 [24] phi from main::@19 to main::@20 [phi:main::@19->main::@20] - //SEG43 main::@20 - //SEG44 [25] call render_playfield - //SEG45 [97] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] - //SEG46 [97] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 + //SEG43 [25] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG44 main::@20 + //SEG45 [26] call render_playfield + //SEG46 [95] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] + //SEG47 [95] phi (byte) render_screen_render#19 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield - //SEG47 main::@21 - //SEG48 [26] (byte~) current_ypos#83 ← (byte) current_ypos#18 -- vbuxx=vbuz1 - ldx current_ypos - //SEG49 [27] (byte~) current_xpos#109 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG48 main::@21 + //SEG49 [27] (byte~) current_ypos#84 ← (byte) current_ypos#18 -- vbuyy=vbuz1 + ldy current_ypos + //SEG50 [28] (byte~) current_xpos#110 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_109 - //SEG50 [28] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_110 + //SEG51 [29] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_99 + sta current_piece_gfx_100 lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG51 [29] (byte~) current_piece_char#87 ← (byte) current_piece_char#12 -- vbuz1=vbuz2 - lda current_piece_char - sta current_piece_char_87 - //SEG52 [30] call render_current - //SEG53 [74] phi from main::@21 to render_current [phi:main::@21->render_current] - //SEG54 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#87 [phi:main::@21->render_current#0] -- register_copy - //SEG55 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#99 [phi:main::@21->render_current#1] -- register_copy - //SEG56 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#109 [phi:main::@21->render_current#2] -- register_copy - //SEG57 [74] phi (byte) render_screen_render#27 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 + sta current_piece_gfx_100+1 + //SEG52 [30] (byte~) current_piece_char#88 ← (byte) current_piece_char#12 -- vbuxx=vbuz1 + ldx current_piece_char + //SEG53 [31] call render_current + //SEG54 [72] phi from main::@21 to render_current [phi:main::@21->render_current] + //SEG55 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#88 [phi:main::@21->render_current#0] -- register_copy + //SEG56 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#100 [phi:main::@21->render_current#1] -- register_copy + //SEG57 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@21->render_current#2] -- register_copy + //SEG58 [72] phi (byte) render_screen_render#28 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_current#3] -- vbuz1=vbuc1 lda #$40 - sta render_screen_render_27 - //SEG58 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#83 [phi:main::@21->render_current#4] -- register_copy + sta render_screen_render_28 + //SEG59 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@21->render_current#4] -- register_copy jsr render_current - //SEG59 [31] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG60 [32] (byte*~) current_piece#71 ← (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 - //SEG60 [32] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - //SEG61 [32] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG61 [33] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG62 [33] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG62 [32] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG63 [33] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG63 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy - //SEG64 [32] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy - //SEG65 [32] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy - //SEG66 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy - //SEG67 [32] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 + //SEG64 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#2] -- register_copy + //SEG65 [33] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#3] -- register_copy + //SEG66 [33] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#4] -- register_copy + //SEG67 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#5] -- register_copy + //SEG68 [33] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#6] -- vbuz1=vbuc1 sta current_orientation - //SEG68 [32] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy - //SEG69 [32] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 + //SEG69 [33] phi (byte*) current_piece#16 = (byte*~) current_piece#71 [phi:main::@21->main::@1#7] -- register_copy + //SEG70 [33] phi (byte) render_screen_render#16 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#8] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG70 [32] phi (byte) render_screen_show#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 + //SEG71 [33] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#9] -- vbuz1=vbuc1 lda #0 sta render_screen_show - //SEG71 main::@1 - //SEG72 main::@4 + //SEG72 [33] phi from main::@28 to main::@1 [phi:main::@28->main::@1] + //SEG73 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#0] -- register_copy + //SEG74 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#1] -- register_copy + //SEG75 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#2] -- register_copy + //SEG76 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#3] -- register_copy + //SEG77 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#4] -- register_copy + //SEG78 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#5] -- register_copy + //SEG79 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#6] -- register_copy + //SEG80 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#7] -- register_copy + //SEG81 main::@1 + //SEG82 main::@4 b4: - //SEG73 [33] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG83 [34] 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 - //SEG74 main::@6 - //SEG75 [34] (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 - lda render_screen_show - lsr - lsr - lsr - lsr - //SEG76 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuaa - sta BORDERCOL - //SEG77 [36] call render_show + //SEG84 [35] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + //SEG85 main::@6 + //SEG86 [36] call render_show jsr render_show - //SEG78 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] - //SEG79 main::@23 - //SEG80 [38] call keyboard_event_scan - //SEG81 [276] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] + //SEG87 [37] phi from main::@6 to main::@23 [phi:main::@6->main::@23] + //SEG88 main::@23 + //SEG89 [38] call keyboard_event_scan + //SEG90 [274] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] jsr keyboard_event_scan - //SEG82 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG83 main::@24 - //SEG84 [40] call keyboard_event_get + //SEG91 [39] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG92 main::@24 + //SEG93 [40] call keyboard_event_get jsr keyboard_event_get - //SEG85 [41] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG94 [41] (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 - //SEG86 main::@25 - //SEG87 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG95 main::@25 + //SEG96 [42] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG88 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG89 [44] call play_move_down + //SEG97 [43] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG98 [44] call play_move_down jsr play_move_down - //SEG90 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx + //SEG99 [45] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx txa - //SEG91 main::@26 - //SEG92 [46] (byte~) main::$13 ← (byte) play_move_down::return#3 - // (byte~) main::$13 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG93 [47] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$13 -- vbuz1=vbuc1_plus_vbuaa + //SEG100 main::@26 + //SEG101 [46] (byte~) main::$12 ← (byte) play_move_down::return#3 + // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a + //SEG102 [47] (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 - //SEG94 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG103 [48] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG95 [49] call play_move_leftright + //SEG104 [49] call play_move_leftright jsr play_move_leftright - //SEG96 [50] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + //SEG105 [50] (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 - //SEG97 main::@27 - //SEG98 [51] (byte~) main::$14 ← (byte) play_move_leftright::return#4 - // (byte~) main::$14 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG99 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$14 -- vbuz1=vbuz1_plus_vbuaa + //SEG106 main::@27 + //SEG107 [51] (byte~) main::$13 ← (byte) play_move_leftright::return#4 + // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a + //SEG108 [52] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG100 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG109 [53] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG101 [54] call play_move_rotate + //SEG110 [54] call play_move_rotate jsr play_move_rotate - //SEG102 [55] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + //SEG111 [55] (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 - //SEG103 main::@28 - //SEG104 [56] (byte~) main::$15 ← (byte) play_move_rotate::return#4 - // (byte~) main::$15 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG105 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$15 -- vbuaa=vbuz1_plus_vbuaa + //SEG112 main::@28 + //SEG113 [56] (byte~) main::$14 ← (byte) play_move_rotate::return#4 + // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a + //SEG114 [57] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG106 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuaa_eq_0_then_la1 + //SEG115 [58] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 - beq b7 - //SEG107 main::@13 - //SEG108 [59] (byte~) render_screen_render#69 ← (byte) render_screen_render#15 -- vbuxx=vbuz1 + beq b4 + //SEG116 main::@13 + //SEG117 [59] (byte~) render_screen_render#63 ← (byte) render_screen_render#16 -- vbuxx=vbuz1 ldx render_screen_render - //SEG109 [60] call render_playfield - //SEG110 [97] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] - //SEG111 [97] phi (byte) render_screen_render#18 = (byte~) render_screen_render#69 [phi:main::@13->render_playfield#0] -- register_copy + //SEG118 [60] call render_playfield + //SEG119 [95] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] + //SEG120 [95] phi (byte) render_screen_render#19 = (byte~) render_screen_render#63 [phi:main::@13->render_playfield#0] -- register_copy jsr render_playfield - //SEG112 main::@29 - //SEG113 [61] (byte~) current_ypos#84 ← (byte) current_ypos#13 -- vbuxx=vbuz1 - ldx current_ypos - //SEG114 [62] (byte~) render_screen_render#68 ← (byte) render_screen_render#15 -- vbuz1=vbuz2 + //SEG121 main::@29 + //SEG122 [61] (byte~) current_ypos#85 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + ldy current_ypos + //SEG123 [62] (byte~) render_screen_render#62 ← (byte) render_screen_render#16 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_68 - //SEG115 [63] (byte~) current_xpos#110 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_62 + //SEG124 [63] (byte~) current_xpos#111 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_110 - //SEG116 [64] (byte*~) current_piece_gfx#100 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_111 + //SEG125 [64] (byte*~) current_piece_gfx#101 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_100 + sta current_piece_gfx_101 lda current_piece_gfx+1 - sta current_piece_gfx_100+1 - //SEG117 [65] (byte~) current_piece_char#88 ← (byte) current_piece_char#1 -- vbuz1=vbuz2 - lda current_piece_char - sta current_piece_char_88 - //SEG118 [66] call render_current - //SEG119 [74] phi from main::@29 to render_current [phi:main::@29->render_current] - //SEG120 [74] phi (byte) current_piece_char#62 = (byte~) current_piece_char#88 [phi:main::@29->render_current#0] -- register_copy - //SEG121 [74] phi (byte*) current_piece_gfx#52 = (byte*~) current_piece_gfx#100 [phi:main::@29->render_current#1] -- register_copy - //SEG122 [74] phi (byte) current_xpos#47 = (byte~) current_xpos#110 [phi:main::@29->render_current#2] -- register_copy - //SEG123 [74] phi (byte) render_screen_render#27 = (byte~) render_screen_render#68 [phi:main::@29->render_current#3] -- register_copy - //SEG124 [74] phi (byte) current_ypos#9 = (byte~) current_ypos#84 [phi:main::@29->render_current#4] -- register_copy + sta current_piece_gfx_101+1 + //SEG126 [65] (byte~) current_piece_char#89 ← (byte) current_piece_char#1 -- vbuxx=vbuz1 + ldx current_piece_char + //SEG127 [66] call render_current + //SEG128 [72] phi from main::@29 to render_current [phi:main::@29->render_current] + //SEG129 [72] phi (byte) current_piece_char#63 = (byte~) current_piece_char#89 [phi:main::@29->render_current#0] -- register_copy + //SEG130 [72] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#101 [phi:main::@29->render_current#1] -- register_copy + //SEG131 [72] phi (byte) current_xpos#47 = (byte~) current_xpos#111 [phi:main::@29->render_current#2] -- register_copy + //SEG132 [72] phi (byte) render_screen_render#28 = (byte~) render_screen_render#62 [phi:main::@29->render_current#3] -- register_copy + //SEG133 [72] phi (byte) current_ypos#9 = (byte~) current_ypos#85 [phi:main::@29->render_current#4] -- register_copy jsr render_current - //SEG125 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] - //SEG126 main::@30 - //SEG127 [68] call render_screen_swap + //SEG134 [67] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG135 main::@30 + //SEG136 [68] call render_screen_swap jsr render_screen_swap - //SEG128 [69] phi from main::@28 main::@30 to main::@7 [phi:main::@28/main::@30->main::@7] - //SEG129 [69] phi (byte) render_screen_render#31 = (byte) render_screen_render#15 [phi:main::@28/main::@30->main::@7#0] -- register_copy - //SEG130 [69] phi (byte) render_screen_show#24 = (byte) render_screen_show#15 [phi:main::@28/main::@30->main::@7#1] -- register_copy - //SEG131 main::@7 - b7: - //SEG132 [70] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 - lda #0 - sta BORDERCOL - //SEG133 [32] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - //SEG134 [32] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@7->main::@1#0] -- register_copy - //SEG135 [32] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@7->main::@1#1] -- register_copy - //SEG136 [32] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@7->main::@1#2] -- register_copy - //SEG137 [32] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG138 [32] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@7->main::@1#4] -- register_copy - //SEG139 [32] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@7->main::@1#5] -- register_copy - //SEG140 [32] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@7->main::@1#6] -- register_copy - //SEG141 [32] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@7->main::@1#7] -- register_copy - //SEG142 [32] phi (byte) render_screen_render#15 = (byte) render_screen_render#31 [phi:main::@7->main::@1#8] -- register_copy - //SEG143 [32] phi (byte) render_screen_show#15 = (byte) render_screen_show#24 [phi:main::@7->main::@1#9] -- register_copy + //SEG137 [33] phi from main::@30 to main::@1 [phi:main::@30->main::@1] + //SEG138 [33] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@30->main::@1#0] -- register_copy + //SEG139 [33] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@30->main::@1#1] -- register_copy + //SEG140 [33] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@30->main::@1#2] -- register_copy + //SEG141 [33] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@30->main::@1#3] -- register_copy + //SEG142 [33] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@30->main::@1#4] -- register_copy + //SEG143 [33] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@30->main::@1#5] -- register_copy + //SEG144 [33] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@30->main::@1#6] -- register_copy + //SEG145 [33] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@30->main::@1#7] -- register_copy + //SEG146 [33] phi (byte) render_screen_render#16 = (byte) render_screen_render#11 [phi:main::@30->main::@1#8] -- register_copy + //SEG147 [33] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@30->main::@1#9] -- register_copy jmp b4 } -//SEG144 render_screen_swap +//SEG148 render_screen_swap render_screen_swap: { - //SEG145 [71] (byte) render_screen_render#10 ← (byte) render_screen_render#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG149 [69] (byte) render_screen_render#11 ← (byte) render_screen_render#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG146 [72] (byte) render_screen_show#11 ← (byte) render_screen_show#15 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG150 [70] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show - //SEG147 render_screen_swap::@return - //SEG148 [73] return + //SEG151 render_screen_swap::@return + //SEG152 [71] return rts } -//SEG149 render_current +//SEG153 render_current render_current: { - .label ypos2 = $a - .label screen_line = $1c - .label xpos = $d - .label i = $c - .label l = $b - //SEG150 [75] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa + .label ypos2 = 9 + .label screen_line = $1d + .label xpos = $c + .label i = $b + .label l = $a + .label c = $d + //SEG154 [73] (byte) render_current::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + tya asl sta ypos2 - //SEG151 [76] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] - //SEG152 [76] 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 + //SEG155 [74] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG156 [74] 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 - //SEG153 [76] 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 + //SEG157 [74] 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 - //SEG154 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy - //SEG155 [76] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] - //SEG156 [76] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy - //SEG157 [76] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy - //SEG158 [76] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy - //SEG159 render_current::@1 + //SEG158 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG159 [74] phi from render_current::@3 to render_current::@1 [phi:render_current::@3->render_current::@1] + //SEG160 [74] phi (byte) render_current::l#4 = (byte) render_current::l#1 [phi:render_current::@3->render_current::@1#0] -- register_copy + //SEG161 [74] phi (byte) render_current::i#3 = (byte) render_current::i#8 [phi:render_current::@3->render_current::@1#1] -- register_copy + //SEG162 [74] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@3->render_current::@1#2] -- register_copy + //SEG163 render_current::@1 b1: - //SEG160 [77] 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 + //SEG164 [75] 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 !: - //SEG161 render_current::@7 + //SEG165 render_current::@7 b7: - //SEG162 [78] (byte) render_current::i#1 ← (byte) render_current::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG166 [76] (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 - //SEG163 [79] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] - //SEG164 [79] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy - //SEG165 render_current::@3 + //SEG167 [77] phi from render_current::@5 render_current::@7 to render_current::@3 [phi:render_current::@5/render_current::@7->render_current::@3] + //SEG168 [77] phi (byte) render_current::i#8 = (byte) render_current::i#10 [phi:render_current::@5/render_current::@7->render_current::@3#0] -- register_copy + //SEG169 render_current::@3 b3: - //SEG166 [80] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG170 [78] (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 - //SEG167 [81] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_current::l#1 ← ++ (byte) render_current::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [82] 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 + //SEG172 [80] 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 - //SEG169 render_current::@return - //SEG170 [83] return + //SEG173 render_current::@return + //SEG174 [81] return rts - //SEG171 render_current::@13 + //SEG175 render_current::@13 b13: - //SEG172 [84] 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 + //SEG176 [82] 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 bcc b2 jmp b7 - //SEG173 render_current::@2 + //SEG177 render_current::@2 b2: - //SEG174 [85] (byte~) render_current::$5 ← (byte) render_screen_render#27 + (byte) render_current::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 - lda render_screen_render_27 + //SEG178 [83] (byte~) render_current::$5 ← (byte) render_screen_render#28 + (byte) render_current::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + lda render_screen_render_28 clc adc ypos2 - //SEG175 [86] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuaa + //SEG179 [84] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_current::$5) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG176 [87] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 + //SEG180 [85] (byte) render_current::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 lda current_xpos_47 sta xpos - //SEG177 [88] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] - //SEG178 [88] 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 - //SEG179 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy - //SEG180 [88] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy - //SEG181 [88] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] - //SEG182 [88] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy - //SEG183 [88] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy - //SEG184 [88] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy - //SEG185 render_current::@4 + //SEG181 [86] phi from render_current::@2 to render_current::@4 [phi:render_current::@2->render_current::@4] + //SEG182 [86] 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 + //SEG183 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@2->render_current::@4#1] -- register_copy + //SEG184 [86] phi (byte) render_current::i#4 = (byte) render_current::i#3 [phi:render_current::@2->render_current::@4#2] -- register_copy + //SEG185 [86] phi from render_current::@5 to render_current::@4 [phi:render_current::@5->render_current::@4] + //SEG186 [86] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@5->render_current::@4#0] -- register_copy + //SEG187 [86] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@5->render_current::@4#1] -- register_copy + //SEG188 [86] phi (byte) render_current::i#4 = (byte) render_current::i#10 [phi:render_current::@5->render_current::@4#2] -- register_copy + //SEG189 render_current::@4 b4: - //SEG186 [89] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#52 + (byte) render_current::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG190 [87] (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_52),y - //SEG187 [90] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_53),y + //SEG191 [88] (byte) render_current::i#10 ← ++ (byte) render_current::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG188 [91] 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 + //SEG192 [89] 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 - //SEG189 render_current::@9 - //SEG190 [92] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG193 render_current::@9 + //SEG194 [90] 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 - //SEG191 render_current::@10 - //SEG192 [93] *((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 + //SEG195 render_current::@10 + //SEG196 [91] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_char#63 -- pbuz1_derefidx_vbuz2=vbuxx + tay + txa sta (screen_line),y - //SEG193 render_current::@5 + //SEG197 render_current::@5 b5: - //SEG194 [94] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG198 [92] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG195 [95] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx - inx - //SEG196 [96] 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 + //SEG199 [93] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + inc c + //SEG200 [94] 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 b4 jmp b3 } -//SEG197 render_playfield +//SEG201 render_playfield render_playfield: { .label screen_line = 7 .label i = 6 .label c = 9 .label l = 5 - //SEG198 [98] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG199 [98] 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 + //SEG202 [96] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG203 [96] 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 - //SEG200 [98] 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 + //SEG204 [96] 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 - //SEG201 [98] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG202 [98] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG203 [98] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG204 render_playfield::@1 + //SEG205 [96] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG206 [96] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG207 [96] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG208 render_playfield::@1 b1: - //SEG205 [99] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG209 [97] (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 - //SEG206 [100] (byte~) render_playfield::$3 ← (byte) render_screen_render#18 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG210 [98] (byte~) render_playfield::$3 ← (byte) render_screen_render#19 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG207 [101] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG211 [99] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG208 [102] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG209 [102] 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 + //SEG212 [100] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG213 [100] 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 - //SEG210 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG211 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG212 [102] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG213 [102] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG214 [102] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG215 [102] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG216 render_playfield::@2 + //SEG214 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG215 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG216 [100] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG217 [100] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG218 [100] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG219 [100] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG220 render_playfield::@2 b2: - //SEG217 [103] *((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 + //SEG221 [101] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG218 [104] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG222 [102] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG219 [105] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG223 [103] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG220 [106] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG224 [104] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG221 [107] 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 + //SEG225 [105] 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 - //SEG222 render_playfield::@3 - //SEG223 [108] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG226 render_playfield::@3 + //SEG227 [106] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG224 [109] 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 + //SEG228 [107] 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 - //SEG225 render_playfield::@return - //SEG226 [110] return + //SEG229 render_playfield::@return + //SEG230 [108] return rts } -//SEG227 play_move_rotate +//SEG231 play_move_rotate play_move_rotate: { .label orientation = 5 - //SEG228 [111] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG232 [109] 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 - //SEG229 play_move_rotate::@6 - //SEG230 [112] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG233 play_move_rotate::@6 + //SEG234 [110] 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 - //SEG231 [113] 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] + //SEG235 [111] 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: - //SEG232 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG233 [113] 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 - //SEG234 [113] 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 + //SEG236 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG237 [111] 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 + //SEG238 [111] 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 - //SEG235 play_move_rotate::@return + //SEG239 play_move_rotate::@return breturn: - //SEG236 [114] return + //SEG240 [112] return rts - //SEG237 play_move_rotate::@2 + //SEG241 play_move_rotate::@2 b2: - //SEG238 [115] (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 + //SEG242 [113] (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 - //SEG239 [116] (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 + //SEG243 [114] (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 - //SEG240 [117] 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] - //SEG241 [117] 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 - //SEG242 play_move_rotate::@4 + //SEG244 [115] 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] + //SEG245 [115] 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 + //SEG246 play_move_rotate::@4 b4: - //SEG243 [118] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG247 [116] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG244 [119] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + //SEG248 [117] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 ldy current_ypos - //SEG245 [120] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG249 [118] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG246 [121] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG250 [119] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_77 lda current_piece+1 - sta current_piece_76+1 - //SEG247 [122] call play_collision - //SEG248 [130] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] - //SEG249 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG250 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG251 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG252 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + sta current_piece_77+1 + //SEG251 [120] call play_collision + //SEG252 [128] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG253 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG254 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG255 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG256 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG253 [123] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + //SEG257 [121] (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 - //SEG254 play_move_rotate::@14 - //SEG255 [124] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + //SEG258 play_move_rotate::@14 + //SEG259 [122] (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 - //SEG256 [125] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG260 [123] 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 - //SEG257 play_move_rotate::@11 - //SEG258 [126] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG261 play_move_rotate::@11 + //SEG262 [124] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG259 [127] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG263 [125] (byte*) current_piece_gfx#3 ← (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 - //SEG260 [113] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG261 [113] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG262 [113] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG263 [113] 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 + //SEG264 [111] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG265 [111] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG266 [111] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG267 [111] 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 - //SEG264 play_move_rotate::@1 + //SEG268 play_move_rotate::@1 b1: - //SEG265 [128] (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 + //SEG269 [126] (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 - //SEG266 [129] (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 + //SEG270 [127] (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 } -//SEG267 play_collision +//SEG271 play_collision play_collision: { .label xpos = 6 .label piece_gfx = 7 .label ypos2 = 9 - .label playfield_line = $1c - .label i = $1e + .label playfield_line = $1d + .label i = $1f .label col = $c .label l = $a .label i_2 = $b .label i_3 = $b .label i_11 = $b .label i_13 = $b - //SEG268 [131] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG272 [129] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -17896,551 +18129,551 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG269 [132] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG273 [130] (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 - //SEG270 [133] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] - //SEG271 [133] 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 + //SEG274 [131] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG275 [131] 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 - //SEG272 [133] 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 + //SEG276 [131] 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 - //SEG273 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy - //SEG274 play_collision::@1 + //SEG277 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG278 play_collision::@1 b1: - //SEG275 [134] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG279 [132] (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 - //SEG276 [135] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG280 [133] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG277 [136] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG278 [136] 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 + //SEG281 [134] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG282 [134] 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 - //SEG279 [136] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG280 [136] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG281 play_collision::@2 + //SEG283 [134] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG284 [134] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG285 play_collision::@2 b2: - //SEG282 [137] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG286 [135] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG283 [138] 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 + //SEG287 [136] 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 - //SEG284 play_collision::@8 - //SEG285 [139] 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 + //SEG288 play_collision::@8 + //SEG289 [137] 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 - //SEG286 [140] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG287 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG290 [138] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG291 [138] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG288 play_collision::@return + //SEG292 play_collision::@return breturn: - //SEG289 [141] return + //SEG293 [139] return rts - //SEG290 play_collision::@4 + //SEG294 play_collision::@4 b4: - //SEG291 [142] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG295 [140] (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 - //SEG292 [143] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG296 [141] 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 - //SEG293 [140] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG294 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG297 [138] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG298 [138] 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 - //SEG295 play_collision::@5 + //SEG299 play_collision::@5 b5: - //SEG296 [144] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG300 [142] 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 - //SEG297 [140] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG298 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG301 [138] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG302 [138] 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 - //SEG299 play_collision::@6 + //SEG303 play_collision::@6 b6: - //SEG300 [145] 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 + //SEG304 [143] 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 - //SEG301 [140] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG302 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG305 [138] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG306 [138] 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 - //SEG303 play_collision::@3 + //SEG307 play_collision::@3 b3: - //SEG304 [146] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG308 [144] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG305 [147] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG309 [145] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG306 [148] 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 + //SEG310 [146] 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 - //SEG307 play_collision::@17 - //SEG308 [149] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG311 play_collision::@17 + //SEG312 [147] (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 - //SEG309 [150] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG313 [148] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG310 [151] 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 + //SEG314 [149] 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 - //SEG311 [140] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] - //SEG312 [140] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG315 [138] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG316 [138] 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 - //SEG313 play_collision::@20 + //SEG317 play_collision::@20 b20: - //SEG314 [152] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG318 [150] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG315 [133] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] - //SEG316 [133] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG317 [133] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG318 [133] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG319 [131] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG320 [131] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG321 [131] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG322 [131] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG319 play_collision::@21 + //SEG323 play_collision::@21 b21: - //SEG320 [153] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG324 [151] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG321 [136] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] - //SEG322 [136] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG323 [136] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG324 [136] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG325 [134] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG326 [134] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG327 [134] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG328 [134] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG325 play_move_leftright +//SEG329 play_move_leftright play_move_leftright: { - //SEG326 [154] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG330 [152] 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 - //SEG327 play_move_leftright::@6 - //SEG328 [155] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG331 play_move_leftright::@6 + //SEG332 [153] 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 - //SEG329 play_move_leftright::@7 - //SEG330 [156] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG333 play_move_leftright::@7 + //SEG334 [154] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG331 [157] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + //SEG335 [155] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 ldy current_ypos - //SEG332 [158] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG336 [156] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG333 [159] (byte*~) current_piece#75 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG337 [157] (byte*~) current_piece#76 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_76 + lda current_piece+1 + sta current_piece_76+1 + //SEG338 [158] call play_collision + //SEG339 [128] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG340 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG341 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG342 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG343 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG344 [159] (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 + //SEG345 play_move_leftright::@15 + //SEG346 [160] (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 + //SEG347 [161] 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 + //SEG348 play_move_leftright::@8 + //SEG349 [162] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG350 [163] 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: + //SEG351 [163] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG352 [163] 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 + //SEG353 [163] 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: + //SEG354 [163] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG355 [163] 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 + //SEG356 play_move_leftright::@return + breturn: + //SEG357 [164] return + rts + //SEG358 play_move_leftright::@1 + b1: + //SEG359 [165] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx play_collision.xpos + //SEG360 [166] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + ldy current_ypos + //SEG361 [167] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + ldx current_orientation + //SEG362 [168] (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 - //SEG334 [160] call play_collision - //SEG335 [130] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] - //SEG336 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG337 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG338 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG339 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG363 [169] call play_collision + //SEG364 [128] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG365 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG366 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG367 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG368 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#75 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG340 [161] (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 - //SEG341 play_move_leftright::@15 - //SEG342 [162] (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 - //SEG343 [163] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG369 [170] (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 + //SEG370 play_move_leftright::@14 + //SEG371 [171] (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 + //SEG372 [172] 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 - //SEG344 play_move_leftright::@8 - //SEG345 [164] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 - inc current_xpos - //SEG346 [165] 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: - //SEG347 [165] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG348 [165] 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 - //SEG349 [165] 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] + //SEG373 play_move_leftright::@11 + //SEG374 [173] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp b2 +} +//SEG375 play_move_down +play_move_down: { + //SEG376 [174] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + inc current_movedown_counter + //SEG377 [175] 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 + //SEG378 [176] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG379 play_move_down::@8 + //SEG380 [177] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG381 [177] 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 + //SEG382 [177] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b3: - //SEG350 [165] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG351 [165] 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 - //SEG352 play_move_leftright::@return - breturn: - //SEG353 [166] return - rts - //SEG354 play_move_leftright::@1 + //SEG383 [177] 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 + //SEG384 play_move_down::@1 b1: - //SEG355 [167] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx play_collision.xpos - //SEG356 [168] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 + //SEG385 [178] call keyboard_event_pressed + //SEG386 [263] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG387 [263] 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 + //SEG388 [179] (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 + //SEG389 play_move_down::@17 + //SEG390 [180] (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 + //SEG391 [181] 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 + //SEG392 play_move_down::@9 + //SEG393 [182] 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 + //SEG394 play_move_down::@10 + //SEG395 [183] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + inx + //SEG396 [184] 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] + //SEG397 [184] 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 + //SEG398 play_move_down::@2 + b2: + //SEG399 [185] 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 + //SEG400 play_move_down::@11 + //SEG401 [186] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + inx + //SEG402 [187] 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] + //SEG403 [187] 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 + //SEG404 play_move_down::@4 + b4: + //SEG405 [188] 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 + //SEG406 play_move_down::@12 + //SEG407 [189] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos - //SEG357 [169] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + iny + //SEG408 [190] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + lda current_xpos + sta play_collision.xpos + //SEG409 [191] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 ldx current_orientation - //SEG358 [170] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG410 [192] (byte*~) current_piece#74 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece sta current_piece_74 lda current_piece+1 sta current_piece_74+1 - //SEG359 [171] call play_collision - //SEG360 [130] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG361 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG362 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG363 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG364 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG411 [193] call play_collision + //SEG412 [128] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG413 [128] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG414 [128] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG415 [128] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG416 [128] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG365 [172] (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 - //SEG366 play_move_leftright::@14 - //SEG367 [173] (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 - //SEG368 [174] 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 - //SEG369 play_move_leftright::@11 - //SEG370 [175] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b2 -} -//SEG371 play_move_down -play_move_down: { - //SEG372 [176] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 - inc current_movedown_counter - //SEG373 [177] 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 - //SEG374 [178] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG375 play_move_down::@8 - //SEG376 [179] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG377 [179] 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 - //SEG378 [179] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] - b3: - //SEG379 [179] 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 - //SEG380 play_move_down::@1 - b1: - //SEG381 [180] call keyboard_event_pressed - //SEG382 [265] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG383 [265] 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 - //SEG384 [181] (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 - //SEG385 play_move_down::@17 - //SEG386 [182] (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 - //SEG387 [183] 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 - //SEG388 play_move_down::@9 - //SEG389 [184] 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 - //SEG390 play_move_down::@10 - //SEG391 [185] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx - //SEG392 [186] 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] - //SEG393 [186] 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 - //SEG394 play_move_down::@2 - b2: - //SEG395 [187] 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 - //SEG396 play_move_down::@11 - //SEG397 [188] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx - //SEG398 [189] 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] - //SEG399 [189] 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 - //SEG400 play_move_down::@4 - b4: - //SEG401 [190] 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 - //SEG402 play_move_down::@12 - //SEG403 [191] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 - ldy current_ypos - iny - //SEG404 [192] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 - lda current_xpos - sta play_collision.xpos - //SEG405 [193] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 - ldx current_orientation - //SEG406 [194] (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 - //SEG407 [195] call play_collision - //SEG408 [130] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] - //SEG409 [130] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG410 [130] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG411 [130] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG412 [130] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_down::@12->play_collision#3] -- register_copy - jsr play_collision - //SEG413 [196] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + //SEG417 [194] (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 - //SEG414 play_move_down::@18 - //SEG415 [197] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG418 play_move_down::@18 + //SEG419 [195] (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 - //SEG416 [198] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG420 [196] 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 - //SEG417 [199] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG418 play_move_down::@13 - //SEG419 [200] call play_lock_current + //SEG421 [197] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG422 play_move_down::@13 + //SEG423 [198] call play_lock_current jsr play_lock_current - //SEG420 [201] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG421 play_move_down::@19 - //SEG422 [202] call play_remove_lines - //SEG423 [226] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG424 [199] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG425 play_move_down::@19 + //SEG426 [200] call play_remove_lines + //SEG427 [224] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] jsr play_remove_lines - //SEG424 [203] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] - //SEG425 play_move_down::@20 - //SEG426 [204] call play_spawn_current - //SEG427 [210] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + //SEG428 [201] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG429 play_move_down::@20 + //SEG430 [202] call play_spawn_current + //SEG431 [208] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] jsr play_spawn_current - //SEG428 [205] (byte*~) current_piece#77 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG432 [203] (byte*~) current_piece#78 ← (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 - //SEG429 [206] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] - //SEG430 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG431 [206] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy - //SEG432 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG433 [206] 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 + //SEG433 [204] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG434 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG435 [204] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@20->play_move_down::@7#1] -- register_copy + //SEG436 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG437 [204] 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 - //SEG434 [206] phi (byte*) current_piece#20 = (byte*~) current_piece#77 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG435 [206] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy - //SEG436 play_move_down::@7 + //SEG438 [204] phi (byte*) current_piece#20 = (byte*~) current_piece#78 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG439 [204] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@20->play_move_down::@7#5] -- register_copy + //SEG440 play_move_down::@7 b7: - //SEG437 [207] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG438 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG439 [207] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG440 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG441 [207] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG442 [207] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG443 [207] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG444 [207] 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 + //SEG441 [205] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG442 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG443 [205] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG444 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG445 [205] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG446 [205] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG447 [205] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG448 [205] 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 - //SEG445 [207] 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 + //SEG449 [205] 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 - //SEG446 [207] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG450 [205] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG447 [207] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG448 [207] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG449 [207] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG450 [207] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG451 [207] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG452 [207] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG453 [207] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG454 [207] 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 + //SEG451 [205] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG452 [205] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG453 [205] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG454 [205] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG455 [205] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG456 [205] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG457 [205] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG458 [205] 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 - //SEG455 play_move_down::@return + //SEG459 play_move_down::@return breturn: - //SEG456 [208] return + //SEG460 [206] return rts - //SEG457 play_move_down::@6 + //SEG461 play_move_down::@6 b6: - //SEG458 [209] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG462 [207] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG459 [206] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG460 [206] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG461 [206] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG462 [206] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG463 [206] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG464 [206] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG465 [206] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG463 [204] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG464 [204] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG465 [204] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG466 [204] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG467 [204] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG468 [204] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG469 [204] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG466 play_spawn_current +//SEG470 play_spawn_current play_spawn_current: { .label _3 = 4 - //SEG467 [211] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] - //SEG468 [211] 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 + //SEG471 [209] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG472 [209] 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 - //SEG469 play_spawn_current::@1 + //SEG473 play_spawn_current::@1 b1: - //SEG470 [212] 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 + //SEG474 [210] 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 - //SEG471 play_spawn_current::@3 - //SEG472 [213] (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 + //SEG475 play_spawn_current::@3 + //SEG476 [211] (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 - //SEG473 [214] (byte*) current_piece_gfx#16 ← (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 + //SEG477 [212] (byte*) current_piece_gfx#16 ← (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 - //SEG474 [215] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG478 [213] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG475 [216] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG479 [214] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG476 [217] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG480 [215] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG477 play_spawn_current::@return - //SEG478 [218] return + //SEG481 play_spawn_current::@return + //SEG482 [216] return rts - //SEG479 [219] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG480 play_spawn_current::@2 + //SEG483 [217] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG484 play_spawn_current::@2 b2: - //SEG481 [220] call sid_rnd + //SEG485 [218] call sid_rnd jsr sid_rnd - //SEG482 [221] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG486 [219] (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 - //SEG483 play_spawn_current::@7 - //SEG484 [222] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG487 play_spawn_current::@7 + //SEG488 [220] (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 - //SEG485 [223] (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 + //SEG489 [221] (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 - //SEG486 [211] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] - //SEG487 [211] 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 + //SEG490 [209] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG491 [209] 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 } -//SEG488 sid_rnd +//SEG492 sid_rnd sid_rnd: { - //SEG489 [224] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG493 [222] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG490 sid_rnd::@return - //SEG491 [225] return + //SEG494 sid_rnd::@return + //SEG495 [223] return rts } -//SEG492 play_remove_lines +//SEG496 play_remove_lines play_remove_lines: { .label c = 9 .label x = 5 .label y = 4 .label full = 6 - //SEG493 [227] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG494 [227] 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 + //SEG497 [225] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG498 [225] 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 - //SEG495 [227] 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 + //SEG499 [225] 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 - //SEG496 [227] 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 + //SEG500 [225] 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 - //SEG497 [227] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] - //SEG498 [227] 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 - //SEG499 [227] 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 - //SEG500 [227] 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 - //SEG501 play_remove_lines::@1 + //SEG501 [225] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG502 [225] 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 + //SEG503 [225] 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 + //SEG504 [225] 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 + //SEG505 play_remove_lines::@1 b1: - //SEG502 [228] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG503 [228] 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 + //SEG506 [226] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG507 [226] 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 - //SEG504 [228] 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 + //SEG508 [226] 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 - //SEG505 [228] 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 - //SEG506 [228] 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 - //SEG507 [228] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG508 [228] 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 - //SEG509 [228] 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 - //SEG510 [228] 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 - //SEG511 [228] 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 - //SEG512 play_remove_lines::@2 + //SEG509 [226] 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 + //SEG510 [226] 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 + //SEG511 [226] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG512 [226] 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 + //SEG513 [226] 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 + //SEG514 [226] 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 + //SEG515 [226] 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 + //SEG516 play_remove_lines::@2 b2: - //SEG513 [229] (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 + //SEG517 [227] (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 - //SEG514 [230] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG518 [228] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG515 [231] 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 + //SEG519 [229] 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 - //SEG516 [232] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG517 [232] 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 + //SEG520 [230] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG521 [230] 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 - //SEG518 play_remove_lines::@3 + //SEG522 play_remove_lines::@3 b3: - //SEG519 [233] *((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 + //SEG523 [231] *((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 - //SEG520 [234] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG524 [232] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG521 [235] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG525 [233] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG522 [236] 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 + //SEG526 [234] 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 - //SEG523 play_remove_lines::@9 - //SEG524 [237] 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 + //SEG527 play_remove_lines::@9 + //SEG528 [235] 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 - //SEG525 play_remove_lines::@10 - //SEG526 [238] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG529 play_remove_lines::@10 + //SEG530 [236] (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 - //SEG527 [239] 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] - //SEG528 [239] 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 - //SEG529 play_remove_lines::@4 + //SEG531 [237] 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] + //SEG532 [237] 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 + //SEG533 play_remove_lines::@4 b4: - //SEG530 [240] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG534 [238] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG531 [241] 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 + //SEG535 [239] 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 - //SEG532 [242] 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] - //SEG533 [242] 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 - //SEG534 play_remove_lines::@5 + //SEG536 [240] 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] + //SEG537 [240] 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 + //SEG538 play_remove_lines::@5 b5: - //SEG535 [243] 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 + //SEG539 [241] 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 - //SEG536 play_remove_lines::@return - //SEG537 [244] return + //SEG540 play_remove_lines::@return + //SEG541 [242] return rts - //SEG538 play_remove_lines::@6 + //SEG542 play_remove_lines::@6 b6: - //SEG539 [245] *((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 + //SEG543 [243] *((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 - //SEG540 [246] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG544 [244] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG541 [247] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] - //SEG542 play_remove_lines::@17 - //SEG543 [232] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] - //SEG544 [232] 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 + //SEG545 [245] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG546 play_remove_lines::@17 + //SEG547 [230] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG548 [230] 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 } -//SEG545 play_lock_current +//SEG549 play_lock_current play_lock_current: { .label ypos2 = $e .label playfield_line = 7 @@ -18451,429 +18684,432 @@ play_lock_current: { .label i_3 = 5 .label i_7 = 5 .label i_9 = 5 - //SEG546 [248] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG550 [246] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG547 [249] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG548 [249] 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 + //SEG551 [247] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG552 [247] 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 - //SEG549 [249] 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 + //SEG553 [247] 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 - //SEG550 [249] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG551 play_lock_current::@1 + //SEG554 [247] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG555 play_lock_current::@1 b1: - //SEG552 [250] (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 + //SEG556 [248] (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 - //SEG553 [251] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG557 [249] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG554 [252] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG555 [252] 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 + //SEG558 [250] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG559 [250] 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 - //SEG556 [252] 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 - //SEG557 [252] 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 - //SEG558 play_lock_current::@2 + //SEG560 [250] 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 + //SEG561 [250] 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 + //SEG562 play_lock_current::@2 b2: - //SEG559 [253] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG563 [251] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG560 [254] if(*((byte*) current_piece_gfx#20 + (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 + //SEG564 [252] if(*((byte*) current_piece_gfx#20 + (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 - //SEG561 play_lock_current::@4 - //SEG562 [255] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG565 play_lock_current::@4 + //SEG566 [253] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y - //SEG563 play_lock_current::@3 + //SEG567 play_lock_current::@3 b3: - //SEG564 [256] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG568 [254] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG565 [257] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG569 [255] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG566 [258] 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 + //SEG570 [256] 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 - //SEG567 play_lock_current::@5 - //SEG568 [259] (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 + //SEG571 play_lock_current::@5 + //SEG572 [257] (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 - //SEG569 [260] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG573 [258] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG570 [261] 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 + //SEG574 [259] 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 - //SEG571 play_lock_current::@return - //SEG572 [262] return + //SEG575 play_lock_current::@return + //SEG576 [260] return rts - //SEG573 play_lock_current::@7 + //SEG577 play_lock_current::@7 b7: - //SEG574 [263] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG578 [261] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG575 [249] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] - //SEG576 [249] 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 - //SEG577 [249] 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 - //SEG578 [249] 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 + //SEG579 [247] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG580 [247] 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 + //SEG581 [247] 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 + //SEG582 [247] 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 - //SEG579 play_lock_current::@8 + //SEG583 play_lock_current::@8 b8: - //SEG580 [264] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG584 [262] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG581 [252] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] - //SEG582 [252] 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 - //SEG583 [252] 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 - //SEG584 [252] 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 + //SEG585 [250] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG586 [250] 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 + //SEG587 [250] 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 + //SEG588 [250] 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 } -//SEG585 keyboard_event_pressed +//SEG589 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 6 .label keycode = 5 - //SEG586 [266] (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 + //SEG590 [264] (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 - //SEG587 [267] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG591 [265] (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 - //SEG588 [268] (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 + //SEG592 [266] (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 - //SEG589 [269] (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 + //SEG593 [267] (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 - //SEG590 keyboard_event_pressed::@return - //SEG591 [270] return + //SEG594 keyboard_event_pressed::@return + //SEG595 [268] return rts } -//SEG592 keyboard_event_get +//SEG596 keyboard_event_get keyboard_event_get: { - //SEG593 [271] 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 + //SEG597 [269] 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 - //SEG594 keyboard_event_get::@3 - //SEG595 [272] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG598 keyboard_event_get::@3 + //SEG599 [270] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG596 [273] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG600 [271] (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 - //SEG597 [274] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG598 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG599 [274] 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 + //SEG601 [272] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG602 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG603 [272] 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 - //SEG600 [274] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG604 [272] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG601 [274] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG602 [274] 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 + //SEG605 [272] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG606 [272] 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 - //SEG603 keyboard_event_get::@return + //SEG607 keyboard_event_get::@return breturn: - //SEG604 [275] return + //SEG608 [273] return rts } -//SEG605 keyboard_event_scan +//SEG609 keyboard_event_scan keyboard_event_scan: { .label row_scan = 9 .label keycode = 6 .label row = 5 - //SEG606 [277] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG607 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG608 [277] 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 + //SEG610 [275] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG611 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG612 [275] 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 - //SEG609 [277] 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 + //SEG613 [275] 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 - //SEG610 [277] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG611 [277] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG612 [277] 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 - //SEG613 [277] 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 - //SEG614 keyboard_event_scan::@1 + //SEG614 [275] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG615 [275] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG616 [275] 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 + //SEG617 [275] 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 + //SEG618 keyboard_event_scan::@1 b1: - //SEG615 [278] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG619 [276] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG616 [279] call keyboard_matrix_read + //SEG620 [277] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG617 [280] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG621 [278] (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 - //SEG618 keyboard_event_scan::@25 - //SEG619 [281] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG622 keyboard_event_scan::@25 + //SEG623 [279] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG620 [282] 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 + //SEG624 [280] 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 - //SEG621 keyboard_event_scan::@13 - //SEG622 [283] (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 + //SEG625 keyboard_event_scan::@13 + //SEG626 [281] (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 - //SEG623 [284] 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] - //SEG624 [284] 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 - //SEG625 [284] 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 - //SEG626 keyboard_event_scan::@3 + //SEG627 [282] 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] + //SEG628 [282] 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 + //SEG629 [282] 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 + //SEG630 keyboard_event_scan::@3 b3: - //SEG627 [285] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG631 [283] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG628 [286] 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 + //SEG632 [284] 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 - //SEG629 [287] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG630 keyboard_event_scan::@20 - //SEG631 [288] call keyboard_event_pressed - //SEG632 [265] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG633 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG633 [285] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG634 keyboard_event_scan::@20 + //SEG635 [286] call keyboard_event_pressed + //SEG636 [263] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG637 [263] 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 - //SEG634 [289] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG638 [287] (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 - //SEG635 keyboard_event_scan::@26 - //SEG636 [290] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG639 keyboard_event_scan::@26 + //SEG640 [288] (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 - //SEG637 [291] 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 + //SEG641 [289] 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 - //SEG638 [292] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG639 keyboard_event_scan::@21 - //SEG640 [293] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG641 [293] 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 + //SEG642 [290] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG643 keyboard_event_scan::@21 + //SEG644 [291] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG645 [291] 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 - //SEG642 [293] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG646 [291] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG643 [293] 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 + //SEG647 [291] 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 - //SEG644 keyboard_event_scan::@9 + //SEG648 keyboard_event_scan::@9 b9: - //SEG645 [294] call keyboard_event_pressed - //SEG646 [265] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG647 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG649 [292] call keyboard_event_pressed + //SEG650 [263] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG651 [263] 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 - //SEG648 [295] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG652 [293] (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 - //SEG649 keyboard_event_scan::@27 - //SEG650 [296] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG653 keyboard_event_scan::@27 + //SEG654 [294] (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 - //SEG651 [297] 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 + //SEG655 [295] 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 - //SEG652 keyboard_event_scan::@22 - //SEG653 [298] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG656 keyboard_event_scan::@22 + //SEG657 [296] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG654 [299] 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] - //SEG655 [299] 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 - //SEG656 keyboard_event_scan::@10 + //SEG658 [297] 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] + //SEG659 [297] 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 + //SEG660 keyboard_event_scan::@10 b10: - //SEG657 [300] call keyboard_event_pressed - //SEG658 [265] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG659 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG661 [298] call keyboard_event_pressed + //SEG662 [263] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG663 [263] 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 - //SEG660 [301] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG664 [299] (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 - //SEG661 keyboard_event_scan::@28 - //SEG662 [302] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG665 keyboard_event_scan::@28 + //SEG666 [300] (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 - //SEG663 [303] 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 + //SEG667 [301] 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 - //SEG664 keyboard_event_scan::@23 - //SEG665 [304] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG668 keyboard_event_scan::@23 + //SEG669 [302] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG666 [305] 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] - //SEG667 [305] 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 - //SEG668 keyboard_event_scan::@11 + //SEG670 [303] 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] + //SEG671 [303] 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 + //SEG672 keyboard_event_scan::@11 b11: - //SEG669 [306] call keyboard_event_pressed - //SEG670 [265] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG671 [265] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG673 [304] call keyboard_event_pressed + //SEG674 [263] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG675 [263] 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 - //SEG672 [307] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG676 [305] (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 - //SEG673 keyboard_event_scan::@29 - //SEG674 [308] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG677 keyboard_event_scan::@29 + //SEG678 [306] (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 - //SEG675 [309] 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 + //SEG679 [307] 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 - //SEG676 keyboard_event_scan::@24 - //SEG677 [310] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG680 keyboard_event_scan::@24 + //SEG681 [308] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE - //SEG678 keyboard_event_scan::@return + //SEG682 keyboard_event_scan::@return breturn: - //SEG679 [311] return + //SEG683 [309] return rts - //SEG680 [312] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG684 [310] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b6: - //SEG681 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG682 [312] 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 - //SEG683 [312] 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 + //SEG685 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG686 [310] 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 + //SEG687 [310] 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 - //SEG684 [312] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG685 [312] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG686 [312] 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 - //SEG687 [312] 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 - //SEG688 keyboard_event_scan::@4 + //SEG688 [310] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG689 [310] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG690 [310] 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 + //SEG691 [310] 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 + //SEG692 keyboard_event_scan::@4 b4: - //SEG689 [313] (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 + //SEG693 [311] (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 - //SEG690 [314] (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 + //SEG694 [312] (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 - //SEG691 [315] 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 + //SEG695 [313] 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 - //SEG692 keyboard_event_scan::@15 - //SEG693 [316] 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 + //SEG696 keyboard_event_scan::@15 + //SEG697 [314] 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 - //SEG694 keyboard_event_scan::@16 - //SEG695 [317] (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 + //SEG698 keyboard_event_scan::@16 + //SEG699 [315] (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 - //SEG696 [318] 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 + //SEG700 [316] 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 - //SEG697 keyboard_event_scan::@17 - //SEG698 [319] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG701 keyboard_event_scan::@17 + //SEG702 [317] *((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 - //SEG699 [320] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG703 [318] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG700 [321] 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] - //SEG701 [321] 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 - //SEG702 keyboard_event_scan::@5 + //SEG704 [319] 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] + //SEG705 [319] 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 + //SEG706 keyboard_event_scan::@5 b5: - //SEG703 [322] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG707 [320] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG704 [323] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG708 [321] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG705 [324] 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 + //SEG709 [322] 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 - //SEG706 keyboard_event_scan::@19 - //SEG707 [325] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG710 keyboard_event_scan::@19 + //SEG711 [323] *((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 - //SEG708 keyboard_event_scan::@7 + //SEG712 keyboard_event_scan::@7 b7: - //SEG709 [326] (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 + //SEG713 [324] (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 - //SEG710 [327] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG714 [325] *((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 - //SEG711 [328] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG715 [326] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG712 keyboard_matrix_read +//SEG716 keyboard_matrix_read keyboard_matrix_read: { - //SEG713 [329] *((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 + //SEG717 [327] *((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 - //SEG714 [330] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG718 [328] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG715 keyboard_matrix_read::@return - //SEG716 [331] return + //SEG719 keyboard_matrix_read::@return + //SEG720 [329] return rts } -//SEG717 render_show +//SEG721 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG718 [332] if((byte) render_screen_show#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG722 [330] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181 - //SEG719 [333] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] - //SEG720 render_show::toD0182 - //SEG721 [334] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] - //SEG722 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG723 [331] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG724 render_show::toD0182 + //SEG725 [332] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG726 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return - //SEG723 render_show::@2 + //SEG727 render_show::@2 b2: - //SEG724 [335] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG728 [333] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG725 render_show::@return - //SEG726 [336] return + //SEG729 [334] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + lda render_screen_show + sta render_screen_showing + //SEG730 render_show::@return + //SEG731 [335] return rts - //SEG727 [337] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] - //SEG728 render_show::toD0181 + //SEG732 [336] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG733 render_show::toD0181 toD0181: - //SEG729 [334] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] - //SEG730 [334] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG734 [332] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG735 [332] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG731 play_init +//SEG736 play_init play_init: { .label pli = 7 .label idx = 2 - //SEG732 [339] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG733 [339] 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 + //SEG737 [338] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG738 [338] 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 - //SEG734 [339] 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 + //SEG739 [338] 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 - //SEG735 [339] 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 + //SEG740 [338] 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 - //SEG736 [339] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG737 [339] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG738 [339] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG739 [339] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG740 play_init::@1 + //SEG741 [338] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG742 [338] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG743 [338] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG744 [338] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG745 play_init::@1 b1: - //SEG741 [340] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG746 [339] (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 - //SEG742 [341] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG747 [340] *((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 - //SEG743 [342] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG748 [341] *((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 - //SEG744 [343] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG749 [342] (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 @@ -18881,112 +19117,112 @@ play_init: { bcc !+ inc pli+1 !: - //SEG745 [344] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG750 [343] (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 - //SEG746 [345] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG751 [344] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG747 [346] 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 + //SEG752 [345] 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 - //SEG748 play_init::@2 - //SEG749 [347] *((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 + //SEG753 play_init::@2 + //SEG754 [346] *((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 - //SEG750 play_init::@return - //SEG751 [348] return + //SEG755 play_init::@return + //SEG756 [347] return rts } -//SEG752 sprites_irq_init +//SEG757 sprites_irq_init sprites_irq_init: { - //SEG753 asm { sei } + //SEG758 asm { sei } sei - //SEG754 [350] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG759 [349] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG755 asm { ldaCIA1_INTERRUPT } + //SEG760 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG756 [352] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG761 [351] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG757 [353] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG762 [352] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG758 [354] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG763 [353] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG759 [355] *((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 + //SEG764 [354] *((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 - //SEG760 [356] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG765 [355] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG761 [357] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG766 [356] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG762 [358] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 - lda #irq + lda #>sprites_irq sta HARDWARE_IRQ+1 - //SEG763 asm { cli } + //SEG768 asm { cli } cli - //SEG764 sprites_irq_init::@return - //SEG765 [360] return + //SEG769 sprites_irq_init::@return + //SEG770 [359] return rts } -//SEG766 sprites_init +//SEG771 sprites_init sprites_init: { .label xpos = 2 - //SEG767 [361] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG772 [360] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG768 [362] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG773 [361] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG769 [363] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG774 [362] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG770 [364] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG775 [363] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG771 [365] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG772 [365] 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 + //SEG776 [364] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG777 [364] 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 - //SEG773 [365] 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 + //SEG778 [364] 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 - //SEG774 [365] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG775 [365] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG776 [365] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG777 sprites_init::@1 + //SEG779 [364] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG780 [364] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG781 [364] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG782 sprites_init::@1 b1: - //SEG778 [366] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG783 [365] (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 - //SEG779 [367] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG784 [366] *((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 - //SEG780 [368] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG785 [367] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG781 [369] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG786 [368] (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 - //SEG782 [370] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG787 [369] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG783 [371] 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 + //SEG788 [370] 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 - //SEG784 sprites_init::@return - //SEG785 [372] return + //SEG789 sprites_init::@return + //SEG790 [371] return rts } -//SEG786 render_init +//SEG791 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label _12 = $f @@ -18994,77 +19230,79 @@ render_init: { .label l = 2 .label li_1 = 7 .label li_2 = $f - //SEG787 render_init::vicSelectGfxBank1 - //SEG788 [374] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG792 render_init::vicSelectGfxBank1 + //SEG793 [373] *((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 - //SEG789 [375] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG790 render_init::vicSelectGfxBank1_toDd001 - //SEG791 render_init::vicSelectGfxBank1_@1 - //SEG792 [376] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG794 [374] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG795 render_init::vicSelectGfxBank1_toDd001 + //SEG796 render_init::vicSelectGfxBank1_@1 + //SEG797 [375] *((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 - //SEG793 render_init::@7 - //SEG794 [377] *((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 + //SEG798 render_init::@7 + //SEG799 [376] *((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 - //SEG795 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG800 [377] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK + sta BORDERCOL + //SEG801 [378] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG796 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG802 [379] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG797 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG803 [380] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG798 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG804 [381] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG799 [382] call render_screen_original - //SEG800 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] - //SEG801 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 + //SEG805 [382] call render_screen_original + //SEG806 [412] phi from render_init::@7 to render_screen_original [phi:render_init::@7->render_screen_original] + //SEG807 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@7->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG802 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] - //SEG803 render_init::@8 - //SEG804 [384] call render_screen_original - //SEG805 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] - //SEG806 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 + //SEG808 [383] phi from render_init::@7 to render_init::@8 [phi:render_init::@7->render_init::@8] + //SEG809 render_init::@8 + //SEG810 [384] call render_screen_original + //SEG811 [412] phi from render_init::@8 to render_screen_original [phi:render_init::@8->render_screen_original] + //SEG812 [412] phi (byte*) render_screen_original::screen#11 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@8->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG807 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] - //SEG808 render_init::@9 - //SEG809 [386] call fill - //SEG810 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] + //SEG813 [385] phi from render_init::@8 to render_init::@9 [phi:render_init::@8->render_init::@9] + //SEG814 render_init::@9 + //SEG815 [386] call fill + //SEG816 [406] phi from render_init::@9 to fill [phi:render_init::@9->fill] jsr fill - //SEG811 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] - //SEG812 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 + //SEG817 [387] phi from render_init::@9 to render_init::@1 [phi:render_init::@9->render_init::@1] + //SEG818 [387] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_init::@9->render_init::@1#0] -- vbuz1=vbuc1 lda #2 sta l - //SEG813 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 + //SEG819 [387] phi (byte*) render_init::line#4 = (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 [phi:render_init::@9->render_init::@1#1] -- pbuz1=pbuc1 lda #COLS+4*$28+$10 sta line+1 - //SEG814 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] - //SEG815 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy - //SEG816 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy - //SEG817 render_init::@1 + //SEG820 [387] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG821 [387] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@4->render_init::@1#0] -- register_copy + //SEG822 [387] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@4->render_init::@1#1] -- register_copy + //SEG823 render_init::@1 b1: - //SEG818 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] - //SEG819 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuxx=vbuc1 + //SEG824 [388] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG825 [388] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG820 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] - //SEG821 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy - //SEG822 render_init::@2 + //SEG826 [388] phi from render_init::@2 to render_init::@2 [phi:render_init::@2->render_init::@2] + //SEG827 [388] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@2->render_init::@2#0] -- register_copy + //SEG828 render_init::@2 b2: - //SEG823 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG829 [389] (byte*~) render_init::$12 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -19072,17 +19310,17 @@ render_init: { lda #0 adc line+1 sta _12+1 - //SEG824 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG830 [390] *((byte*~) render_init::$12) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (_12),y - //SEG825 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG831 [391] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG826 [392] 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::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG832 [392] 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::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2 - //SEG827 render_init::@4 - //SEG828 [393] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG833 render_init::@4 + //SEG834 [393] (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 @@ -19090,50 +19328,50 @@ render_init: { bcc !+ inc line+1 !: - //SEG829 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG835 [394] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG830 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG836 [395] 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::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG831 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] - //SEG832 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 + //SEG837 [396] phi from render_init::@4 to render_init::@3 [phi:render_init::@4->render_init::@3] + //SEG838 [396] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG833 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 + //SEG839 [396] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@3#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG834 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuxx=vbuc1 + //SEG840 [396] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG835 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] - //SEG836 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG837 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy - //SEG838 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy - //SEG839 render_init::@3 + //SEG841 [396] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG842 [396] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG843 [396] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@3->render_init::@3#1] -- register_copy + //SEG844 [396] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@3->render_init::@3#2] -- register_copy + //SEG845 render_init::@3 b3: - //SEG840 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG846 [397] (byte~) render_init::$22 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG841 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG847 [398] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$22) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG842 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG848 [399] (byte~) render_init::$23 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG843 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG849 [400] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$23) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG844 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG850 [401] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -19141,7 +19379,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG845 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG851 [402] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -19149,315 +19387,325 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG846 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG852 [403] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG847 [404] 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::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG853 [404] 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::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b3 - //SEG848 render_init::@return - //SEG849 [405] return + //SEG854 render_init::@return + //SEG855 [405] return rts } -//SEG850 fill +//SEG856 fill fill: { .const size = $3e8 .label end = COLS+size .label addr = 7 - //SEG851 [407] phi from fill to fill::@1 [phi:fill->fill::@1] - //SEG852 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG857 [407] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG858 [407] phi (byte*) fill::addr#2 = (const byte*) COLS#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #COLS sta addr+1 - //SEG853 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] - //SEG854 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy - //SEG855 fill::@1 + //SEG859 [407] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG860 [407] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG861 fill::@1 b1: - //SEG856 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG862 [408] *((byte*) fill::addr#2) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (addr),y - //SEG857 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG863 [409] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG858 [410] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG864 [410] 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 #render_screen_original::@1] - //SEG863 [413] phi (byte) render_screen_original::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG868 [413] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG869 [413] phi (byte) render_screen_original::y#8 = (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 - //SEG864 [413] phi (byte*) render_screen_original::orig#5 = (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 + //SEG870 [413] phi (byte*) render_screen_original::orig#5 = (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 - //SEG865 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy - //SEG866 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] - //SEG867 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy - //SEG868 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy - //SEG869 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy - //SEG870 render_screen_original::@1 + //SEG871 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#11 [phi:render_screen_original->render_screen_original::@1#2] -- register_copy + //SEG872 [413] phi from render_screen_original::@9 to render_screen_original::@1 [phi:render_screen_original::@9->render_screen_original::@1] + //SEG873 [413] phi (byte) render_screen_original::y#8 = (byte) render_screen_original::y#1 [phi:render_screen_original::@9->render_screen_original::@1#0] -- register_copy + //SEG874 [413] phi (byte*) render_screen_original::orig#5 = (byte*) render_screen_original::orig#1 [phi:render_screen_original::@9->render_screen_original::@1#1] -- register_copy + //SEG875 [413] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#12 [phi:render_screen_original::@9->render_screen_original::@1#2] -- register_copy + //SEG876 render_screen_original::@1 b1: - //SEG871 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG872 [414] 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 + //SEG877 [414] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG878 [414] 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 - //SEG873 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG874 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG875 [414] 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 - //SEG876 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG877 render_screen_original::@2 + //SEG879 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG880 [414] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG881 [414] 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 + //SEG882 [414] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG883 render_screen_original::@2 b2: - //SEG878 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG884 [415] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG879 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG885 [416] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG880 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG886 [417] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG881 [418] 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 + //SEG887 [418] 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 - //SEG882 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] - //SEG883 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy - //SEG884 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy - //SEG885 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy - //SEG886 render_screen_original::@3 + //SEG888 [419] phi from render_screen_original::@2 render_screen_original::@4 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3] + //SEG889 [419] phi (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#0] -- register_copy + //SEG890 [419] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#1] -- register_copy + //SEG891 [419] phi (byte*) render_screen_original::orig#2 = (byte*) render_screen_original::orig#5 [phi:render_screen_original::@2/render_screen_original::@4->render_screen_original::@3#2] -- register_copy + //SEG892 render_screen_original::@3 b3: - //SEG887 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=_deref_pbuz1_plus_1 + //SEG893 [420] (byte) render_screen_original::c#0 ← *((byte*) render_screen_original::orig#2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=_deref_pbuz1_plus_1 ldy #0 lda (orig),y tay iny - //SEG888 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 + //SEG894 [421] (byte*) render_screen_original::orig#1 ← ++ (byte*) render_screen_original::orig#2 -- pbuz1=_inc_pbuz1 inc orig bne !+ inc orig+1 !: - //SEG889 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuxx_gt_vbuc1_then_la1 + //SEG895 [422] if((byte) render_screen_original::x#5>(byte/signed byte/word/signed word/dword/signed dword) 14) goto render_screen_original::@11 -- vbuxx_gt_vbuc1_then_la1 txa cmp #$e beq !+ bcs b11 !: - //SEG890 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] - //SEG891 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy - //SEG892 render_screen_original::@4 + //SEG896 [423] phi from render_screen_original::@3 render_screen_original::@7 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4] + //SEG897 [423] phi (byte) render_screen_original::c#2 = (byte) render_screen_original::c#0 [phi:render_screen_original::@3/render_screen_original::@7->render_screen_original::@4#0] -- register_copy + //SEG898 render_screen_original::@4 b4: - //SEG893 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuyy + //SEG899 [424] *((byte*) render_screen_original::screen#10) ← (byte) render_screen_original::c#2 -- _deref_pbuz1=vbuyy tya ldy #0 sta (screen),y - //SEG894 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 + //SEG900 [425] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG895 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG901 [426] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG896 [427] 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 + //SEG902 [427] 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 - //SEG897 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] - //SEG898 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy - //SEG899 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy - //SEG900 render_screen_original::@5 + //SEG903 [428] phi from render_screen_original::@4 render_screen_original::@5 to render_screen_original::@5 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5] + //SEG904 [428] phi (byte) render_screen_original::x#7 = (byte) render_screen_original::x#2 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#0] -- register_copy + //SEG905 [428] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@4/render_screen_original::@5->render_screen_original::@5#1] -- register_copy + //SEG906 render_screen_original::@5 b5: - //SEG901 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG907 [429] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG902 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG908 [430] (byte*) render_screen_original::screen#12 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG903 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuxx=_inc_vbuxx + //SEG909 [431] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#7 -- vbuxx=_inc_vbuxx inx - //SEG904 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG910 [432] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5 - //SEG905 render_screen_original::@9 - //SEG906 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 + //SEG911 render_screen_original::@9 + //SEG912 [433] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG907 [434] 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 + //SEG913 [434] 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 - //SEG908 render_screen_original::@return - //SEG909 [435] return + //SEG914 render_screen_original::@return + //SEG915 [435] return rts - //SEG910 render_screen_original::@11 + //SEG916 render_screen_original::@11 b11: - //SEG911 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG917 [436] if((byte) render_screen_original::x#5<(byte/signed byte/word/signed word/dword/signed dword) 27) goto render_screen_original::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$1b bcc b7 - //SEG912 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] + //SEG918 [423] phi from render_screen_original::@11 to render_screen_original::@4 [phi:render_screen_original::@11->render_screen_original::@4] jmp b4 - //SEG913 render_screen_original::@7 + //SEG919 render_screen_original::@7 b7: - //SEG914 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuyy=vbuyy_bor_vbuc1 + //SEG920 [437] (byte) render_screen_original::c#1 ← (byte) render_screen_original::c#0 | (byte/word/signed word/dword/signed dword) 192 -- vbuyy=vbuyy_bor_vbuc1 tya ora #$c0 tay jmp b4 } -//SEG915 sid_rnd_init +//SEG921 sid_rnd_init sid_rnd_init: { - //SEG916 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG922 [438] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG917 [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG923 [439] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG918 sid_rnd_init::@return - //SEG919 [440] return + //SEG924 sid_rnd_init::@return + //SEG925 [440] return rts } -//SEG920 irq -irq: { +//SEG926 sprites_irq +sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG921 entry interrupt(HARDWARE_CLOBBER) + //SEG927 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG922 [441] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 - lda #DARK_GREY - sta BORDERCOL - //SEG923 [442] (byte) irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG928 [441] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG924 [443] *((const byte*) SPRITES_YPOS#0) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG929 [442] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG925 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG930 [443] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG926 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG931 [444] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG927 [446] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG932 [445] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG928 irq::@1 + //SEG933 sprites_irq::@1 b1: - //SEG929 [447] if(*((const byte*) RASTER#0)!=(byte) irq_sprite_ypos#0) goto irq::@1 -- _deref_pbuc1_neq_vbuz1_then_la1 + //SEG934 [446] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp irq_sprite_ypos - bne b1 - //SEG930 irq::@5 - //SEG931 [448] (byte) irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuaa=vbuz1 - lda irq_sprite_ptr - //SEG932 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_1 - //SEG933 [450] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) irq::ptr#0 -- _deref_pbuc1=vbuaa - sta PLAYFIELD_SPRITE_PTRS_2 - //SEG934 [451] (byte) irq::ptr#1 ← ++ (byte) irq::ptr#0 -- vbuxx=_inc_vbuaa - tax + bcc b1 + //SEG935 sprites_irq::@7 + //SEG936 [447] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + ldx irq_sprite_ptr + //SEG937 [448] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + lda render_screen_showing + cmp #0 + beq b2 + //SEG938 sprites_irq::@8 + //SEG939 [449] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_2 + //SEG940 [450] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG935 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG936 [453] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG941 [451] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG937 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG938 [455] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG942 [452] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG939 [456] (byte) irq::ptr#2 ← ++ (byte) irq::ptr#1 -- vbuxx=_inc_vbuxx + //SEG943 [453] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx inx - //SEG940 [457] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_1+3 - //SEG941 [458] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) irq::ptr#2 -- _deref_pbuc1=vbuxx + //SEG944 [454] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG942 [459] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG945 sprites_irq::@3 + b3: + //SEG946 [455] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG943 [460] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG947 [456] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b2 - //SEG944 irq::@6 - //SEG945 [461] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + beq b4 + //SEG948 sprites_irq::@10 + //SEG949 [457] (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 - //SEG946 [462] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG950 [458] (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 - //SEG947 [463] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG951 [459] (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 - //SEG948 [464] phi from irq::@6 irq::@9 to irq::@3 [phi:irq::@6/irq::@9->irq::@3] - //SEG949 [464] phi (byte) irq_raster_next#12 = (byte) irq_raster_next#2 [phi:irq::@6/irq::@9->irq::@3#0] -- register_copy - //SEG950 irq::@3 - b3: - //SEG951 [465] (byte) irq::raster_next#0 ← (byte) irq_raster_next#12 -- vbuxx=vbuz1 + //SEG952 [460] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] + //SEG953 [460] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy + //SEG954 sprites_irq::@5 + b5: + //SEG955 [461] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG952 [466] (byte~) irq::$3 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG956 [462] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG953 [467] if((byte~) irq::$3!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto irq::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG957 [463] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #3 - bne b4 - //SEG954 irq::@8 - //SEG955 [468] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + bne b6 + //SEG958 sprites_irq::@12 + //SEG959 [464] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG956 [469] phi from irq::@3 irq::@8 to irq::@4 [phi:irq::@3/irq::@8->irq::@4] - //SEG957 [469] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq::@3/irq::@8->irq::@4#0] -- register_copy - //SEG958 irq::@4 - b4: - //SEG959 [470] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG960 [465] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] + //SEG961 [465] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy + //SEG962 sprites_irq::@6 + b6: + //SEG963 [466] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG960 [471] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG964 [467] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG961 [472] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 - lda #BLACK - sta BORDERCOL - //SEG962 irq::@return - //SEG963 [473] return - exit interrupt(HARDWARE_CLOBBER) + //SEG965 sprites_irq::@return + //SEG966 [468] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG964 irq::@2 - b2: - //SEG965 [474] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG967 sprites_irq::@4 + b4: + //SEG968 [469] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG966 [475] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG969 [470] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG967 [476] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + //SEG970 [471] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos - //SEG968 [477] phi from irq::@2 to irq::toSpritePtr2 [phi:irq::@2->irq::toSpritePtr2] - //SEG969 irq::toSpritePtr2 - //SEG970 irq::@9 - //SEG971 [478] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG971 [472] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG972 sprites_irq::toSpritePtr2 + //SEG973 sprites_irq::@13 + //SEG974 [473] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr + jmp b5 + //SEG975 sprites_irq::@2 + b2: + //SEG976 [474] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + stx PLAYFIELD_SPRITE_PTRS_1 + //SEG977 [475] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG978 [476] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+1 + //SEG979 [477] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+2 + //SEG980 [478] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG981 [479] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index eabfa5c3d..175002fc4 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -279,53 +279,53 @@ (byte) YELLOW (byte) current_movedown_counter (byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 -(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 0.4482758620689655 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 1.0833333333333333 +(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 4.222222222222222 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 10.363636363636363 (byte) current_movedown_fast (const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_slow (const byte) current_movedown_slow#0 current_movedown_slow = (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_orientation -(byte) current_orientation#10 current_orientation zp ZP_BYTE:17 0.4722222222222223 +(byte) current_orientation#10 current_orientation zp ZP_BYTE:17 3.371428571428571 (byte) current_orientation#14 current_orientation zp ZP_BYTE:17 0.32653061224489793 -(byte) current_orientation#19 current_orientation zp ZP_BYTE:17 0.8947368421052632 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:17 6.941176470588235 (byte) current_orientation#29 current_orientation zp ZP_BYTE:17 4.0 (byte) current_orientation#4 current_orientation zp ZP_BYTE:17 3.0 (byte*) current_piece -(byte*) current_piece#10 current_piece zp ZP_WORD:15 0.3285714285714286 +(byte*) current_piece#10 current_piece zp ZP_WORD:15 1.8235294117647054 (byte*) current_piece#12 current_piece#12 zp ZP_WORD:7 10.0 -(byte*) current_piece#16 current_piece zp ZP_WORD:15 0.5277777777777779 +(byte*) current_piece#16 current_piece zp ZP_WORD:15 3.428571428571428 (byte*) current_piece#20 current_piece zp ZP_WORD:15 6.0 (byte*~) current_piece#71 current_piece zp ZP_WORD:15 4.0 -(byte*~) current_piece#73 current_piece#73 zp ZP_WORD:7 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:7 4.0 (byte*~) current_piece#75 current_piece#75 zp ZP_WORD:7 4.0 (byte*~) current_piece#76 current_piece#76 zp ZP_WORD:7 4.0 -(byte*~) current_piece#77 current_piece zp ZP_WORD:15 4.0 +(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:7 4.0 +(byte*~) current_piece#78 current_piece zp ZP_WORD:15 4.0 (byte) current_piece_char -(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:21 0.896551724137931 +(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:21 4.703703703703704 (byte) current_piece_char#12 current_piece_char zp ZP_BYTE:21 0.6153846153846154 -(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:21 19.20754716981132 +(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:21 194.59615384615384 (byte) current_piece_char#20 current_piece_char zp ZP_BYTE:21 6.0 -(byte) current_piece_char#62 current_piece_char#62 zp ZP_BYTE:9 46.09090909090909 -(byte~) current_piece_char#87 current_piece_char#87 zp ZP_BYTE:9 4.0 -(byte~) current_piece_char#88 current_piece_char#88 zp ZP_BYTE:9 22.0 +(byte) current_piece_char#63 reg byte x 46.09090909090909 +(byte~) current_piece_char#88 reg byte x 4.0 +(byte~) current_piece_char#89 reg byte x 22.0 (byte*) current_piece_gfx (byte*) current_piece_gfx#1 current_piece_gfx zp ZP_WORD:18 0.2962962962962963 -(byte*~) current_piece_gfx#100 current_piece_gfx#100 zp ZP_WORD:7 11.0 -(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:18 1.4736842105263155 +(byte*~) current_piece_gfx#100 current_piece_gfx#100 zp ZP_WORD:7 2.0 +(byte*~) current_piece_gfx#101 current_piece_gfx#101 zp ZP_WORD:7 11.0 +(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:18 7.588235294117647 (byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:18 0.5 -(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:18 19.20754716981132 +(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:18 194.59615384615384 (byte*) current_piece_gfx#26 current_piece_gfx zp ZP_WORD:18 6.0 (byte*) current_piece_gfx#3 current_piece_gfx zp ZP_WORD:18 4.0 -(byte*) current_piece_gfx#52 current_piece_gfx#52 zp ZP_WORD:7 46.09090909090909 -(byte*~) current_piece_gfx#99 current_piece_gfx#99 zp ZP_WORD:7 2.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:7 46.09090909090909 (byte) current_xpos (byte) current_xpos#1 current_xpos zp ZP_BYTE:20 0.72 -(byte) current_xpos#10 current_xpos zp ZP_BYTE:20 2.2641509433962264 -(byte~) current_xpos#109 current_xpos#109 zp ZP_BYTE:6 1.3333333333333333 -(byte~) current_xpos#110 current_xpos#110 zp ZP_BYTE:6 7.333333333333333 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:20 0.7906976744186045 +(byte) current_xpos#10 current_xpos zp ZP_BYTE:20 21.557692307692307 +(byte~) current_xpos#110 current_xpos#110 zp ZP_BYTE:6 1.3333333333333333 +(byte~) current_xpos#111 current_xpos#111 zp ZP_BYTE:6 7.333333333333333 +(byte) current_xpos#19 current_xpos zp ZP_BYTE:20 3.2926829268292686 (byte) current_xpos#2 current_xpos zp ZP_BYTE:20 4.0 (byte) current_xpos#23 current_xpos zp ZP_BYTE:20 0.5333333333333333 (byte) current_xpos#33 current_xpos zp ZP_BYTE:20 6.0 @@ -333,13 +333,13 @@ (byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:6 5.181818181818182 (byte) current_ypos (byte) current_ypos#0 current_ypos zp ZP_BYTE:14 4.0 -(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 0.4571428571428572 +(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 1.9558823529411762 (byte) current_ypos#18 current_ypos zp ZP_BYTE:14 0.5714285714285714 -(byte) current_ypos#21 current_ypos zp ZP_BYTE:14 0.5833333333333335 +(byte) current_ypos#21 current_ypos zp ZP_BYTE:14 3.485714285714285 (byte) current_ypos#29 current_ypos zp ZP_BYTE:14 6.0 -(byte~) current_ypos#83 reg byte x 1.0 -(byte~) current_ypos#84 reg byte x 4.4 -(byte) current_ypos#9 reg byte x 15.0 +(byte~) current_ypos#84 reg byte y 1.0 +(byte~) current_ypos#85 reg byte y 4.4 +(byte) current_ypos#9 reg byte y 15.0 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -352,59 +352,31 @@ (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 2.6666666666666665 -(byte) irq::ptr#1 reg byte x 2.4 -(byte) irq::ptr#2 reg byte x 3.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:26 0.2222222222222222 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:26 4.0 -(byte) irq_cnt#13 irq_cnt zp ZP_BYTE:26 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:27 0.2 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:27 4.0 +(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:27 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:23 0.2 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:23 0.18181818181818182 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:23 1.0 -(byte) irq_raster_next#12 irq_raster_next zp ZP_BYTE:23 6.0 +(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:23 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:23 1.3333333333333333 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:25 0.2727272727272727 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:25 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:25 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:26 0.25 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:26 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:26 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:24 0.8095238095238095 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:24 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:24 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:25 0.7391304347826086 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:25 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:25 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 4.333333333333333 -(byte) keyboard_event_get::return#3 reg byte a 22.0 +(byte) keyboard_event_get::return#2 reg byte a 34.33333333333333 +(byte) keyboard_event_get::return#3 reg byte a 202.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 reg byte a 4.0 (byte~) keyboard_event_pressed::$1 reg byte a 4.0 @@ -421,13 +393,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:6 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 reg byte a 2002.0 +(byte/word/dword~) keyboard_event_scan::$11 reg byte a 20002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 (byte~) keyboard_event_scan::$18 reg byte a 4.0 (byte~) keyboard_event_scan::$22 reg byte a 4.0 (byte~) keyboard_event_scan::$26 reg byte a 4.0 -(byte~) keyboard_event_scan::$3 reg byte a 2002.0 -(byte~) keyboard_event_scan::$4 reg byte a 2002.0 +(byte~) keyboard_event_scan::$3 reg byte a 20002.0 +(byte~) keyboard_event_scan::$4 reg byte a 20002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -453,43 +425,43 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 1501.5 -(byte) keyboard_event_scan::col#2 reg byte x 286.0 +(byte) keyboard_event_scan::col#1 reg byte x 15001.5 +(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 2002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:6 202.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:6 315.7692307692308 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:6 50.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:6 101.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:6 525.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:6 2002.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:6 3154.230769230769 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:6 500.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:6 1001.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:6 5250.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:5 151.5 -(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:5 60.24 +(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:5 1501.5 +(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:5 600.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:9 128.05555555555557 +(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:9 1278.0555555555554 (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:22 2002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:22 810.9000000000001 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:22 9.967741935483872 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:22 0.45454545454545453 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:22 1.8571428571428572 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:22 2002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:22 43.57142857142858 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:22 1021.2 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:22 20002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:22 8100.9000000000015 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:22 97.06451612903226 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:22 3.741935483870968 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:22 18.999999999999996 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:22 20002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:22 429.2857142857143 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:22 10201.2 (byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:22 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 34.33333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 202.0 +(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 103.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers @@ -502,10 +474,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$9 reg byte a 22.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 (label) main::@1 (label) main::@13 (label) main::@15 @@ -525,15 +496,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@30 (label) main::@4 (label) main::@6 -(label) main::@7 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:13 4.0 +(byte) main::key_event#0 key_event zp ZP_BYTE:13 36.72727272727273 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:27 4.4 -(byte) main::render#2 render zp ZP_BYTE:27 4.4 -(byte) main::render#3 reg byte a 22.0 +(byte) main::render#1 render zp ZP_BYTE:28 40.4 +(byte) main::render#2 render zp ZP_BYTE:28 40.4 +(byte) main::render#3 reg byte a 202.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 +(byte~) play_collision::$7 reg byte a 20002.0 (label) play_collision::@1 (label) play_collision::@17 (label) play_collision::@2 @@ -546,21 +516,21 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_collision::@8 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 1001.0 -(byte) play_collision::c#2 reg byte x 222.44444444444446 +(byte) play_collision::c#1 reg byte x 10001.0 +(byte) play_collision::c#2 reg byte x 2222.4444444444443 (byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:12 500.5 -(byte) play_collision::col#2 col zp ZP_BYTE:12 638.25 -(byte~) play_collision::col#9 col zp ZP_BYTE:12 202.0 +(byte) play_collision::col#1 col zp ZP_BYTE:12 5000.5 +(byte) play_collision::col#2 col zp ZP_BYTE:12 6375.75 +(byte~) play_collision::col#9 col zp ZP_BYTE:12 2002.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:30 161.76923076923077 -(byte~) play_collision::i#11 i#11 zp ZP_BYTE:11 202.0 -(byte~) play_collision::i#13 i#13 zp ZP_BYTE:11 2002.0 -(byte) play_collision::i#2 i#2 zp ZP_BYTE:11 1552.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:11 67.33333333333333 +(byte) play_collision::i#1 i zp ZP_BYTE:31 1615.6153846153845 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:11 2002.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:11 20002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:11 15502.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:11 667.3333333333334 (byte) play_collision::l -(byte) play_collision::l#1 l zp ZP_BYTE:10 101.0 -(byte) play_collision::l#6 l zp ZP_BYTE:10 12.625 +(byte) play_collision::l#1 l zp ZP_BYTE:10 1001.0 +(byte) play_collision::l#6 l zp ZP_BYTE:10 125.125 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 @@ -568,9 +538,9 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::orientation#3 reg byte x 2.0 (byte) play_collision::orientation#4 reg byte x 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 47.76190476190476 +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 476.3333333333333 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:28 78.71428571428571 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:29 785.8571428571429 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 @@ -582,7 +552,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::xpos#1 xpos zp ZP_BYTE:6 1.0 (byte) play_collision::xpos#2 xpos zp ZP_BYTE:6 1.0 (byte) play_collision::xpos#3 xpos zp ZP_BYTE:6 1.0 -(byte) play_collision::xpos#5 xpos zp ZP_BYTE:6 4.954545454545454 +(byte) play_collision::xpos#5 xpos zp ZP_BYTE:6 45.86363636363637 (byte) play_collision::ypos (byte) play_collision::ypos#0 reg byte y 1.0 (byte) play_collision::ypos#1 reg byte y 1.3333333333333333 @@ -591,8 +561,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_collision::ypos#4 reg byte y 5.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:9 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:9 50.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:9 87.06666666666668 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:9 500.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:9 867.0666666666667 (void()) play_init() (byte~) play_init::$1 reg byte a 22.0 (label) play_init::@1 @@ -617,27 +587,27 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_lock_current::@8 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 1001.0 -(byte) play_lock_current::c#2 reg byte x 400.4 +(byte) play_lock_current::c#1 reg byte x 10001.0 +(byte) play_lock_current::c#2 reg byte x 4000.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:6 202.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:6 500.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:6 776.0 +(byte) play_lock_current::col#0 col zp ZP_BYTE:6 2002.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:6 5000.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:6 7751.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp ZP_BYTE:9 233.66666666666669 -(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:5 1552.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:5 67.33333333333333 -(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:5 202.0 -(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:5 2002.0 +(byte) play_lock_current::i#1 i zp ZP_BYTE:9 2333.6666666666665 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:5 15502.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:5 667.3333333333334 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:5 2002.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:5 20002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp ZP_BYTE:4 101.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 16.833333333333332 +(byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:7 110.19999999999999 +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:7 1100.2 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:14 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:14 50.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:14 27.727272727272727 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:14 500.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:14 273.1818181818182 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 reg byte a 4.0 (byte~) play_move_down::$2 reg byte a 4.0 @@ -658,7 +628,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 6.5 +(byte) play_move_down::key_event#0 reg byte a 51.5 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 reg byte x 1.0 (byte) play_move_down::movedown#2 reg byte x 4.0 @@ -666,8 +636,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) play_move_down::movedown#6 reg byte x 6.0 (byte) play_move_down::movedown#7 reg byte x 5.0 (byte) play_move_down::return -(byte) play_move_down::return#2 reg byte x 3.6666666666666665 -(byte) play_move_down::return#3 reg byte a 22.0 +(byte) play_move_down::return#2 reg byte x 33.666666666666664 +(byte) play_move_down::return#3 reg byte a 202.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -680,10 +650,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_leftright::@8 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 7.5 +(byte) play_move_leftright::key_event#0 reg byte a 52.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 reg byte a 3.6666666666666665 -(byte) play_move_leftright::return#4 reg byte a 22.0 +(byte) play_move_leftright::return#1 reg byte a 33.666666666666664 +(byte) play_move_leftright::return#4 reg byte a 202.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 @@ -696,14 +666,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 7.5 +(byte) play_move_rotate::key_event#0 reg byte a 52.5 (byte) play_move_rotate::orientation (byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:5 4.0 (byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:5 4.0 (byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:5 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 reg byte a 3.6666666666666665 -(byte) play_move_rotate::return#4 reg byte a 22.0 +(byte) play_move_rotate::return#1 reg byte a 33.666666666666664 +(byte) play_move_rotate::return#4 reg byte a 202.0 (void()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@10 @@ -716,30 +686,30 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp ZP_BYTE:9 600.5999999999999 +(byte) play_remove_lines::c#0 c zp ZP_BYTE:9 6000.6 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp ZP_BYTE:6 420.59999999999997 -(byte) play_remove_lines::full#4 full zp ZP_BYTE:6 400.4 +(byte) play_remove_lines::full#2 full zp ZP_BYTE:6 4200.6 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:6 4000.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 161.76923076923077 -(byte) play_remove_lines::r#2 reg byte y 1552.0 -(byte) play_remove_lines::r#3 reg byte y 202.0 +(byte) play_remove_lines::r#1 reg byte y 1615.6153846153845 +(byte) play_remove_lines::r#2 reg byte y 15502.0 +(byte) play_remove_lines::r#3 reg byte y 2002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 551.0 -(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 -(byte) play_remove_lines::w#12 reg byte x 202.0 -(byte) play_remove_lines::w#2 reg byte x 202.0 -(byte) play_remove_lines::w#3 reg byte x 202.0 -(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 -(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 +(byte) play_remove_lines::w#1 reg byte x 5501.0 +(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 +(byte) play_remove_lines::w#12 reg byte x 2002.0 +(byte) play_remove_lines::w#2 reg byte x 2002.0 +(byte) play_remove_lines::w#3 reg byte x 2002.0 +(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 +(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp ZP_BYTE:5 1501.5 -(byte) play_remove_lines::x#2 x zp ZP_BYTE:5 250.25 +(byte) play_remove_lines::x#1 x zp ZP_BYTE:5 15001.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:5 2500.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 151.5 -(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 14.428571428571429 +(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 143.0 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$1 reg byte a 2002.0 (byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.13333333333333333 (label) play_spawn_current::@1 (label) play_spawn_current::@2 @@ -747,8 +717,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) play_spawn_current::@7 (label) play_spawn_current::@return (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 -(byte) play_spawn_current::piece_idx#2 reg byte x 35.00000000000001 +(byte) play_spawn_current::piece_idx#1 reg byte x 2002.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 334.99999999999994 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines @@ -768,29 +738,29 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) render_current::@9 (label) render_current::@return (byte) render_current::c -(byte) render_current::c#1 reg byte x 1501.5 -(byte) render_current::c#2 reg byte x 286.0 +(byte) render_current::c#1 c zp ZP_BYTE:13 1501.5 +(byte) render_current::c#2 c zp ZP_BYTE:13 286.0 (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i -(byte) render_current::i#1 i zp ZP_BYTE:12 202.0 -(byte) render_current::i#10 i zp ZP_BYTE:12 429.0 -(byte) render_current::i#3 i zp ZP_BYTE:12 50.5 -(byte) render_current::i#4 i zp ZP_BYTE:12 1552.0 -(byte) render_current::i#8 i zp ZP_BYTE:12 300.75 +(byte) render_current::i#1 i zp ZP_BYTE:11 202.0 +(byte) render_current::i#10 i zp ZP_BYTE:11 429.0 +(byte) render_current::i#3 i zp ZP_BYTE:11 50.5 +(byte) render_current::i#4 i zp ZP_BYTE:11 1552.0 +(byte) render_current::i#8 i zp ZP_BYTE:11 300.75 (byte) render_current::l -(byte) render_current::l#1 l zp ZP_BYTE:11 151.5 -(byte) render_current::l#4 l zp ZP_BYTE:11 11.222222222222221 +(byte) render_current::l#1 l zp ZP_BYTE:10 151.5 +(byte) render_current::l#4 l zp ZP_BYTE:10 11.222222222222221 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:28 100.18181818181819 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:29 100.18181818181819 (byte) render_current::xpos -(byte) render_current::xpos#0 xpos zp ZP_BYTE:13 202.0 -(byte) render_current::xpos#1 xpos zp ZP_BYTE:13 667.3333333333334 -(byte) render_current::xpos#2 xpos zp ZP_BYTE:13 684.1666666666667 +(byte) render_current::xpos#0 xpos zp ZP_BYTE:12 202.0 +(byte) render_current::xpos#1 xpos zp ZP_BYTE:12 667.3333333333334 +(byte) render_current::xpos#2 xpos zp ZP_BYTE:12 684.1666666666667 (byte) render_current::ypos2 -(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:10 4.0 -(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:10 67.33333333333333 -(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:10 29.823529411764707 +(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:9 4.0 +(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:9 67.33333333333333 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:9 29.823529411764707 (void()) render_init() (byte*~) render_init::$12 $12 zp ZP_WORD:15 202.0 (byte~) render_init::$22 reg byte a 22.0 @@ -894,17 +864,18 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) render_screen_original::y#1 y zp ZP_BYTE:2 16.5 (byte) render_screen_original::y#8 y zp ZP_BYTE:2 1.0 (byte) render_screen_render -(byte) render_screen_render#10 render_screen_render zp ZP_BYTE:3 3.25 -(byte) render_screen_render#15 render_screen_render zp ZP_BYTE:3 1.277777777777778 -(byte) render_screen_render#18 reg byte x 8.615384615384615 -(byte) render_screen_render#27 render_screen_render#27 zp ZP_BYTE:5 5.090909090909091 -(byte) render_screen_render#31 render_screen_render zp ZP_BYTE:3 16.5 -(byte~) render_screen_render#68 render_screen_render#68 zp ZP_BYTE:5 5.5 -(byte~) render_screen_render#69 reg byte x 22.0 +(byte) render_screen_render#11 render_screen_render zp ZP_BYTE:3 3.25 +(byte) render_screen_render#16 render_screen_render zp ZP_BYTE:3 1.0 +(byte) render_screen_render#19 reg byte x 8.615384615384615 +(byte) render_screen_render#28 render_screen_render#28 zp ZP_BYTE:5 5.090909090909091 +(byte~) render_screen_render#62 render_screen_render#62 zp ZP_BYTE:5 5.5 +(byte~) render_screen_render#63 reg byte x 22.0 (byte) render_screen_show -(byte) render_screen_show#11 render_screen_show zp ZP_BYTE:2 4.333333333333333 -(byte) render_screen_show#15 render_screen_show zp ZP_BYTE:2 0.8604651162790697 -(byte) render_screen_show#24 render_screen_show zp ZP_BYTE:2 16.5 +(byte) render_screen_show#13 render_screen_show zp ZP_BYTE:2 4.333333333333333 +(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.39534883720930225 +(byte) render_screen_showing +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:24 0.5714285714285714 +(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:24 20.0 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() @@ -947,8 +918,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 34.33333333333333 -(byte) sid_rnd::return#2 reg byte a 202.0 +(byte) sid_rnd::return#0 reg byte a 334.33333333333337 +(byte) sid_rnd::return#2 reg byte a 2002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (void()) sprites_init() @@ -962,6 +933,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (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 +interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +(byte~) sprites_irq::$4 reg byte a 4.0 +(label) sprites_irq::@1 +(label) sprites_irq::@10 +(label) sprites_irq::@12 +(label) sprites_irq::@13 +(label) sprites_irq::@2 +(label) sprites_irq::@3 +(label) sprites_irq::@4 +(label) sprites_irq::@5 +(label) sprites_irq::@6 +(label) sprites_irq::@7 +(label) sprites_irq::@8 +(label) sprites_irq::@return +(byte) sprites_irq::ptr +(byte) sprites_irq::ptr#0 reg byte x 2.5 +(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#2 reg byte a 4.0 +(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte x 4.0 +(byte) sprites_irq::raster_next +(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 +(byte) sprites_irq::raster_next#1 reg byte x 4.0 +(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(label) sprites_irq::toSpritePtr2 +(word~) sprites_irq::toSpritePtr2_$0 +(word~) sprites_irq::toSpritePtr2_$1 +(byte~) sprites_irq::toSpritePtr2_$2 +(byte) sprites_irq::toSpritePtr2_return +(const byte) sprites_irq::toSpritePtr2_return#0 toSpritePtr2_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) sprites_irq::toSpritePtr2_sprite +(byte) sprites_irq::ypos +(byte) sprites_irq::ypos#0 reg byte a 2.5 (void()) sprites_irq_init() (label) sprites_irq_init::@return (label) toSpritePtr1 @@ -972,20 +976,20 @@ 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 -zp ZP_BYTE:2 [ render_screen_show#15 render_screen_show#24 render_screen_show#11 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#8 render_screen_original::y#1 ] -zp ZP_BYTE:3 [ render_screen_render#15 render_screen_render#31 render_screen_render#10 ] +zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_init::l#4 render_init::l#1 render_screen_original::y#8 render_screen_original::y#1 ] +zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ] zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 ] -reg byte x [ current_ypos#9 current_ypos#83 current_ypos#84 ] -zp ZP_BYTE:5 [ render_screen_render#27 render_screen_render#68 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_BYTE:6 [ current_xpos#47 current_xpos#109 current_xpos#110 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] -zp ZP_WORD:7 [ current_piece_gfx#52 current_piece_gfx#99 current_piece_gfx#100 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::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] -zp ZP_BYTE:9 [ current_piece_char#62 current_piece_char#87 current_piece_char#88 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:10 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::l#6 play_collision::l#1 ] -zp ZP_BYTE:11 [ render_current::l#4 render_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:12 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -zp ZP_BYTE:13 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 main::key_event#0 ] -reg byte x [ render_current::c#2 render_current::c#1 ] -reg byte x [ render_screen_render#18 render_screen_render#69 ] +reg byte y [ current_ypos#9 current_ypos#84 current_ypos#85 ] +zp ZP_BYTE:5 [ render_screen_render#28 render_screen_render#62 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::x#2 play_remove_lines::x#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_BYTE:6 [ current_xpos#47 current_xpos#110 current_xpos#111 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_remove_lines::full#4 play_remove_lines::full#2 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 keyboard_event_pressed::row_bits#0 ] +zp ZP_WORD:7 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ] +reg byte x [ current_piece_char#63 current_piece_char#88 current_piece_char#89 ] +zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::c#0 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:10 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:11 [ 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:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 main::key_event#0 ] +reg byte x [ render_screen_render#19 render_screen_render#63 ] reg byte a [ play_move_rotate::return#1 ] reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] @@ -994,7 +998,7 @@ 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_BYTE:14 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -zp ZP_WORD:15 [ current_piece#20 current_piece#77 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] +zp ZP_WORD:15 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ] zp ZP_BYTE:17 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_WORD:18 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] zp ZP_BYTE:20 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] @@ -1015,26 +1019,26 @@ reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte y [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ] reg byte x [ render_screen_original::x#7 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:23 [ 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:24 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:25 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:26 [ irq_cnt#0 irq_cnt#1 irq_cnt#13 ] -reg byte a [ main::$9 ] +zp ZP_BYTE:23 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] +reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:24 [ render_screen_showing#0 render_screen_showing#1 ] +zp ZP_BYTE:25 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:26 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:27 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] reg byte a [ keyboard_event_get::return#3 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$13 ] -zp ZP_BYTE:27 [ main::render#1 main::render#2 ] +reg byte a [ main::$12 ] +zp ZP_BYTE:28 [ 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::$14 ] +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::$15 ] +reg byte a [ main::$14 ] reg byte a [ main::render#3 ] reg byte a [ render_current::$5 ] -zp ZP_WORD:28 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +zp ZP_WORD:29 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] @@ -1042,7 +1046,7 @@ 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:30 [ play_collision::i#1 ] +zp ZP_BYTE:31 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] @@ -1078,8 +1082,10 @@ reg byte a [ play_init::$1 ] reg byte a [ sprites_init::s2#0 ] reg byte a [ render_init::$22 ] reg byte a [ render_init::$23 ] -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 ] +reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::ptr#0 ] +reg byte x [ sprites_irq::ptr#3 ] +reg byte x [ sprites_irq::ptr#4 ] +reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#1 ] +reg byte a [ sprites_irq::ptr#2 ]