diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index be4db07c4..38b1640ac 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -46,8 +46,8 @@ public class TestPrograms { } @Test - public void testBlackhole() throws IOException, URISyntaxException { - compileAndCompare("complex/blackhole/blackhole", log()); + public void testClearscreen() throws IOException, URISyntaxException { + compileAndCompare("complex/clearscreen/clearscreen"); } // TODO: Optimize unused IRQ's away (and other unused funtions that reference each other circularly) diff --git a/src/test/kc/complex/blackhole/blackhole.kc b/src/test/kc/complex/clearscreen/clearscreen.kc similarity index 93% rename from src/test/kc/complex/blackhole/blackhole.kc rename to src/test/kc/complex/clearscreen/clearscreen.kc index 400bb4581..d4440897f 100644 --- a/src/test/kc/complex/blackhole/blackhole.kc +++ b/src/test/kc/complex/clearscreen/clearscreen.kc @@ -2,6 +2,9 @@ import "c64" import "multiply" +// Generate debug code (raster time usage etc.) +const bool DEBUG = false; + // Address of the screen const byte* SCREEN = 0x0400; // Sprite data for the animating sprites @@ -197,13 +200,15 @@ void processChars() { processing->vx += VXSIN[xchar]; processing->x += processing->vx; byte ychar = (byte)(ypos/8) - BORDER_YPOS_TOP/8; - processing->vy += VYSIN[ychar]; + processing->vy += VYSIN[ychar]; processing->y += processing->vy; } numActive++; } } - *(SCREEN+999) = '0'+numActive; + if(DEBUG) { + *(SCREEN+999) = '0'+numActive; + } } // SQUARES_X[i] = (i-20)*(i-20) @@ -261,12 +266,14 @@ const byte RASTER_IRQ_TOP = 0x30; // Raster Interrupt at the top of the screen interrupt(hardware_all) void irqTop() { - for( byte i: 0..4) {} - //*BORDERCOL = WHITE; - //*BGCOL = WHITE; - for( byte i: 0..7) {} - //*BORDERCOL = LIGHT_BLUE; - //*BGCOL = BLUE; + if(DEBUG) { + for( byte i: 0..4) {} + *BORDERCOL = WHITE; + *BGCOL = WHITE; + for( byte i: 0..7) {} + *BORDERCOL = LIGHT_BLUE; + *BGCOL = BLUE; + } // Trigger IRQ at the middle of the screen *RASTER = RASTER_IRQ_MIDDLE; @@ -277,14 +284,18 @@ interrupt(hardware_all) void irqTop() { const byte RASTER_IRQ_MIDDLE = 0xff; -// Raster Interrupt at the middle of the screen +// Raster Interrupt at the bottom of the screen interrupt(hardware_all) void irqBottom() { - for( byte i: 0..4) {} - //*BORDERCOL = WHITE; - //*BGCOL = WHITE; + if(DEBUG) { + for( byte i: 0..4) {} + *BORDERCOL = WHITE; + *BGCOL = WHITE; + } processChars(); - //*BORDERCOL = LIGHT_BLUE; - //*BGCOL = BLUE; + if(DEBUG) { + *BORDERCOL = LIGHT_BLUE; + *BGCOL = BLUE; + } // Trigger IRQ at the top of the screen *RASTER = RASTER_IRQ_TOP; diff --git a/src/test/ref/complex/blackhole/blackhole.asm b/src/test/ref/complex/clearscreen/clearscreen.asm similarity index 97% rename from src/test/ref/complex/blackhole/blackhole.asm rename to src/test/ref/complex/clearscreen/clearscreen.asm index 31dc323e6..8fcd03f48 100644 --- a/src/test/ref/complex/blackhole/blackhole.asm +++ b/src/test/ref/complex/clearscreen/clearscreen.asm @@ -755,16 +755,11 @@ mul8u: { rol mb+1 jmp b1 } -// Raster Interrupt at the middle of the screen +// Raster Interrupt at the bottom of the screen irqBottom: { sta rega+1 stx regx+1 sty regy+1 - ldx #0 - b1: - inx - cpx #5 - bne b1 jsr processChars // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP @@ -786,8 +781,8 @@ irqBottom: { } // Process any chars in the PROCESSING array processChars: { - .label _16 = $38 - .label _26 = $36 + .label _15 = $38 + .label _25 = $36 .label processing = $33 .label bitmask = $35 .label i = $1e @@ -894,19 +889,19 @@ processChars: { sta SPRITES_XPOS,x ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _16 + sta _15 iny lda (processing),y - sta _16+1 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lda _16 + sta _15+1 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lda _15 sta ypos sta SPRITES_YPOS,x // Move sprite @@ -964,17 +959,15 @@ processChars: { dey lda #> (byte) 4 - [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 + [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 + [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 - [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 - [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 - [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 - [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 - to:processChars::@15 -processChars::@15: scope:[processChars] from processChars::@5 - [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 + [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 + [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 + [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 + [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 + [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@14 -processChars::@14: scope:[processChars] from processChars::@15 - [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 +processChars::@14: scope:[processChars] from processChars::@5 + [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@14 - [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 + [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + to:processChars::@12 +processChars::@12: scope:[processChars] from processChars::@13 + [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@13 - [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 - [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 - [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 - [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 - [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) - [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 - [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 - [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 - [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) - [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) +processChars::@9: scope:[processChars] from processChars::@12 + [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 + [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 + [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 + [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) + [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 + [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 + [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) + [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [249] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 - to:processChars::@12 -processChars::@12: scope:[processChars] from processChars::@2 - [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 + [246] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@12 - [254] return +processChars::@return: scope:[processChars] from processChars::@2 + [249] return to:@return -processChars::@6: scope:[processChars] from processChars::@13 processChars::@14 processChars::@15 processChars::@5 - [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 +processChars::@6: scope:[processChars] from processChars::@12 processChars::@13 processChars::@14 processChars::@5 + [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [259] phi() + [254] phi() to:irqTop::@1 -irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [260] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 - to:irqTop::@2 -irqTop::@2: scope:[irqTop] from irqTop::@1 irqTop::@2 - [263] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) - [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 - to:irqTop::@3 -irqTop::@3: scope:[irqTop] from irqTop::@2 - [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +irqTop::@1: scope:[irqTop] from irqTop + [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return -irqTop::@return: scope:[irqTop] from irqTop::@3 - [269] return +irqTop::@return: scope:[irqTop] from irqTop::@1 + [258] return to:@return diff --git a/src/test/ref/complex/blackhole/blackhole.log b/src/test/ref/complex/clearscreen/clearscreen.log similarity index 83% rename from src/test/ref/complex/blackhole/blackhole.log rename to src/test/ref/complex/clearscreen/clearscreen.log index 8c5b535e5..0d9fb98e3 100644 --- a/src/test/ref/complex/blackhole/blackhole.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -4,7 +4,7 @@ Resolved forward reference SQUARES_X to (word[$28]) SQUARES_X Resolved forward reference SQUARES_Y to (word[$19]) SQUARES_Y Resolved forward reference RASTER_IRQ_MIDDLE to (byte) RASTER_IRQ_MIDDLE Resolved forward reference irqBottom to interrupt(HARDWARE_ALL)(void()) irqBottom() -Fixing pointer addition (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i +Fixing pointer addition (struct ProcessingSprite*~) processChars::$2 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) main::i) Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) getCharToProcess::x) Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) getCharToProcess::y) @@ -103,7 +103,7 @@ Rewriting struct pointer member access *((struct ProcessingSprite*) processChars Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y -Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$12 +Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$11 Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0 Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1 Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000 @@ -176,8 +176,9 @@ Culled Empty Block (label) getCharToProcess::@2 Culled Empty Block (label) @11 Culled Empty Block (label) startProcessing::@6 Culled Empty Block (label) startProcessing::@7 -Culled Empty Block (label) processChars::@9 -Culled Empty Block (label) processChars::@11 +Culled Empty Block (label) processChars::@10 +Culled Empty Block (label) processChars::@12 +Culled Empty Block (label) processChars::@1 Culled Empty Block (label) initSquareTables::@5 Culled Empty Block (label) initSquareTables::@6 Culled Empty Block (label) initSquareTables::@12 @@ -210,6 +211,8 @@ CONTROL FLOW GRAPH SSA (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (number) $d017 (byte*) SPRITES_MC#0 ← ((byte*)) (number) $d01c (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (number) $d01d + (byte*) BORDERCOL#0 ← ((byte*)) (number) $d020 + (byte*) BGCOL#0 ← ((byte*)) (number) $d021 (byte*) SPRITES_COLS#0 ← ((byte*)) (number) $d027 (byte*) VIC_CONTROL#0 ← ((byte*)) (number) $d011 (byte*) IRQ_STATUS#0 ← ((byte*)) (number) $d019 @@ -219,6 +222,8 @@ CONTROL FLOW GRAPH SSA (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (number) $dc0d (byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f (void()**) HARDWARE_IRQ#0 ← ((void()**)) (number) $fffe + (byte) WHITE#0 ← (number) 1 + (byte) BLUE#0 ← (number) 6 (byte) LIGHT_BLUE#0 ← (number) $e to:@9 mul8u: scope:[mul8u] from initSquareTables::@11 initSquareTables::@4 @@ -269,6 +274,7 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 return to:@return @9: scope:[] from @begin + (bool) DEBUG#0 ← false (byte*) SCREEN#0 ← ((byte*)) (number) $400 (byte*) SPRITE_DATA#0 ← ((byte*)) (number) $2000 (word*) VXSIN#0 ← ((word*)) (number) $2200 @@ -638,170 +644,175 @@ startProcessing::@return: scope:[startProcessing] from startProcessing::@10 } }} to:@13 -processChars: scope:[processChars] from irqBottom::@2 +processChars: scope:[processChars] from irqBottom::@1 (byte) processChars::numActive#0 ← (number) 0 - (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) processChars::$1 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) processChars::i#0 ← (byte) 0 - to:processChars::@1 -processChars::@1: scope:[processChars] from processChars processChars::@2 - (byte) processChars::numActive#7 ← phi( processChars/(byte) processChars::numActive#0 processChars::@2/(byte) processChars::numActive#6 ) - (byte) processChars::i#2 ← phi( processChars/(byte) processChars::i#0 processChars::@2/(byte) processChars::i#1 ) - (byte~) processChars::$36 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 - (struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$3 - (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39) - (byte) processChars::bitmask#0 ← (number~) processChars::$4 - (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 - (bool~) processChars::$6 ← ! (bool~) processChars::$5 - if((bool~) processChars::$6) goto processChars::@2 - to:processChars::@12 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - (byte) processChars::numActive#6 ← phi( processChars::@1/(byte) processChars::numActive#7 processChars::@7/(byte) processChars::numActive#1 ) - (byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@7/(byte) processChars::i#5 ) - (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$2) - (bool~) processChars::$35 ← (byte) processChars::i#1 != rangelast(0,processChars::$2) - if((bool~) processChars::$35) goto processChars::@1 - to:processChars::@14 -processChars::@12: scope:[processChars] from processChars::@1 - (byte) processChars::numActive#12 ← phi( processChars::@1/(byte) processChars::numActive#7 ) - (byte) processChars::i#11 ← phi( processChars::@1/(byte) processChars::i#2 ) - (byte) processChars::bitmask#5 ← phi( processChars::@1/(byte) processChars::bitmask#0 ) - (struct ProcessingSprite*) processChars::processing#1 ← phi( processChars::@1/(struct ProcessingSprite*) processChars::processing#0 ) - (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#1 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 - (bool~) processChars::$8 ← ! (bool~) processChars::$7 - if((bool~) processChars::$8) goto processChars::@3 - to:processChars::@13 -processChars::@3: scope:[processChars] from processChars::@12 processChars::@13 - (byte) processChars::numActive#11 ← phi( processChars::@12/(byte) processChars::numActive#12 processChars::@13/(byte) processChars::numActive#13 ) - (byte) processChars::i#8 ← phi( processChars::@12/(byte) processChars::i#11 processChars::@13/(byte) processChars::i#12 ) - (byte) processChars::bitmask#6 ← phi( processChars::@12/(byte) processChars::bitmask#5 processChars::@13/(byte) processChars::bitmask#1 ) - (struct ProcessingSprite*) processChars::processing#2 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 processChars::@13/(struct ProcessingSprite*) processChars::processing#3 ) - (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#2 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4 - (word) processChars::xpos#0 ← (word~) processChars::$11 - (byte~) processChars::$12 ← > (word) processChars::xpos#0 - (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12 - if((bool~) processChars::$63) goto processChars::@4 - to:processChars::@8 -processChars::@13: scope:[processChars] from processChars::@12 - (byte) processChars::numActive#13 ← phi( processChars::@12/(byte) processChars::numActive#12 ) - (byte) processChars::i#12 ← phi( processChars::@12/(byte) processChars::i#11 ) - (byte) processChars::bitmask#1 ← phi( processChars::@12/(byte) processChars::bitmask#5 ) - (struct ProcessingSprite*) processChars::processing#3 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 ) - (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *(*((byte**) processChars::$43)) ← (byte) ' ' - *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#1 - (byte*~) processChars::$9 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0 - (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44) - (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*~) processChars::$10) ← *((byte*) processChars::$45) - (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) processChars::$46) ← (byte) STATUS_PROCESSING#0 - to:processChars::@3 -processChars::@4: scope:[processChars] from processChars::@3 - (byte) processChars::numActive#9 ← phi( processChars::@3/(byte) processChars::numActive#11 ) - (struct ProcessingSprite*) processChars::processing#7 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 ) - (word) processChars::xpos#3 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#6 ← phi( processChars::@3/(byte) processChars::i#8 ) - (byte) processChars::bitmask#2 ← phi( processChars::@3/(byte) processChars::bitmask#6 ) - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#2 - to:processChars::@5 -processChars::@8: scope:[processChars] from processChars::@3 - (byte) processChars::numActive#10 ← phi( processChars::@3/(byte) processChars::numActive#11 ) - (struct ProcessingSprite*) processChars::processing#8 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 ) - (word) processChars::xpos#4 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#8 ) - (byte) processChars::bitmask#3 ← phi( processChars::@3/(byte) processChars::bitmask#6 ) - (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$13 - to:processChars::@5 -processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - (byte) processChars::numActive#8 ← phi( processChars::@4/(byte) processChars::numActive#9 processChars::@8/(byte) processChars::numActive#10 ) - (byte) processChars::bitmask#7 ← phi( processChars::@4/(byte) processChars::bitmask#2 processChars::@8/(byte) processChars::bitmask#3 ) - (struct ProcessingSprite*) processChars::processing#4 ← phi( processChars::@4/(struct ProcessingSprite*) processChars::processing#7 processChars::@8/(struct ProcessingSprite*) processChars::processing#8 ) - (word) processChars::xpos#1 ← phi( processChars::@4/(word) processChars::xpos#3 processChars::@8/(word) processChars::xpos#4 ) - (byte) processChars::i#4 ← phi( processChars::@4/(byte) processChars::i#6 processChars::@8/(byte) processChars::i#7 ) - (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 - (byte~) processChars::$15 ← ((byte)) (word) processChars::xpos#1 - *((byte*) SPRITES_XPOS#0 + (number~) processChars::$14) ← (byte~) processChars::$15 - (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4 - (byte~) processChars::$17 ← ((byte)) (word~) processChars::$16 - (byte) processChars::ypos#0 ← (byte~) processChars::$17 - (number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2 - *((byte*) SPRITES_YPOS#0 + (number~) processChars::$18) ← (byte) processChars::ypos#0 - (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 - (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 - (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 - (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 - (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22 - (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 - (bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24 - if((bool~) processChars::$25) goto processChars::@6 - to:processChars::@10 -processChars::@6: scope:[processChars] from processChars::@5 - (byte) processChars::i#10 ← phi( processChars::@5/(byte) processChars::i#4 ) - (byte) processChars::numActive#5 ← phi( processChars::@5/(byte) processChars::numActive#8 ) - (byte) processChars::bitmask#4 ← phi( processChars::@5/(byte) processChars::bitmask#7 ) - (struct ProcessingSprite*) processChars::processing#5 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) - (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) processChars::$52) ← (byte) STATUS_FREE#0 - (number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4 - *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) & (number~) processChars::$34 - to:processChars::@7 -processChars::@10: scope:[processChars] from processChars::@5 - (byte) processChars::i#9 ← phi( processChars::@5/(byte) processChars::i#4 ) - (byte) processChars::numActive#4 ← phi( processChars::@5/(byte) processChars::numActive#8 ) - (byte) processChars::ypos#1 ← phi( processChars::@5/(byte) processChars::ypos#0 ) - (struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) - (word) processChars::xpos#2 ← phi( processChars::@5/(word) processChars::xpos#1 ) - (number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8 - (byte~) processChars::$27 ← ((byte)) (number~) processChars::$26 - (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 - (number~) processChars::$29 ← (byte~) processChars::$27 - (number~) processChars::$28 - (byte) processChars::xchar#0 ← (number~) processChars::$29 - (byte~) processChars::$37 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD - (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) processChars::$54) ← *((word*) processChars::$53) + *((word*) VXSIN#0 + (byte~) processChars::$37) - (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) - (number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8 - (byte~) processChars::$31 ← ((byte)) (number~) processChars::$30 - (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 - (number~) processChars::$33 ← (byte~) processChars::$31 - (number~) processChars::$32 - (byte) processChars::ychar#0 ← (number~) processChars::$33 - (byte~) processChars::$38 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD - (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) processChars::$59) ← *((word*) processChars::$58) + *((word*) VYSIN#0 + (byte~) processChars::$38) - (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@10 processChars::@6 - (byte) processChars::i#5 ← phi( processChars::@10/(byte) processChars::i#9 processChars::@6/(byte) processChars::i#10 ) - (byte) processChars::numActive#2 ← phi( processChars::@10/(byte) processChars::numActive#4 processChars::@6/(byte) processChars::numActive#5 ) - (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#2 to:processChars::@2 -processChars::@14: scope:[processChars] from processChars::@2 - (byte) processChars::numActive#3 ← phi( processChars::@2/(byte) processChars::numActive#6 ) - (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 - (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - *((byte*~) processChars::$0) ← (byte~) processChars::$1 +processChars::@2: scope:[processChars] from processChars processChars::@3 + (byte) processChars::numActive#9 ← phi( processChars/(byte) processChars::numActive#0 processChars::@3/(byte) processChars::numActive#8 ) + (byte) processChars::i#2 ← phi( processChars/(byte) processChars::i#0 processChars::@3/(byte) processChars::i#1 ) + (byte~) processChars::$37 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (struct ProcessingSprite*~) processChars::$2 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 + (struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$2 + (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (number~) processChars::$3 ← (number) 1 << *((byte*) processChars::$40) + (byte) processChars::bitmask#0 ← (number~) processChars::$3 + (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (bool~) processChars::$4 ← *((byte*) processChars::$41) != (byte) STATUS_FREE#0 + (bool~) processChars::$5 ← ! (bool~) processChars::$4 + if((bool~) processChars::$5) goto processChars::@3 + to:processChars::@13 +processChars::@3: scope:[processChars] from processChars::@2 processChars::@8 + (byte) processChars::numActive#8 ← phi( processChars::@2/(byte) processChars::numActive#9 processChars::@8/(byte) processChars::numActive#1 ) + (byte) processChars::i#3 ← phi( processChars::@2/(byte) processChars::i#2 processChars::@8/(byte) processChars::i#5 ) + (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$1) + (bool~) processChars::$34 ← (byte) processChars::i#1 != rangelast(0,processChars::$1) + if((bool~) processChars::$34) goto processChars::@2 + to:processChars::@15 +processChars::@13: scope:[processChars] from processChars::@2 + (byte) processChars::numActive#13 ← phi( processChars::@2/(byte) processChars::numActive#9 ) + (byte) processChars::i#11 ← phi( processChars::@2/(byte) processChars::i#2 ) + (byte) processChars::bitmask#5 ← phi( processChars::@2/(byte) processChars::bitmask#0 ) + (struct ProcessingSprite*) processChars::processing#1 ← phi( processChars::@2/(struct ProcessingSprite*) processChars::processing#0 ) + (byte*) processChars::$42 ← (byte*)(struct ProcessingSprite*) processChars::processing#1 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (bool~) processChars::$6 ← *((byte*) processChars::$42) == (byte) STATUS_NEW#0 + (bool~) processChars::$7 ← ! (bool~) processChars::$6 + if((bool~) processChars::$7) goto processChars::@4 + to:processChars::@14 +processChars::@4: scope:[processChars] from processChars::@13 processChars::@14 + (byte) processChars::numActive#12 ← phi( processChars::@13/(byte) processChars::numActive#13 processChars::@14/(byte) processChars::numActive#14 ) + (byte) processChars::i#8 ← phi( processChars::@13/(byte) processChars::i#11 processChars::@14/(byte) processChars::i#12 ) + (byte) processChars::bitmask#6 ← phi( processChars::@13/(byte) processChars::bitmask#5 processChars::@14/(byte) processChars::bitmask#1 ) + (struct ProcessingSprite*) processChars::processing#2 ← phi( processChars::@13/(struct ProcessingSprite*) processChars::processing#1 processChars::@14/(struct ProcessingSprite*) processChars::processing#3 ) + (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#2 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (word~) processChars::$10 ← *((word*) processChars::$43) >> (number) 4 + (word) processChars::xpos#0 ← (word~) processChars::$10 + (byte~) processChars::$11 ← > (word) processChars::xpos#0 + (bool~) processChars::$64 ← (number) 0 != (byte~) processChars::$11 + if((bool~) processChars::$64) goto processChars::@5 + to:processChars::@9 +processChars::@14: scope:[processChars] from processChars::@13 + (byte) processChars::numActive#14 ← phi( processChars::@13/(byte) processChars::numActive#13 ) + (byte) processChars::i#12 ← phi( processChars::@13/(byte) processChars::i#11 ) + (byte) processChars::bitmask#1 ← phi( processChars::@13/(byte) processChars::bitmask#5 ) + (struct ProcessingSprite*) processChars::processing#3 ← phi( processChars::@13/(struct ProcessingSprite*) processChars::processing#1 ) + (byte**) processChars::$44 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *(*((byte**) processChars::$44)) ← (byte) ' ' + *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#1 + (byte*~) processChars::$8 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0 + (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*) processChars::$45) + (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*~) processChars::$9) ← *((byte*) processChars::$46) + (byte*) processChars::$47 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) processChars::$47) ← (byte) STATUS_PROCESSING#0 + to:processChars::@4 +processChars::@5: scope:[processChars] from processChars::@4 + (byte) processChars::numActive#10 ← phi( processChars::@4/(byte) processChars::numActive#12 ) + (struct ProcessingSprite*) processChars::processing#7 ← phi( processChars::@4/(struct ProcessingSprite*) processChars::processing#2 ) + (word) processChars::xpos#3 ← phi( processChars::@4/(word) processChars::xpos#0 ) + (byte) processChars::i#6 ← phi( processChars::@4/(byte) processChars::i#8 ) + (byte) processChars::bitmask#2 ← phi( processChars::@4/(byte) processChars::bitmask#6 ) + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#2 + to:processChars::@6 +processChars::@9: scope:[processChars] from processChars::@4 + (byte) processChars::numActive#11 ← phi( processChars::@4/(byte) processChars::numActive#12 ) + (struct ProcessingSprite*) processChars::processing#8 ← phi( processChars::@4/(struct ProcessingSprite*) processChars::processing#2 ) + (word) processChars::xpos#4 ← phi( processChars::@4/(word) processChars::xpos#0 ) + (byte) processChars::i#7 ← phi( processChars::@4/(byte) processChars::i#8 ) + (byte) processChars::bitmask#3 ← phi( processChars::@4/(byte) processChars::bitmask#6 ) + (number~) processChars::$12 ← (number) $ff ^ (byte) processChars::bitmask#3 + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$12 + to:processChars::@6 +processChars::@6: scope:[processChars] from processChars::@5 processChars::@9 + (byte) processChars::numActive#7 ← phi( processChars::@5/(byte) processChars::numActive#10 processChars::@9/(byte) processChars::numActive#11 ) + (byte) processChars::bitmask#7 ← phi( processChars::@5/(byte) processChars::bitmask#2 processChars::@9/(byte) processChars::bitmask#3 ) + (struct ProcessingSprite*) processChars::processing#4 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#7 processChars::@9/(struct ProcessingSprite*) processChars::processing#8 ) + (word) processChars::xpos#1 ← phi( processChars::@5/(word) processChars::xpos#3 processChars::@9/(word) processChars::xpos#4 ) + (byte) processChars::i#4 ← phi( processChars::@5/(byte) processChars::i#6 processChars::@9/(byte) processChars::i#7 ) + (number~) processChars::$13 ← (byte) processChars::i#4 * (number) 2 + (byte~) processChars::$14 ← ((byte)) (word) processChars::xpos#1 + *((byte*) SPRITES_XPOS#0 + (number~) processChars::$13) ← (byte~) processChars::$14 + (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (word~) processChars::$15 ← *((word*) processChars::$48) >> (number) 4 + (byte~) processChars::$16 ← ((byte)) (word~) processChars::$15 + (byte) processChars::ypos#0 ← (byte~) processChars::$16 + (number~) processChars::$17 ← (byte) processChars::i#4 * (number) 2 + *((byte*) SPRITES_YPOS#0 + (number~) processChars::$17) ← (byte) processChars::ypos#0 + (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (bool~) processChars::$18 ← *((word*) processChars::$49) < (word) XPOS_LEFTMOST#0 + (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (bool~) processChars::$19 ← *((word*) processChars::$50) > (word) XPOS_RIGHTMOST#0 + (bool~) processChars::$20 ← (bool~) processChars::$18 || (bool~) processChars::$19 + (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$21 ← *((word*) processChars::$51) < (word) YPOS_TOPMOST#0 + (bool~) processChars::$22 ← (bool~) processChars::$20 || (bool~) processChars::$21 + (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$23 ← *((word*) processChars::$52) > (word) YPOS_BOTTOMMOST#0 + (bool~) processChars::$24 ← (bool~) processChars::$22 || (bool~) processChars::$23 + if((bool~) processChars::$24) goto processChars::@7 + to:processChars::@11 +processChars::@7: scope:[processChars] from processChars::@6 + (byte) processChars::i#10 ← phi( processChars::@6/(byte) processChars::i#4 ) + (byte) processChars::numActive#5 ← phi( processChars::@6/(byte) processChars::numActive#7 ) + (byte) processChars::bitmask#4 ← phi( processChars::@6/(byte) processChars::bitmask#7 ) + (struct ProcessingSprite*) processChars::processing#5 ← phi( processChars::@6/(struct ProcessingSprite*) processChars::processing#4 ) + (byte*) processChars::$53 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) processChars::$53) ← (byte) STATUS_FREE#0 + (number~) processChars::$33 ← (number) $ff ^ (byte) processChars::bitmask#4 + *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) & (number~) processChars::$33 + to:processChars::@8 +processChars::@11: scope:[processChars] from processChars::@6 + (byte) processChars::i#9 ← phi( processChars::@6/(byte) processChars::i#4 ) + (byte) processChars::numActive#4 ← phi( processChars::@6/(byte) processChars::numActive#7 ) + (byte) processChars::ypos#1 ← phi( processChars::@6/(byte) processChars::ypos#0 ) + (struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@6/(struct ProcessingSprite*) processChars::processing#4 ) + (word) processChars::xpos#2 ← phi( processChars::@6/(word) processChars::xpos#1 ) + (number~) processChars::$25 ← (word) processChars::xpos#2 / (number) 8 + (byte~) processChars::$26 ← ((byte)) (number~) processChars::$25 + (number~) processChars::$27 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 + (number~) processChars::$28 ← (byte~) processChars::$26 - (number~) processChars::$27 + (byte) processChars::xchar#0 ← (number~) processChars::$28 + (byte~) processChars::$38 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD + (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) processChars::$55) ← *((word*) processChars::$54) + *((word*) VXSIN#0 + (byte~) processChars::$38) + (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) processChars::$58) ← *((word*) processChars::$56) + *((word*) processChars::$57) + (number~) processChars::$29 ← (byte) processChars::ypos#1 / (number) 8 + (byte~) processChars::$30 ← ((byte)) (number~) processChars::$29 + (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 + (number~) processChars::$32 ← (byte~) processChars::$30 - (number~) processChars::$31 + (byte) processChars::ychar#0 ← (number~) processChars::$32 + (byte~) processChars::$39 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD + (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) processChars::$60) ← *((word*) processChars::$59) + *((word*) VYSIN#0 + (byte~) processChars::$39) + (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (word*) processChars::$63 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) processChars::$63) ← *((word*) processChars::$61) + *((word*) processChars::$62) + to:processChars::@8 +processChars::@8: scope:[processChars] from processChars::@11 processChars::@7 + (byte) processChars::i#5 ← phi( processChars::@11/(byte) processChars::i#9 processChars::@7/(byte) processChars::i#10 ) + (byte) processChars::numActive#2 ← phi( processChars::@11/(byte) processChars::numActive#4 processChars::@7/(byte) processChars::numActive#5 ) + (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#2 + to:processChars::@3 +processChars::@15: scope:[processChars] from processChars::@3 + (byte) processChars::numActive#6 ← phi( processChars::@3/(byte) processChars::numActive#8 ) + (bool~) processChars::$0 ← ! (bool) DEBUG#0 + if((bool~) processChars::$0) goto processChars::@return + to:processChars::@16 +processChars::@16: scope:[processChars] from processChars::@15 + (byte) processChars::numActive#3 ← phi( processChars::@15/(byte) processChars::numActive#6 ) + (byte*~) processChars::$35 ← (byte*) SCREEN#0 + (number) $3e7 + (byte~) processChars::$36 ← (byte) '0' + (byte) processChars::numActive#3 + *((byte*~) processChars::$35) ← (byte~) processChars::$36 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@14 +processChars::@return: scope:[processChars] from processChars::@15 processChars::@16 return to:@return @13: scope:[] from @12 @@ -951,54 +962,80 @@ setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 (byte) RASTER_IRQ_TOP#0 ← (number) $30 to:@17 irqTop: scope:[irqTop] from - (byte) irqTop::i#0 ← (byte) 0 - to:irqTop::@1 -irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - (byte) irqTop::i#2 ← phi( irqTop/(byte) irqTop::i#0 irqTop::@1/(byte) irqTop::i#1 ) - (byte) irqTop::i#1 ← (byte) irqTop::i#2 + rangenext(0,4) - (bool~) irqTop::$1 ← (byte) irqTop::i#1 != rangelast(0,4) - if((bool~) irqTop::$1) goto irqTop::@1 + (bool~) irqTop::$0 ← ! (bool) DEBUG#0 + if((bool~) irqTop::$0) goto irqTop::@1 to:irqTop::@2 -irqTop::@2: scope:[irqTop] from irqTop::@1 - (byte) irqTop::i1#0 ← (byte) 0 +irqTop::@1: scope:[irqTop] from irqTop irqTop::@6 + *((byte*) RASTER#0) ← (byte) RASTER_IRQ_MIDDLE#0 + (void()*~) irqTop::$1 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() + *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqTop::$1 + *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 + to:irqTop::@return +irqTop::@2: scope:[irqTop] from irqTop + (byte) irqTop::i#0 ← (byte) 0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) irqTop::i1#0 irqTop::@3/(byte) irqTop::i1#1 ) - (byte) irqTop::i1#1 ← (byte) irqTop::i1#2 + rangenext(0,7) - (bool~) irqTop::$2 ← (byte) irqTop::i1#1 != rangelast(0,7) + (byte) irqTop::i#2 ← phi( irqTop::@2/(byte) irqTop::i#0 irqTop::@3/(byte) irqTop::i#1 ) + (byte) irqTop::i#1 ← (byte) irqTop::i#2 + rangenext(0,4) + (bool~) irqTop::$2 ← (byte) irqTop::i#1 != rangelast(0,4) if((bool~) irqTop::$2) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - *((byte*) RASTER#0) ← (byte) RASTER_IRQ_MIDDLE#0 - (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() - *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqTop::$0 - *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 - to:irqTop::@return -irqTop::@return: scope:[irqTop] from irqTop::@4 + *((byte*) BORDERCOL#0) ← (byte) WHITE#0 + *((byte*) BGCOL#0) ← (byte) WHITE#0 + (byte) irqTop::i1#0 ← (byte) 0 + to:irqTop::@5 +irqTop::@5: scope:[irqTop] from irqTop::@4 irqTop::@5 + (byte) irqTop::i1#2 ← phi( irqTop::@4/(byte) irqTop::i1#0 irqTop::@5/(byte) irqTop::i1#1 ) + (byte) irqTop::i1#1 ← (byte) irqTop::i1#2 + rangenext(0,7) + (bool~) irqTop::$3 ← (byte) irqTop::i1#1 != rangelast(0,7) + if((bool~) irqTop::$3) goto irqTop::@5 + to:irqTop::@6 +irqTop::@6: scope:[irqTop] from irqTop::@5 + *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0 + *((byte*) BGCOL#0) ← (byte) BLUE#0 + to:irqTop::@1 +irqTop::@return: scope:[irqTop] from irqTop::@1 return to:@return @17: scope:[] from @16 (byte) RASTER_IRQ_MIDDLE#0 ← (number) $ff to:@18 irqBottom: scope:[irqBottom] from - (byte) irqBottom::i#0 ← (byte) 0 - to:irqBottom::@1 -irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - (byte) irqBottom::i#2 ← phi( irqBottom/(byte) irqBottom::i#0 irqBottom::@1/(byte) irqBottom::i#1 ) - (byte) irqBottom::i#1 ← (byte) irqBottom::i#2 + rangenext(0,4) - (bool~) irqBottom::$2 ← (byte) irqBottom::i#1 != rangelast(0,4) - if((bool~) irqBottom::$2) goto irqBottom::@1 - to:irqBottom::@2 -irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - call processChars + (bool~) irqBottom::$0 ← ! (bool) DEBUG#0 + if((bool~) irqBottom::$0) goto irqBottom::@1 to:irqBottom::@3 -irqBottom::@3: scope:[irqBottom] from irqBottom::@2 +irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@6 + call processChars + to:irqBottom::@7 +irqBottom::@7: scope:[irqBottom] from irqBottom::@1 + (bool~) irqBottom::$2 ← ! (bool) DEBUG#0 + if((bool~) irqBottom::$2) goto irqBottom::@2 + to:irqBottom::@4 +irqBottom::@3: scope:[irqBottom] from irqBottom + (byte) irqBottom::i#0 ← (byte) 0 + to:irqBottom::@5 +irqBottom::@5: scope:[irqBottom] from irqBottom::@3 irqBottom::@5 + (byte) irqBottom::i#2 ← phi( irqBottom::@3/(byte) irqBottom::i#0 irqBottom::@5/(byte) irqBottom::i#1 ) + (byte) irqBottom::i#1 ← (byte) irqBottom::i#2 + rangenext(0,4) + (bool~) irqBottom::$4 ← (byte) irqBottom::i#1 != rangelast(0,4) + if((bool~) irqBottom::$4) goto irqBottom::@5 + to:irqBottom::@6 +irqBottom::@6: scope:[irqBottom] from irqBottom::@5 + *((byte*) BORDERCOL#0) ← (byte) WHITE#0 + *((byte*) BGCOL#0) ← (byte) WHITE#0 + to:irqBottom::@1 +irqBottom::@2: scope:[irqBottom] from irqBottom::@4 irqBottom::@7 *((byte*) RASTER#0) ← (byte) RASTER_IRQ_TOP#0 - (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() - *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqBottom::$1 + (void()*~) irqBottom::$3 ← & interrupt(HARDWARE_ALL)(void()) irqTop() + *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqBottom::$3 *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 to:irqBottom::@return -irqBottom::@return: scope:[irqBottom] from irqBottom::@3 +irqBottom::@4: scope:[irqBottom] from irqBottom::@7 + *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0 + *((byte*) BGCOL#0) ← (byte) BLUE#0 + to:irqBottom::@2 +irqBottom::@return: scope:[irqBottom] from irqBottom::@2 return to:@return @18: scope:[] from @17 @@ -1028,6 +1065,12 @@ SYMBOL TABLE SSA (label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 (byte) BORDER_XPOS_LEFT (byte) BORDER_XPOS_LEFT#0 (word) BORDER_XPOS_RIGHT @@ -1044,6 +1087,8 @@ SYMBOL TABLE SSA (byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(bool) DEBUG +(bool) DEBUG#0 (void()**) HARDWARE_IRQ (void()**) HARDWARE_IRQ#0 (byte*) IRQ_ENABLE @@ -1137,6 +1182,8 @@ SYMBOL TABLE SSA (word*) VXSIN#0 (word*) VYSIN (word*) VYSIN#0 +(byte) WHITE +(byte) WHITE#0 (word) XPOS_LEFTMOST (word) XPOS_LEFTMOST#0 (word) XPOS_RIGHTMOST @@ -1322,24 +1369,33 @@ SYMBOL TABLE SSA (byte) initSquareTables::y_dist (byte) initSquareTables::y_dist#0 interrupt(HARDWARE_ALL)(void()) irqBottom() -(void()*~) irqBottom::$1 +(bool~) irqBottom::$0 (bool~) irqBottom::$2 +(void()*~) irqBottom::$3 +(bool~) irqBottom::$4 (label) irqBottom::@1 (label) irqBottom::@2 (label) irqBottom::@3 +(label) irqBottom::@4 +(label) irqBottom::@5 +(label) irqBottom::@6 +(label) irqBottom::@7 (label) irqBottom::@return (byte) irqBottom::i (byte) irqBottom::i#0 (byte) irqBottom::i#1 (byte) irqBottom::i#2 interrupt(HARDWARE_ALL)(void()) irqTop() -(void()*~) irqTop::$0 -(bool~) irqTop::$1 +(bool~) irqTop::$0 +(void()*~) irqTop::$1 (bool~) irqTop::$2 +(bool~) irqTop::$3 (label) irqTop::@1 (label) irqTop::@2 (label) irqTop::@3 (label) irqTop::@4 +(label) irqTop::@5 +(label) irqTop::@6 (label) irqTop::@return (byte) irqTop::i (byte) irqTop::i#0 @@ -1459,56 +1515,56 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#5 (word) mul8u::return#6 (void()) processChars() -(byte*~) processChars::$0 -(byte~) processChars::$1 -(byte*~) processChars::$10 -(word~) processChars::$11 -(byte~) processChars::$12 +(bool~) processChars::$0 +(number~) processChars::$1 +(word~) processChars::$10 +(byte~) processChars::$11 +(number~) processChars::$12 (number~) processChars::$13 -(number~) processChars::$14 -(byte~) processChars::$15 -(word~) processChars::$16 -(byte~) processChars::$17 -(number~) processChars::$18 +(byte~) processChars::$14 +(word~) processChars::$15 +(byte~) processChars::$16 +(number~) processChars::$17 +(bool~) processChars::$18 (bool~) processChars::$19 -(number~) processChars::$2 +(struct ProcessingSprite*~) processChars::$2 (bool~) processChars::$20 (bool~) processChars::$21 (bool~) processChars::$22 (bool~) processChars::$23 (bool~) processChars::$24 -(bool~) processChars::$25 -(number~) processChars::$26 -(byte~) processChars::$27 +(number~) processChars::$25 +(byte~) processChars::$26 +(number~) processChars::$27 (number~) processChars::$28 (number~) processChars::$29 -(struct ProcessingSprite*~) processChars::$3 -(number~) processChars::$30 -(byte~) processChars::$31 +(number~) processChars::$3 +(byte~) processChars::$30 +(number~) processChars::$31 (number~) processChars::$32 (number~) processChars::$33 -(number~) processChars::$34 -(bool~) processChars::$35 +(bool~) processChars::$34 +(byte*~) processChars::$35 (byte~) processChars::$36 (byte~) processChars::$37 (byte~) processChars::$38 -(byte*) processChars::$39 -(number~) processChars::$4 +(byte~) processChars::$39 +(bool~) processChars::$4 (byte*) processChars::$40 (byte*) processChars::$41 -(word*) processChars::$42 -(byte**) processChars::$43 -(byte*) processChars::$44 +(byte*) processChars::$42 +(word*) processChars::$43 +(byte**) processChars::$44 (byte*) processChars::$45 (byte*) processChars::$46 -(word*) processChars::$47 +(byte*) processChars::$47 (word*) processChars::$48 (word*) processChars::$49 (bool~) processChars::$5 (word*) processChars::$50 (word*) processChars::$51 -(byte*) processChars::$52 -(word*) processChars::$53 +(word*) processChars::$52 +(byte*) processChars::$53 (word*) processChars::$54 (word*) processChars::$55 (word*) processChars::$56 @@ -1519,15 +1575,16 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word*) processChars::$60 (word*) processChars::$61 (word*) processChars::$62 -(bool~) processChars::$63 +(word*) processChars::$63 +(bool~) processChars::$64 (bool~) processChars::$7 -(bool~) processChars::$8 +(byte*~) processChars::$8 (byte*~) processChars::$9 -(label) processChars::@1 -(label) processChars::@10 -(label) processChars::@12 +(label) processChars::@11 (label) processChars::@13 (label) processChars::@14 +(label) processChars::@15 +(label) processChars::@16 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 @@ -1535,6 +1592,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@6 (label) processChars::@7 (label) processChars::@8 +(label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask (byte) processChars::bitmask#0 @@ -1566,6 +1624,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::numActive#11 (byte) processChars::numActive#12 (byte) processChars::numActive#13 +(byte) processChars::numActive#14 (byte) processChars::numActive#2 (byte) processChars::numActive#3 (byte) processChars::numActive#4 @@ -1744,6 +1803,8 @@ Adding number conversion cast (unumber) $fa in (byte) BORDER_YPOS_BOTTOM#0 ← ( Adding number conversion cast (unumber) $3f8 in (word) SPRITE_PTRS#0 ← (number) $3f8 Adding number conversion cast (unumber) 1 in (byte) IRQ_RASTER#0 ← (number) 1 Adding number conversion cast (unumber) $7f in (byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f +Adding number conversion cast (unumber) 1 in (byte) WHITE#0 ← (number) 1 +Adding number conversion cast (unumber) 6 in (byte) BLUE#0 ← (number) 6 Adding number conversion cast (unumber) $e in (byte) LIGHT_BLUE#0 ← (number) $e Adding number conversion cast (unumber) 0 in (word) mul8u::res#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (number) 0 @@ -1807,32 +1868,32 @@ Adding number conversion cast (unumber) $5 in (number~) $5 ← (byte) BORDER_YPO Adding number conversion cast (unumber) 4 in (word~) $7 ← (word~) $6 << (number) 4 Adding number conversion cast (unumber) 4 in (word~) $9 ← (word~) $8 << (number) 4 Adding number conversion cast (unumber) 0 in (byte) processChars::numActive#0 ← (number) 0 -Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39) -Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (unumber)(number) 1 << *((byte*) processChars::$39) -Adding number conversion cast (unumber) 4 in (word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4 -Adding number conversion cast (unumber) 0 in (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12 -Adding number conversion cast (unumber) $ff in (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) 2 in (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 -Adding number conversion cast (unumber) processChars::$14 in (number~) processChars::$14 ← (byte) processChars::i#4 * (unumber)(number) 2 -Adding number conversion cast (unumber) 4 in (word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4 -Adding number conversion cast (unumber) 2 in (number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2 -Adding number conversion cast (unumber) processChars::$18 in (number~) processChars::$18 ← (byte) processChars::i#4 * (unumber)(number) 2 -Adding number conversion cast (unumber) $ff in (number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) processChars::$34 in (number~) processChars::$34 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) 8 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8 -Adding number conversion cast (unumber) processChars::$26 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (unumber)(number) 8 -Adding number conversion cast (unumber) 8 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 -Adding number conversion cast (unumber) processChars::$28 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (unumber)(number) 8 -Adding number conversion cast (unumber) processChars::$29 in (number~) processChars::$29 ← (byte~) processChars::$27 - (unumber~) processChars::$28 -Adding number conversion cast (unumber) 8 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8 -Adding number conversion cast (unumber) processChars::$30 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (unumber)(number) 8 -Adding number conversion cast (unumber) 8 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 -Adding number conversion cast (unumber) processChars::$32 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (unumber)(number) 8 -Adding number conversion cast (unumber) processChars::$33 in (number~) processChars::$33 ← (byte~) processChars::$31 - (unumber~) processChars::$32 -Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 +Adding number conversion cast (unumber) 1 in (number~) processChars::$1 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) processChars::$1 in (number~) processChars::$1 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (number~) processChars::$3 ← (number) 1 << *((byte*) processChars::$40) +Adding number conversion cast (unumber) processChars::$3 in (number~) processChars::$3 ← (unumber)(number) 1 << *((byte*) processChars::$40) +Adding number conversion cast (unumber) 4 in (word~) processChars::$10 ← *((word*) processChars::$43) >> (number) 4 +Adding number conversion cast (unumber) 0 in (bool~) processChars::$64 ← (number) 0 != (byte~) processChars::$11 +Adding number conversion cast (unumber) $ff in (number~) processChars::$12 ← (number) $ff ^ (byte) processChars::bitmask#3 +Adding number conversion cast (unumber) processChars::$12 in (number~) processChars::$12 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 +Adding number conversion cast (unumber) 2 in (number~) processChars::$13 ← (byte) processChars::i#4 * (number) 2 +Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (byte) processChars::i#4 * (unumber)(number) 2 +Adding number conversion cast (unumber) 4 in (word~) processChars::$15 ← *((word*) processChars::$48) >> (number) 4 +Adding number conversion cast (unumber) 2 in (number~) processChars::$17 ← (byte) processChars::i#4 * (number) 2 +Adding number conversion cast (unumber) processChars::$17 in (number~) processChars::$17 ← (byte) processChars::i#4 * (unumber)(number) 2 +Adding number conversion cast (unumber) $ff in (number~) processChars::$33 ← (number) $ff ^ (byte) processChars::bitmask#4 +Adding number conversion cast (unumber) processChars::$33 in (number~) processChars::$33 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4 +Adding number conversion cast (unumber) 8 in (number~) processChars::$25 ← (word) processChars::xpos#2 / (number) 8 +Adding number conversion cast (unumber) processChars::$25 in (number~) processChars::$25 ← (word) processChars::xpos#2 / (unumber)(number) 8 +Adding number conversion cast (unumber) 8 in (number~) processChars::$27 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 +Adding number conversion cast (unumber) processChars::$27 in (number~) processChars::$27 ← (byte) BORDER_XPOS_LEFT#0 / (unumber)(number) 8 +Adding number conversion cast (unumber) processChars::$28 in (number~) processChars::$28 ← (byte~) processChars::$26 - (unumber~) processChars::$27 +Adding number conversion cast (unumber) 8 in (number~) processChars::$29 ← (byte) processChars::ypos#1 / (number) 8 +Adding number conversion cast (unumber) processChars::$29 in (number~) processChars::$29 ← (byte) processChars::ypos#1 / (unumber)(number) 8 +Adding number conversion cast (unumber) 8 in (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 +Adding number conversion cast (unumber) processChars::$31 in (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (unumber)(number) 8 +Adding number conversion cast (unumber) processChars::$32 in (number~) processChars::$32 ← (byte~) processChars::$30 - (unumber~) processChars::$31 +Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$35 ← (byte*) SCREEN#0 + (number) $3e7 Adding number conversion cast (unumber) $14 in (bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14 Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3 Adding number conversion cast (unumber) initSquareTables::$3 in (number~) initSquareTables::$3 ← (unumber)(number) $14 - (byte) initSquareTables::x#3 @@ -1882,6 +1943,8 @@ Inlining cast (byte*) SPRITES_ENABLE#0 ← (byte*)(number) $d015 Inlining cast (byte*) SPRITES_EXPAND_Y#0 ← (byte*)(number) $d017 Inlining cast (byte*) SPRITES_MC#0 ← (byte*)(number) $d01c Inlining cast (byte*) SPRITES_EXPAND_X#0 ← (byte*)(number) $d01d +Inlining cast (byte*) BORDERCOL#0 ← (byte*)(number) $d020 +Inlining cast (byte*) BGCOL#0 ← (byte*)(number) $d021 Inlining cast (byte*) SPRITES_COLS#0 ← (byte*)(number) $d027 Inlining cast (byte*) VIC_CONTROL#0 ← (byte*)(number) $d011 Inlining cast (byte*) IRQ_STATUS#0 ← (byte*)(number) $d019 @@ -1891,6 +1954,8 @@ Inlining cast (byte*) COLS#0 ← (byte*)(number) $d800 Inlining cast (byte*) CIA1_INTERRUPT#0 ← (byte*)(number) $dc0d Inlining cast (byte) CIA_INTERRUPT_CLEAR#0 ← (unumber)(number) $7f Inlining cast (void()**) HARDWARE_IRQ#0 ← (void()**)(number) $fffe +Inlining cast (byte) WHITE#0 ← (unumber)(number) 1 +Inlining cast (byte) BLUE#0 ← (unumber)(number) 6 Inlining cast (byte) LIGHT_BLUE#0 ← (unumber)(number) $e Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 @@ -1926,10 +1991,10 @@ Inlining cast (word~) $3 ← (word)(word) BORDER_XPOS_RIGHT#0 Inlining cast (word~) $6 ← (word)(unumber~) $5 Inlining cast (word~) $8 ← (word)(byte) BORDER_YPOS_BOTTOM#0 Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0 -Inlining cast (byte~) processChars::$15 ← (byte)(word) processChars::xpos#1 -Inlining cast (byte~) processChars::$17 ← (byte)(word~) processChars::$16 -Inlining cast (byte~) processChars::$27 ← (byte)(unumber~) processChars::$26 -Inlining cast (byte~) processChars::$31 ← (byte)(unumber~) processChars::$30 +Inlining cast (byte~) processChars::$14 ← (byte)(word) processChars::xpos#1 +Inlining cast (byte~) processChars::$16 ← (byte)(word~) processChars::$15 +Inlining cast (byte~) processChars::$26 ← (byte)(unumber~) processChars::$25 +Inlining cast (byte~) processChars::$30 ← (byte)(unumber~) processChars::$29 Inlining cast *((byte*) initSprites::sp#2) ← (unumber)(number) 0 Inlining cast *((byte*) SPRITES_MC#0) ← (unumber)(number) 0 Inlining cast *((byte*) SPRITES_EXPAND_X#0) ← (unumber)(number) 0 @@ -1956,6 +2021,8 @@ Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 Simplifying constant pointer cast (byte*) 53277 +Simplifying constant pointer cast (byte*) 53280 +Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53273 @@ -1965,6 +2032,8 @@ Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (byte*) 56333 Simplifying constant integer cast $7f Simplifying constant pointer cast (void()**) 65534 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 Simplifying constant integer cast $e Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -2059,6 +2128,8 @@ Finalized unsigned number type (byte) $fa Finalized unsigned number type (word) $3f8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $7f +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) $e Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -2153,18 +2224,18 @@ Inferred type updated to word in (unumber~) startProcessing::$17 ← (word~) sta Inferred type updated to byte in (unumber~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (byte) 8 Inferred type updated to byte in (unumber~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (byte) 8 Inferred type updated to byte in (unumber~) $5 ← (byte) BORDER_YPOS_TOP#0 - (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (byte) 1 -Inferred type updated to byte in (unumber~) processChars::$4 ← (byte) 1 << *((byte*) processChars::$39) -Inferred type updated to byte in (unumber~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#3 -Inferred type updated to byte in (unumber~) processChars::$14 ← (byte) processChars::i#4 * (byte) 2 -Inferred type updated to byte in (unumber~) processChars::$18 ← (byte) processChars::i#4 * (byte) 2 -Inferred type updated to byte in (unumber~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#4 -Inferred type updated to word in (unumber~) processChars::$26 ← (word) processChars::xpos#2 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$29 ← (byte~) processChars::$27 - (byte~) processChars::$28 -Inferred type updated to byte in (unumber~) processChars::$30 ← (byte) processChars::ypos#1 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$33 ← (byte~) processChars::$31 - (byte~) processChars::$32 +Inferred type updated to byte in (unumber~) processChars::$1 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) processChars::$3 ← (byte) 1 << *((byte*) processChars::$40) +Inferred type updated to byte in (unumber~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#3 +Inferred type updated to byte in (unumber~) processChars::$13 ← (byte) processChars::i#4 * (byte) 2 +Inferred type updated to byte in (unumber~) processChars::$17 ← (byte) processChars::i#4 * (byte) 2 +Inferred type updated to byte in (unumber~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#4 +Inferred type updated to word in (unumber~) processChars::$25 ← (word) processChars::xpos#2 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$27 ← (byte) BORDER_XPOS_LEFT#0 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$28 ← (byte~) processChars::$26 - (byte~) processChars::$27 +Inferred type updated to byte in (unumber~) processChars::$29 ← (byte) processChars::ypos#1 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$32 ← (byte~) processChars::$30 - (byte~) processChars::$31 Inferred type updated to byte in (unumber~) initSquareTables::$3 ← (byte) $14 - (byte) initSquareTables::x#3 Inferred type updated to byte in (unumber~) initSquareTables::$4 ← (byte~) initSquareTables::$3 Inferred type updated to byte in (unumber~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (byte) $14 @@ -2176,14 +2247,14 @@ Inferred type updated to byte in (unumber~) initSquareTables::$9 ← (byte) init Inferred type updated to byte in (unumber~) initSquareTables::$10 ← (byte~) initSquareTables::$9 Inferred type updated to byte for (unumber~) initSquareTables::$13 Inferred type updated to byte in (unumber~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (byte) $40 -Inversing boolean not [38] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [37] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [114] (bool~) main::$11 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [113] (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 -Inversing boolean not [137] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [136] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' -Inversing boolean not [149] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [148] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 -Inversing boolean not [162] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [161] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 -Inversing boolean not [188] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) != (byte) STATUS_FREE#0 from [187] (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 -Inversing boolean not [290] (bool~) processChars::$6 ← *((byte*) processChars::$40) == (byte) STATUS_FREE#0 from [289] (bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 -Inversing boolean not [299] (bool~) processChars::$8 ← *((byte*) processChars::$41) != (byte) STATUS_NEW#0 from [298] (bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 +Inversing boolean not [42] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [41] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 +Inversing boolean not [119] (bool~) main::$11 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [118] (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 +Inversing boolean not [142] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [141] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' +Inversing boolean not [154] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [153] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 +Inversing boolean not [167] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [166] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 +Inversing boolean not [193] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) != (byte) STATUS_FREE#0 from [192] (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 +Inversing boolean not [295] (bool~) processChars::$5 ← *((byte*) processChars::$41) == (byte) STATUS_FREE#0 from [294] (bool~) processChars::$4 ← *((byte*) processChars::$41) != (byte) STATUS_FREE#0 +Inversing boolean not [304] (bool~) processChars::$7 ← *((byte*) processChars::$42) != (byte) STATUS_NEW#0 from [303] (bool~) processChars::$6 ← *((byte*) processChars::$42) == (byte) STATUS_NEW#0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) mul8u::mb#0 = (byte) mul8u::b#2 Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 @@ -2236,24 +2307,24 @@ Alias (word) BORDER_XPOS_RIGHT#0 = (word~) $3 Alias (word) XPOS_RIGHTMOST#0 = (word~) $4 Alias (word) YPOS_TOPMOST#0 = (word~) $7 Alias (word) YPOS_BOTTOMMOST#0 = (word~) $9 -Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$3 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3 -Alias (byte) processChars::bitmask#0 = (byte~) processChars::$4 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1 +Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$2 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3 +Alias (byte) processChars::bitmask#0 = (byte~) processChars::$3 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1 Alias (byte) processChars::i#11 = (byte) processChars::i#2 (byte) processChars::i#12 -Alias (byte) processChars::numActive#12 = (byte) processChars::numActive#7 (byte) processChars::numActive#13 -Alias (word) processChars::xpos#0 = (word~) processChars::$11 (word) processChars::xpos#3 (word) processChars::xpos#4 +Alias (byte) processChars::numActive#13 = (byte) processChars::numActive#9 (byte) processChars::numActive#14 +Alias (word) processChars::xpos#0 = (word~) processChars::$10 (word) processChars::xpos#3 (word) processChars::xpos#4 Alias (byte) processChars::bitmask#2 = (byte) processChars::bitmask#6 (byte) processChars::bitmask#3 Alias (byte) processChars::i#6 = (byte) processChars::i#8 (byte) processChars::i#7 Alias (struct ProcessingSprite*) processChars::processing#2 = (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#9 (byte) processChars::numActive#11 -Alias (byte) processChars::ypos#0 = (byte~) processChars::$17 (byte) processChars::ypos#1 +Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#11 +Alias (byte) processChars::ypos#0 = (byte~) processChars::$16 (byte) processChars::ypos#1 Alias (struct ProcessingSprite*) processChars::processing#4 = (struct ProcessingSprite*) processChars::processing#5 (struct ProcessingSprite*) processChars::processing#6 Alias (byte) processChars::bitmask#4 = (byte) processChars::bitmask#7 -Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#8 +Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#7 Alias (byte) processChars::i#10 = (byte) processChars::i#4 (byte) processChars::i#9 Alias (word) processChars::xpos#1 = (word) processChars::xpos#2 -Alias (byte) processChars::xchar#0 = (byte~) processChars::$29 -Alias (byte) processChars::ychar#0 = (byte~) processChars::$33 -Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6 +Alias (byte) processChars::xchar#0 = (byte~) processChars::$28 +Alias (byte) processChars::ychar#0 = (byte~) processChars::$32 +Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6 (byte) processChars::numActive#8 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#3 (byte) initSquareTables::x#4 Alias (byte~) initSquareTables::$4 = (byte~) initSquareTables::$3 Alias (byte~) initSquareTables::$2 = (byte~) initSquareTables::$1 @@ -2284,7 +2355,7 @@ Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#5 Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*) processChars::processing#2 (struct ProcessingSprite*) processChars::processing#4 Alias (byte) processChars::bitmask#0 = (byte) processChars::bitmask#2 (byte) processChars::bitmask#4 Alias (byte) processChars::i#10 = (byte) processChars::i#6 (byte) processChars::i#11 (byte) processChars::i#5 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#4 (byte) processChars::numActive#2 +Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#13 (byte) processChars::numActive#4 (byte) processChars::numActive#2 Alias (word) processChars::xpos#0 = (word) processChars::xpos#1 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#5 Alias (byte) initSquareTables::y#2 = (byte) initSquareTables::y#5 @@ -2325,49 +2396,57 @@ Identical Phi Values (byte*) startProcessing::screenPtr#1 (byte*) startProcessin Identical Phi Values (word) setupRasterIrq::raster#1 (word) setupRasterIrq::raster#0 Identical Phi Values (void()*) setupRasterIrq::irqRoutine#1 (void()*) setupRasterIrq::irqRoutine#0 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [332] (byte~) processChars::$18 ← (byte) processChars::i#10 * (byte) 2 +Identified duplicate assignment right side [337] (byte~) processChars::$17 ← (byte) processChars::i#10 * (byte) 2 Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) mul8u::$0 [34] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -Simple Condition (bool~) mul8u::$3 [39] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 -Simple Condition (bool~) main::$6 [73] if((byte*) main::src#1!=(byte*~) main::$5) goto main::@1 -Simple Condition (bool~) main::$8 [96] if((byte) main::i#1!=rangelast(0,main::$7)) goto main::@3 -Simple Condition (bool~) main::$11 [115] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 -Simple Condition (bool~) getCharToProcess::$3 [138] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$7 [142] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 -Simple Condition (bool~) getCharToProcess::$6 [150] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$8 [159] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 -Simple Condition (bool~) getCharToProcess::$1 [163] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 -Simple Condition (bool~) startProcessing::$25 [189] if(*((byte*) startProcessing::$39 + (byte~) startProcessing::$29)!=(byte) STATUS_FREE#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$26 [193] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$27 [198] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) startProcessing::$28 [224] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 -Simple Condition (bool~) processChars::$6 [291] if(*((byte*) processChars::$40)==(byte) STATUS_FREE#0) goto processChars::@2 -Simple Condition (bool~) processChars::$35 [295] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 -Simple Condition (bool~) processChars::$8 [300] if(*((byte*) processChars::$41)!=(byte) STATUS_NEW#0) goto processChars::@3 -Simple Condition (bool~) processChars::$63 [307] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -Simple Condition (bool~) initSquareTables::$0 [390] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [409] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [413] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [432] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) initSprites::$2 [441] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 -Simple Condition (bool~) initSprites::$3 [447] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 -Simple Condition (bool~) setupRasterIrq::$0 [458] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$1 [475] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 -Simple Condition (bool~) irqTop::$2 [480] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 -Simple Condition (bool~) irqBottom::$2 [491] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 +Simple Condition (bool~) mul8u::$0 [38] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 +Simple Condition (bool~) mul8u::$3 [43] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 +Simple Condition (bool~) main::$6 [78] if((byte*) main::src#1!=(byte*~) main::$5) goto main::@1 +Simple Condition (bool~) main::$8 [101] if((byte) main::i#1!=rangelast(0,main::$7)) goto main::@3 +Simple Condition (bool~) main::$11 [120] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 +Simple Condition (bool~) getCharToProcess::$3 [143] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$7 [147] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 +Simple Condition (bool~) getCharToProcess::$6 [155] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$8 [164] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 +Simple Condition (bool~) getCharToProcess::$1 [168] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 +Simple Condition (bool~) startProcessing::$25 [194] if(*((byte*) startProcessing::$39 + (byte~) startProcessing::$29)!=(byte) STATUS_FREE#0) goto startProcessing::@3 +Simple Condition (bool~) startProcessing::$26 [198] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 +Simple Condition (bool~) startProcessing::$27 [203] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 +Simple Condition (bool~) startProcessing::$28 [229] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 +Simple Condition (bool~) processChars::$5 [296] if(*((byte*) processChars::$41)==(byte) STATUS_FREE#0) goto processChars::@3 +Simple Condition (bool~) processChars::$34 [300] if((byte) processChars::i#1!=rangelast(0,processChars::$1)) goto processChars::@2 +Simple Condition (bool~) processChars::$7 [305] if(*((byte*) processChars::$42)!=(byte) STATUS_NEW#0) goto processChars::@4 +Simple Condition (bool~) processChars::$64 [312] if((byte) 0!=(byte~) processChars::$11) goto processChars::@5 +Simple Condition (bool~) initSquareTables::$0 [398] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 +Simple Condition (bool~) initSquareTables::$7 [417] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 +Simple Condition (bool~) initSquareTables::$8 [421] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 +Simple Condition (bool~) initSquareTables::$15 [440] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 +Simple Condition (bool~) initSprites::$2 [449] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 +Simple Condition (bool~) initSprites::$3 [455] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 +Simple Condition (bool~) setupRasterIrq::$0 [466] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +Simple Condition (bool~) irqTop::$2 [489] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 +Simple Condition (bool~) irqTop::$3 [496] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 +Simple Condition (bool~) irqBottom::$4 [510] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting || if()-condition to two if()s [344] (bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24 +Rewriting || if()-condition to two if()s [349] (bool~) processChars::$24 ← (bool~) processChars::$22 || (bool~) processChars::$23 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting || if()-condition to two if()s [341] (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22 +Rewriting || if()-condition to two if()s [346] (bool~) processChars::$22 ← (bool~) processChars::$20 || (bool~) processChars::$21 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting || if()-condition to two if()s [338] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 +Rewriting || if()-condition to two if()s [343] (bool~) processChars::$20 ← (bool~) processChars::$18 || (bool~) processChars::$19 Successful SSA optimization Pass2ConditionalAndOrRewriting -Constant right-side identified [57] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } -Constant right-side identified [98] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() -Constant right-side identified [385] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [386] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [482] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [494] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Rewriting ! if()-condition to reversed if() [386] (bool~) processChars::$0 ← ! (bool) DEBUG#0 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Rewriting ! if()-condition to reversed if() [479] (bool~) irqTop::$0 ← ! (bool) DEBUG#0 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Rewriting ! if()-condition to reversed if() [501] (bool~) irqBottom::$0 ← ! (bool) DEBUG#0 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Rewriting ! if()-condition to reversed if() [504] (bool~) irqBottom::$2 ← ! (bool) DEBUG#0 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Constant right-side identified [62] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } +Constant right-side identified [103] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [393] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } +Constant right-side identified [394] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } +Constant right-side identified [482] (void()*~) irqTop::$1 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() +Constant right-side identified [514] (void()*~) irqBottom::$3 ← & interrupt(HARDWARE_ALL)(void()) irqTop() Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) PROCPORT_DDR#0 = (byte*) 0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -2388,6 +2467,8 @@ Constant (const byte*) SPRITES_ENABLE#0 = (byte*) 53269 Constant (const byte*) SPRITES_EXPAND_Y#0 = (byte*) 53271 Constant (const byte*) SPRITES_MC#0 = (byte*) 53276 Constant (const byte*) SPRITES_EXPAND_X#0 = (byte*) 53277 +Constant (const byte*) BORDERCOL#0 = (byte*) 53280 +Constant (const byte*) BGCOL#0 = (byte*) 53281 Constant (const byte*) SPRITES_COLS#0 = (byte*) 53287 Constant (const byte*) VIC_CONTROL#0 = (byte*) 53265 Constant (const byte*) IRQ_STATUS#0 = (byte*) 53273 @@ -2397,8 +2478,11 @@ Constant (const byte*) COLS#0 = (byte*) 55296 Constant (const byte*) CIA1_INTERRUPT#0 = (byte*) 56333 Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f Constant (const void()**) HARDWARE_IRQ#0 = (void()**) 65534 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) BLUE#0 = 6 Constant (const byte) LIGHT_BLUE#0 = $e Constant (const word) mul8u::res#0 = 0 +Constant (const bool) DEBUG#0 = false Constant (const byte*) SCREEN#0 = (byte*) 1024 Constant (const byte*) SPRITE_DATA#0 = (byte*) 8192 Constant (const word*) VXSIN#0 = (word*) 8704 @@ -2426,12 +2510,12 @@ Constant (const byte) initSquareTables::x#0 = 0 Constant (const byte) initSquareTables::y#0 = 0 Constant (const byte) initSprites::i#0 = 0 Constant (const byte) RASTER_IRQ_TOP#0 = $30 +Constant (const void()*) irqTop::$1 = &irqBottom Constant (const byte) irqTop::i#0 = 0 Constant (const byte) irqTop::i1#0 = 0 -Constant (const void()*) irqTop::$0 = &irqBottom Constant (const byte) RASTER_IRQ_MIDDLE#0 = $ff Constant (const byte) irqBottom::i#0 = 0 -Constant (const void()*) irqBottom::$1 = &irqTop +Constant (const void()*) irqBottom::$3 = &irqTop Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) main::src#0 = SCREEN#0 Constant (const byte*) main::dst#0 = SCREEN_COPY#0 @@ -2440,103 +2524,129 @@ Constant (const word) getCharToProcess::closest_dist#0 = NOT_FOUND#0 Constant (const byte*) getCharToProcess::screen_line#0 = SCREEN_COPY#0 Constant (const byte*) initSprites::sp#0 = SPRITE_DATA#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified { fill( NUM_PROCESSING#0, 0) } in [63] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } -Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [273] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 +Constant value identified { fill( NUM_PROCESSING#0, 0) } in [68] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } +Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [278] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [121] if(true) goto main::@5 -if() condition always true - replacing block destination [126] if(true) goto main::@11 -if() condition always true - replacing block destination [458] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always true - replacing block destination [126] if(true) goto main::@5 +if() condition always true - replacing block destination [131] if(true) goto main::@11 +if() condition always false - eliminating [387] if((const bool) DEBUG#0) goto processChars::@16 +if() condition always true - replacing block destination [466] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always false - eliminating [480] if((const bool) DEBUG#0) goto irqTop::@2 +if() condition always false - eliminating [502] if((const bool) DEBUG#0) goto irqBottom::@3 +if() condition always false - eliminating [505] if((const bool) DEBUG#0) goto irqBottom::@4 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [140] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ -Resolved ranged comparison value [142] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 -Resolved ranged next value [157] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ -Resolved ranged comparison value [159] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 -Resolved ranged next value [222] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ -Resolved ranged comparison value [224] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 -Resolved ranged next value [407] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [409] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [430] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [432] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [445] initSprites::i#1 ← ++ initSprites::i#2 to ++ -Resolved ranged comparison value [447] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 -Resolved ranged next value [473] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [475] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 -Resolved ranged next value [478] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [480] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 -Resolved ranged next value [489] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [491] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 -Converting *(pointer+n) to pointer[n] [173] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) -Converting *(pointer+n) to pointer[n] [210] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) -Converting *(pointer+n) to pointer[n] [286] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$39) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [291] if(*((byte*) processChars::$40)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [300] if(*((byte*) processChars::$41)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [303] (word) processChars::xpos#0 ← *((word*) processChars::$42) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [310] *(*((byte**) processChars::$43)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) -Converting *(pointer+n) to pointer[n] [314] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) -Converting *(pointer+n) to pointer[n] [318] *((byte*) processChars::$46) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [329] (word~) processChars::$16 ← *((word*) processChars::$47) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [335] (bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [337] (bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [340] (bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [343] (bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [348] *((byte*) processChars::$52) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*) processChars::$53) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*) processChars::$58) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Resolved ranged next value [145] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ +Resolved ranged comparison value [147] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 +Resolved ranged next value [162] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ +Resolved ranged comparison value [164] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 +Resolved ranged next value [227] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ +Resolved ranged comparison value [229] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 +Resolved ranged next value [415] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ +Resolved ranged comparison value [417] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 +Resolved ranged next value [438] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ +Resolved ranged comparison value [440] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 +Resolved ranged next value [453] initSprites::i#1 ← ++ initSprites::i#2 to ++ +Resolved ranged comparison value [455] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 +Resolved ranged next value [487] irqTop::i#1 ← ++ irqTop::i#2 to ++ +Resolved ranged comparison value [489] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 to (number) 5 +Resolved ranged next value [494] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ +Resolved ranged comparison value [496] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 to (number) 8 +Resolved ranged next value [508] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ +Resolved ranged comparison value [510] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 to (number) 5 +Converting *(pointer+n) to pointer[n] [178] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) +Converting *(pointer+n) to pointer[n] [215] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) +Converting *(pointer+n) to pointer[n] [291] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$40) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [296] if(*((byte*) processChars::$41)==(const byte) STATUS_FREE#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [305] if(*((byte*) processChars::$42)!=(const byte) STATUS_NEW#0) goto processChars::@4 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [308] (word) processChars::xpos#0 ← *((word*) processChars::$43) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [315] *(*((byte**) processChars::$44)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) +Converting *(pointer+n) to pointer[n] [319] (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [321] *((byte*~) processChars::$9) ← *((byte*) processChars::$46) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) +Converting *(pointer+n) to pointer[n] [321] *((byte*~) processChars::$9) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$8 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) +Converting *(pointer+n) to pointer[n] [323] *((byte*) processChars::$47) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [334] (word~) processChars::$15 ← *((word*) processChars::$48) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [340] (bool~) processChars::$18 ← *((word*) processChars::$49) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [342] (bool~) processChars::$19 ← *((word*) processChars::$50) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [345] (bool~) processChars::$21 ← *((word*) processChars::$51) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [348] (bool~) processChars::$23 ← *((word*) processChars::$52) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [353] *((byte*) processChars::$53) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [365] *((word*) processChars::$55) ← *((word*) processChars::$54) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [365] *((word*) processChars::$55) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [369] *((word*) processChars::$58) ← *((word*) processChars::$56) + *((word*) processChars::$57) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [369] *((word*) processChars::$58) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$57) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [369] *((word*) processChars::$58) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [378] *((word*) processChars::$60) ← *((word*) processChars::$59) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [378] *((word*) processChars::$60) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [382] *((word*) processChars::$63) ← *((word*) processChars::$61) + *((word*) processChars::$62) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [382] *((word*) processChars::$63) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$62) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [382] *((word*) processChars::$63) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) Successful SSA optimization Pass2InlineDerefIdx -Simplifying expression containing zero (word*)PROCESSING#0 in [78] (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)PROCESSING#0 in [245] (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [302] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [303] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) >> (byte) 4 -Simplifying expression containing zero (word*)processChars::processing#0 in [334] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [335] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 -Simplifying expression containing zero (word*)processChars::processing#0 in [336] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [337] (bool~) processChars::$20 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) > (word) XPOS_RIGHTMOST#0 -Simplifying expression containing zero (word*)processChars::processing#0 in [361] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [363] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Simplifying expression containing zero (word*)PROCESSING#0 in [83] (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)PROCESSING#0 in [250] (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [307] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [308] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) >> (byte) 4 +Simplifying expression containing zero (word*)processChars::processing#0 in [339] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [340] (bool~) processChars::$18 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 +Simplifying expression containing zero (word*)processChars::processing#0 in [341] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [342] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) > (word) XPOS_RIGHTMOST#0 +Simplifying expression containing zero (word*)processChars::processing#0 in [366] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [368] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [369] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Simplifying expression containing zero (word*)processChars::processing#0 in [369] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (word) startProcessing::center_dist#0 and assignment [51] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [75] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 -Eliminating unused variable (byte*) processChars::$39 and assignment [155] (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*) processChars::$40 and assignment [157] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (byte*) processChars::$41 and assignment [162] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$42 and assignment [164] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (byte**) processChars::$43 and assignment [168] (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Eliminating unused variable (byte*) processChars::$44 and assignment [172] (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*~) processChars::$10 and assignment [173] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Eliminating unused variable (byte*) processChars::$45 and assignment [174] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Eliminating unused variable (byte*) processChars::$46 and assignment [176] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$47 and assignment [184] (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$48 and assignment [189] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$49 and assignment [191] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$50 and assignment [193] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$51 and assignment [195] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (byte*) processChars::$52 and assignment [198] (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$53 and assignment [207] (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$54 and assignment [208] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$55 and assignment [210] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$56 and assignment [211] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$57 and assignment [212] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$58 and assignment [219] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$59 and assignment [220] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$60 and assignment [222] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$61 and assignment [223] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$62 and assignment [224] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$40 and assignment [155] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*) processChars::$41 and assignment [157] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (byte*) processChars::$42 and assignment [162] (byte*) processChars::$42 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$43 and assignment [164] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (byte**) processChars::$44 and assignment [168] (byte**) processChars::$44 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Eliminating unused variable (byte*) processChars::$45 and assignment [172] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*~) processChars::$9 and assignment [173] (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Eliminating unused variable (byte*) processChars::$46 and assignment [174] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Eliminating unused variable (byte*) processChars::$47 and assignment [176] (byte*) processChars::$47 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$48 and assignment [184] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$49 and assignment [189] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$50 and assignment [191] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$51 and assignment [193] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$52 and assignment [195] (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$53 and assignment [198] (byte*) processChars::$53 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$54 and assignment [207] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$55 and assignment [208] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$56 and assignment [210] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$57 and assignment [211] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$58 and assignment [212] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$59 and assignment [219] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$60 and assignment [220] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$61 and assignment [222] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$62 and assignment [223] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$63 and assignment [224] (word*) processChars::$63 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y Eliminating unused constant (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Eliminating unused constant (const bool) DEBUG#0 Successful SSA optimization PassNEliminateUnusedVars +Eliminating variable (byte*~) processChars::$35 from unused block processChars::@16 +Eliminating variable (byte~) processChars::$36 from unused block processChars::@16 +Eliminating variable (byte) irqTop::i#2 from unused block irqTop::@3 +Eliminating variable (byte) irqTop::i#1 from unused block irqTop::@3 +Eliminating variable (byte) irqTop::i1#2 from unused block irqTop::@5 +Eliminating variable (byte) irqTop::i1#1 from unused block irqTop::@5 +Eliminating variable (byte) irqBottom::i#2 from unused block irqBottom::@5 +Eliminating variable (byte) irqBottom::i#1 from unused block irqBottom::@5 Removing unused block main::@return +Removing unused block processChars::@16 Removing unused block setupRasterIrq::@3 +Removing PHI-reference to removed block (irqTop::@2) in block irqTop::@3 +Removing unused block irqTop::@2 +Removing unused block irqTop::@3 +Removing PHI-reference to removed block (irqTop::@4) in block irqTop::@5 +Removing unused block irqTop::@4 +Removing unused block irqTop::@5 +Removing unused block irqTop::@6 +Removing PHI-reference to removed block (irqBottom::@3) in block irqBottom::@5 +Removing unused block irqBottom::@3 +Removing unused block irqBottom::@5 +Removing unused block irqBottom::@6 +Removing unused block irqBottom::@4 Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) $28 in if((byte) getCharToProcess::x#1!=(number) $28) goto getCharToProcess::@4 Adding number conversion cast (unumber) $19 in if((byte) getCharToProcess::y#1!=(number) $19) goto getCharToProcess::@3 @@ -2544,20 +2654,14 @@ Adding number conversion cast (unumber) 8 in if((byte) startProcessing::i1#1!=(n Adding number conversion cast (unumber) $28 in if((byte) initSquareTables::x#1!=(number) $28) goto initSquareTables::@1 Adding number conversion cast (unumber) $19 in if((byte) initSquareTables::y#1!=(number) $19) goto initSquareTables::@8 Adding number conversion cast (unumber) 8 in if((byte) initSprites::i#1!=(number) 8) goto initSprites::@3 -Adding number conversion cast (unumber) 5 in if((byte) irqTop::i#1!=(number) 5) goto irqTop::@1 -Adding number conversion cast (unumber) 8 in if((byte) irqTop::i1#1!=(number) 8) goto irqTop::@3 -Adding number conversion cast (unumber) 5 in if((byte) irqBottom::i#1!=(number) 5) goto irqBottom::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast $28 Simplifying constant integer cast $19 Simplifying constant integer cast 8 -Simplifying constant integer cast (byte~) processChars::$30 +Simplifying constant integer cast (byte~) processChars::$29 Simplifying constant integer cast $28 Simplifying constant integer cast $19 Simplifying constant integer cast 8 -Simplifying constant integer cast 5 -Simplifying constant integer cast 8 -Simplifying constant integer cast 5 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $19 @@ -2565,12 +2669,9 @@ Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $19 Finalized unsigned number type (byte) 8 -Finalized unsigned number type (byte) 5 -Finalized unsigned number type (byte) 8 -Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) processChars::$18 = (byte~) processChars::$14 -Alias (byte~) processChars::$31 = (byte~) processChars::$30 +Alias (byte~) processChars::$17 = (byte~) processChars::$13 +Alias (byte~) processChars::$30 = (byte~) processChars::$29 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) getCharToProcess::y#2 Self Phi Eliminated (byte) startProcessing::center_y#8 @@ -2580,10 +2681,10 @@ Identical Phi Values (byte) getCharToProcess::y#2 (byte) getCharToProcess::y#7 Identical Phi Values (byte) startProcessing::center_y#8 (byte) startProcessing::center_y#0 Identical Phi Values (byte) startProcessing::center_x#8 (byte) startProcessing::center_x#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) processChars::$19 [180] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$24 [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(word) YPOS_BOTTOMMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$22 [277] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_TOPMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$20 [278] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(word) XPOS_RIGHTMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$18 [180] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@7 +Simple Condition (bool~) processChars::$23 [264] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(word) YPOS_BOTTOMMOST#0) goto processChars::@7 +Simple Condition (bool~) processChars::$21 [265] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_TOPMOST#0) goto processChars::@7 +Simple Condition (bool~) processChars::$19 [266] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(word) XPOS_RIGHTMOST#0) goto processChars::@7 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [16] (byte*~) main::$5 ← (const byte*) SCREEN#0 + (word) $3e8 Constant right-side identified [18] (byte~) main::$7 ← (const byte) NUM_PROCESSING#0 - (byte) 1 @@ -2594,13 +2695,12 @@ Constant right-side identified [114] (byte*~) startProcessing::$18 ← (const by Constant right-side identified [137] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 Constant right-side identified [140] (word) XPOS_RIGHTMOST#0 ← (const word) BORDER_XPOS_RIGHT#0 << (byte) 4 Constant right-side identified [141] (byte~) $5 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 -Constant right-side identified [148] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [163] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 -Constant right-side identified [186] (byte~) processChars::$28 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8 -Constant right-side identified [193] (byte~) processChars::$32 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8 -Constant right-side identified [199] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [235] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 -Constant right-side identified [251] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 +Constant right-side identified [148] (byte~) processChars::$1 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [163] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 +Constant right-side identified [186] (byte~) processChars::$27 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8 +Constant right-side identified [193] (byte~) processChars::$31 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8 +Constant right-side identified [232] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 +Constant right-side identified [248] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 = { fill( NUM_PROCESSING#0, 0) } Constant (const byte*) main::$5 = SCREEN#0+$3e8 @@ -2613,11 +2713,10 @@ Constant (const byte) $0 = BORDER_XPOS_LEFT#0-8 Constant (const word) XPOS_RIGHTMOST#0 = BORDER_XPOS_RIGHT#0<<4 Constant (const byte) $5 = BORDER_YPOS_TOP#0-8 Constant (const word) $8 = (word)BORDER_YPOS_BOTTOM#0 -Constant (const byte) processChars::$2 = NUM_PROCESSING#0-1 -Constant (const byte*) processChars::$9 = SCREEN#0+SPRITE_PTRS#0 -Constant (const byte) processChars::$28 = BORDER_XPOS_LEFT#0/8 -Constant (const byte) processChars::$32 = BORDER_YPOS_TOP#0/8 -Constant (const byte*) processChars::$0 = SCREEN#0+$3e7 +Constant (const byte) processChars::$1 = NUM_PROCESSING#0-1 +Constant (const byte*) processChars::$8 = SCREEN#0+SPRITE_PTRS#0 +Constant (const byte) processChars::$27 = BORDER_XPOS_LEFT#0/8 +Constant (const byte) processChars::$31 = BORDER_YPOS_TOP#0/8 Constant (const byte) initSprites::$0 = NUM_PROCESSING#0*$40 Constant (const byte) setupRasterIrq::$1 = > (byte) 4 - [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 + [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 + [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 - [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 - [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 - [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 - [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 - to:processChars::@15 -processChars::@15: scope:[processChars] from processChars::@5 - [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 + [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 + [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 + [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 + [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 + [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@14 -processChars::@14: scope:[processChars] from processChars::@15 - [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 +processChars::@14: scope:[processChars] from processChars::@5 + [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@14 - [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 + [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + to:processChars::@12 +processChars::@12: scope:[processChars] from processChars::@13 + [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@13 - [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 - [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 - [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 - [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 - [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) - [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 - [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 - [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 - [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) - [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) +processChars::@9: scope:[processChars] from processChars::@12 + [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 + [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 + [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 + [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) + [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 + [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 + [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) + [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [249] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 - to:processChars::@12 -processChars::@12: scope:[processChars] from processChars::@2 - [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 + [246] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@12 - [254] return +processChars::@return: scope:[processChars] from processChars::@2 + [249] return to:@return -processChars::@6: scope:[processChars] from processChars::@13 processChars::@14 processChars::@15 processChars::@5 - [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 +processChars::@6: scope:[processChars] from processChars::@12 processChars::@13 processChars::@14 processChars::@5 + [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [259] phi() + [254] phi() to:irqTop::@1 -irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [260] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 - to:irqTop::@2 -irqTop::@2: scope:[irqTop] from irqTop::@1 irqTop::@2 - [263] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) - [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 - to:irqTop::@3 -irqTop::@3: scope:[irqTop] from irqTop::@2 - [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +irqTop::@1: scope:[irqTop] from irqTop + [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return -irqTop::@return: scope:[irqTop] from irqTop::@3 - [269] return +irqTop::@return: scope:[irqTop] from irqTop::@1 + [258] return to:@return VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte) BLUE +(byte*) BORDERCOL (byte) BORDER_XPOS_LEFT (word) BORDER_XPOS_RIGHT (byte) BORDER_YPOS_BOTTOM @@ -3525,6 +3607,7 @@ VARIABLE REGISTER WEIGHTS (byte*) CIA1_INTERRUPT (byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(bool) DEBUG (void()**) HARDWARE_IRQ (byte*) IRQ_ENABLE (byte) IRQ_RASTER @@ -3572,6 +3655,7 @@ VARIABLE REGISTER WEIGHTS (byte*) VIC_CONTROL (word*) VXSIN (word*) VYSIN +(byte) WHITE (word) XPOS_LEFTMOST (word) XPOS_RIGHTMOST (word) YPOS_BOTTOMMOST @@ -3649,15 +3733,9 @@ VARIABLE REGISTER WEIGHTS (byte) initSquareTables::y_dist#0 22.0 interrupt(HARDWARE_ALL)(void()) irqBottom() (byte) irqBottom::i -(byte) irqBottom::i#1 16.5 -(byte) irqBottom::i#2 22.0 interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i -(byte) irqTop::i#1 16.5 -(byte) irqTop::i#2 22.0 (byte) irqTop::i1 -(byte) irqTop::i1#1 16.5 -(byte) irqTop::i1#2 22.0 (void()) main() (byte~) main::$16 12.375 (byte) main::$25 22.0 @@ -3703,22 +3781,21 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 22.0 (word) mul8u::return#3 22.0 (void()) processChars() -(byte~) processChars::$1 4.0 +(byte~) processChars::$11 22.0 (byte~) processChars::$12 22.0 -(byte~) processChars::$13 22.0 -(byte~) processChars::$15 22.0 -(word~) processChars::$16 11.0 -(byte~) processChars::$18 6.6000000000000005 -(word~) processChars::$26 11.0 -(byte~) processChars::$27 22.0 -(byte~) processChars::$31 22.0 -(byte~) processChars::$34 22.0 -(byte~) processChars::$36 22.0 +(byte~) processChars::$14 22.0 +(word~) processChars::$15 11.0 +(byte~) processChars::$17 6.6000000000000005 +(word~) processChars::$25 11.0 +(byte~) processChars::$26 22.0 +(byte~) processChars::$30 22.0 +(byte~) processChars::$33 22.0 (byte~) processChars::$37 22.0 (byte~) processChars::$38 22.0 -(byte) processChars::$64 22.0 +(byte~) processChars::$39 22.0 (byte) processChars::$65 22.0 (byte) processChars::$66 22.0 +(byte) processChars::$67 22.0 (byte) processChars::bitmask (byte) processChars::bitmask#0 2.2916666666666665 (byte) processChars::i @@ -3727,7 +3804,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::numActive (byte) processChars::numActive#1 22.0 (byte) processChars::numActive#10 0.7674418604651163 -(byte) processChars::numActive#3 11.666666666666666 +(byte) processChars::numActive#3 11.0 (struct ProcessingSprite*) processChars::processing (struct ProcessingSprite*) processChars::processing#0 0.3235294117647059 (byte) processChars::xchar @@ -3833,11 +3910,8 @@ Initial phi equivalence classes [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -[ irqBottom::i#2 irqBottom::i#1 ] [ processChars::i#10 processChars::i#1 ] [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -[ irqTop::i#2 irqTop::i#1 ] -[ irqTop::i1#2 irqTop::i1#1 ] Added variable main::$25 to zero page equivalence class [ main::$25 ] Added variable main::$26 to zero page equivalence class [ main::$26 ] Added variable main::$27 to zero page equivalence class [ main::$27 ] @@ -3894,28 +3968,27 @@ Added variable mul8u::return#3 to zero page equivalence class [ mul8u::return#3 Added variable initSquareTables::$14 to zero page equivalence class [ initSquareTables::$14 ] Added variable initSquareTables::$17 to zero page equivalence class [ initSquareTables::$17 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] -Added variable processChars::$64 to zero page equivalence class [ processChars::$64 ] Added variable processChars::$65 to zero page equivalence class [ processChars::$65 ] Added variable processChars::$66 to zero page equivalence class [ processChars::$66 ] -Added variable processChars::$36 to zero page equivalence class [ processChars::$36 ] +Added variable processChars::$67 to zero page equivalence class [ processChars::$67 ] +Added variable processChars::$37 to zero page equivalence class [ processChars::$37 ] Added variable processChars::processing#0 to zero page equivalence class [ processChars::processing#0 ] Added variable processChars::bitmask#0 to zero page equivalence class [ processChars::bitmask#0 ] Added variable processChars::xpos#0 to zero page equivalence class [ processChars::xpos#0 ] +Added variable processChars::$11 to zero page equivalence class [ processChars::$11 ] Added variable processChars::$12 to zero page equivalence class [ processChars::$12 ] -Added variable processChars::$13 to zero page equivalence class [ processChars::$13 ] -Added variable processChars::$18 to zero page equivalence class [ processChars::$18 ] +Added variable processChars::$17 to zero page equivalence class [ processChars::$17 ] +Added variable processChars::$14 to zero page equivalence class [ processChars::$14 ] Added variable processChars::$15 to zero page equivalence class [ processChars::$15 ] -Added variable processChars::$16 to zero page equivalence class [ processChars::$16 ] Added variable processChars::ypos#0 to zero page equivalence class [ processChars::ypos#0 ] +Added variable processChars::$25 to zero page equivalence class [ processChars::$25 ] Added variable processChars::$26 to zero page equivalence class [ processChars::$26 ] -Added variable processChars::$27 to zero page equivalence class [ processChars::$27 ] Added variable processChars::xchar#0 to zero page equivalence class [ processChars::xchar#0 ] -Added variable processChars::$37 to zero page equivalence class [ processChars::$37 ] -Added variable processChars::$31 to zero page equivalence class [ processChars::$31 ] -Added variable processChars::ychar#0 to zero page equivalence class [ processChars::ychar#0 ] Added variable processChars::$38 to zero page equivalence class [ processChars::$38 ] -Added variable processChars::$1 to zero page equivalence class [ processChars::$1 ] -Added variable processChars::$34 to zero page equivalence class [ processChars::$34 ] +Added variable processChars::$30 to zero page equivalence class [ processChars::$30 ] +Added variable processChars::ychar#0 to zero page equivalence class [ processChars::ychar#0 ] +Added variable processChars::$39 to zero page equivalence class [ processChars::$39 ] +Added variable processChars::$33 to zero page equivalence class [ processChars::$33 ] Complete equivalence classes [ main::src#2 main::src#1 ] [ main::dst#2 main::dst#1 ] @@ -3943,11 +4016,8 @@ Complete equivalence classes [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -[ irqBottom::i#2 irqBottom::i#1 ] [ processChars::i#10 processChars::i#1 ] [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -[ irqTop::i#2 irqTop::i#1 ] -[ irqTop::i1#2 irqTop::i1#1 ] [ main::$25 ] [ main::$26 ] [ main::$27 ] @@ -4004,28 +4074,27 @@ Complete equivalence classes [ initSquareTables::$14 ] [ initSquareTables::$17 ] [ mul8u::$1 ] -[ processChars::$64 ] [ processChars::$65 ] [ processChars::$66 ] -[ processChars::$36 ] +[ processChars::$67 ] +[ processChars::$37 ] [ processChars::processing#0 ] [ processChars::bitmask#0 ] [ processChars::xpos#0 ] +[ processChars::$11 ] [ processChars::$12 ] -[ processChars::$13 ] -[ processChars::$18 ] +[ processChars::$17 ] +[ processChars::$14 ] [ processChars::$15 ] -[ processChars::$16 ] [ processChars::ypos#0 ] +[ processChars::$25 ] [ processChars::$26 ] -[ processChars::$27 ] [ processChars::xchar#0 ] -[ processChars::$37 ] -[ processChars::$31 ] -[ processChars::ychar#0 ] [ processChars::$38 ] -[ processChars::$1 ] -[ processChars::$34 ] +[ processChars::$30 ] +[ processChars::ychar#0 ] +[ processChars::$39 ] +[ processChars::$33 ] Allocated zp ZP_WORD:2 [ main::src#2 main::src#1 ] Allocated zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] Allocated zp ZP_BYTE:6 [ main::i#2 main::i#1 ] @@ -4052,89 +4121,85 @@ Allocated zp ZP_BYTE:32 [ mul8u::b#0 ] Allocated zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] Allocated zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] Allocated zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] -Allocated zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Allocated zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Allocated zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] -Allocated zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] -Allocated zp ZP_BYTE:43 [ main::$25 ] -Allocated zp ZP_BYTE:44 [ main::$26 ] -Allocated zp ZP_BYTE:45 [ main::$27 ] -Allocated zp ZP_BYTE:46 [ main::$16 ] -Allocated zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Allocated zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] -Allocated zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] -Allocated zp ZP_BYTE:51 [ main::center_x#0 ] -Allocated zp ZP_BYTE:52 [ main::center_y#0 ] -Allocated zp ZP_WORD:53 [ main::center_dist#0 ] -Allocated zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Allocated zp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Allocated zp ZP_BYTE:57 [ startProcessing::$40 ] -Allocated zp ZP_BYTE:58 [ startProcessing::$41 ] -Allocated zp ZP_BYTE:59 [ startProcessing::$42 ] -Allocated zp ZP_BYTE:60 [ startProcessing::$29 ] -Allocated zp ZP_WORD:61 [ startProcessing::$0 ] -Allocated zp ZP_WORD:63 [ startProcessing::$44 ] -Allocated zp ZP_WORD:65 [ startProcessing::$45 ] -Allocated zp ZP_WORD:67 [ startProcessing::$1 ] -Allocated zp ZP_WORD:69 [ startProcessing::$2 ] -Allocated zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] -Allocated zp ZP_WORD:73 [ startProcessing::$4 ] -Allocated zp ZP_WORD:75 [ startProcessing::$5 ] -Allocated zp ZP_BYTE:77 [ startProcessing::ch#0 ] -Allocated zp ZP_WORD:78 [ startProcessing::$7 ] -Allocated zp ZP_WORD:80 [ startProcessing::$8 ] -Allocated zp ZP_WORD:82 [ startProcessing::$10 ] -Allocated zp ZP_WORD:84 [ startProcessing::$11 ] -Allocated zp ZP_WORD:86 [ startProcessing::$12 ] -Allocated zp ZP_WORD:88 [ startProcessing::spriteX#0 ] -Allocated zp ZP_WORD:90 [ startProcessing::$14 ] -Allocated zp ZP_WORD:92 [ startProcessing::$15 ] -Allocated zp ZP_WORD:94 [ startProcessing::$16 ] -Allocated zp ZP_WORD:96 [ startProcessing::spriteY#0 ] -Allocated zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Allocated zp ZP_BYTE:99 [ startProcessing::$21 ] -Allocated zp ZP_WORD:100 [ startProcessing::$22 ] -Allocated zp ZP_BYTE:102 [ startProcessing::$47 ] -Allocated zp ZP_BYTE:103 [ startProcessing::$48 ] -Allocated zp ZP_BYTE:104 [ startProcessing::$49 ] -Allocated zp ZP_BYTE:105 [ startProcessing::$30 ] -Allocated zp ZP_BYTE:106 [ getCharToProcess::$13 ] -Allocated zp ZP_BYTE:107 [ getCharToProcess::$14 ] -Allocated zp ZP_WORD:108 [ getCharToProcess::$9 ] -Allocated zp ZP_WORD:110 [ getCharToProcess::$15 ] -Allocated zp ZP_WORD:112 [ getCharToProcess::$16 ] -Allocated zp ZP_WORD:114 [ getCharToProcess::$10 ] -Allocated zp ZP_WORD:116 [ getCharToProcess::$11 ] -Allocated zp ZP_WORD:118 [ mul8u::return#2 ] -Allocated zp ZP_WORD:120 [ initSquareTables::$6 ] -Allocated zp ZP_BYTE:122 [ initSquareTables::$16 ] -Allocated zp ZP_WORD:123 [ mul8u::return#3 ] -Allocated zp ZP_WORD:125 [ initSquareTables::$14 ] -Allocated zp ZP_BYTE:127 [ initSquareTables::$17 ] -Allocated zp ZP_BYTE:128 [ mul8u::$1 ] -Allocated zp ZP_BYTE:129 [ processChars::$64 ] -Allocated zp ZP_BYTE:130 [ processChars::$65 ] -Allocated zp ZP_BYTE:131 [ processChars::$66 ] -Allocated zp ZP_BYTE:132 [ processChars::$36 ] -Allocated zp ZP_WORD:133 [ processChars::processing#0 ] -Allocated zp ZP_BYTE:135 [ processChars::bitmask#0 ] -Allocated zp ZP_WORD:136 [ processChars::xpos#0 ] -Allocated zp ZP_BYTE:138 [ processChars::$12 ] -Allocated zp ZP_BYTE:139 [ processChars::$13 ] -Allocated zp ZP_BYTE:140 [ processChars::$18 ] -Allocated zp ZP_BYTE:141 [ processChars::$15 ] -Allocated zp ZP_WORD:142 [ processChars::$16 ] -Allocated zp ZP_BYTE:144 [ processChars::ypos#0 ] -Allocated zp ZP_WORD:145 [ processChars::$26 ] -Allocated zp ZP_BYTE:147 [ processChars::$27 ] -Allocated zp ZP_BYTE:148 [ processChars::xchar#0 ] -Allocated zp ZP_BYTE:149 [ processChars::$37 ] -Allocated zp ZP_BYTE:150 [ processChars::$31 ] -Allocated zp ZP_BYTE:151 [ processChars::ychar#0 ] -Allocated zp ZP_BYTE:152 [ processChars::$38 ] -Allocated zp ZP_BYTE:153 [ processChars::$1 ] -Allocated zp ZP_BYTE:154 [ processChars::$34 ] +Allocated zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Allocated zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Allocated zp ZP_BYTE:40 [ main::$25 ] +Allocated zp ZP_BYTE:41 [ main::$26 ] +Allocated zp ZP_BYTE:42 [ main::$27 ] +Allocated zp ZP_BYTE:43 [ main::$16 ] +Allocated zp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] +Allocated zp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] +Allocated zp ZP_WORD:46 [ getCharToProcess::return_dist#0 ] +Allocated zp ZP_BYTE:48 [ main::center_x#0 ] +Allocated zp ZP_BYTE:49 [ main::center_y#0 ] +Allocated zp ZP_WORD:50 [ main::center_dist#0 ] +Allocated zp ZP_BYTE:52 [ startProcessing::center_x#0 ] +Allocated zp ZP_BYTE:53 [ startProcessing::center_y#0 ] +Allocated zp ZP_BYTE:54 [ startProcessing::$40 ] +Allocated zp ZP_BYTE:55 [ startProcessing::$41 ] +Allocated zp ZP_BYTE:56 [ startProcessing::$42 ] +Allocated zp ZP_BYTE:57 [ startProcessing::$29 ] +Allocated zp ZP_WORD:58 [ startProcessing::$0 ] +Allocated zp ZP_WORD:60 [ startProcessing::$44 ] +Allocated zp ZP_WORD:62 [ startProcessing::$45 ] +Allocated zp ZP_WORD:64 [ startProcessing::$1 ] +Allocated zp ZP_WORD:66 [ startProcessing::$2 ] +Allocated zp ZP_WORD:68 [ startProcessing::screenPtr#0 ] +Allocated zp ZP_WORD:70 [ startProcessing::$4 ] +Allocated zp ZP_WORD:72 [ startProcessing::$5 ] +Allocated zp ZP_BYTE:74 [ startProcessing::ch#0 ] +Allocated zp ZP_WORD:75 [ startProcessing::$7 ] +Allocated zp ZP_WORD:77 [ startProcessing::$8 ] +Allocated zp ZP_WORD:79 [ startProcessing::$10 ] +Allocated zp ZP_WORD:81 [ startProcessing::$11 ] +Allocated zp ZP_WORD:83 [ startProcessing::$12 ] +Allocated zp ZP_WORD:85 [ startProcessing::spriteX#0 ] +Allocated zp ZP_WORD:87 [ startProcessing::$14 ] +Allocated zp ZP_WORD:89 [ startProcessing::$15 ] +Allocated zp ZP_WORD:91 [ startProcessing::$16 ] +Allocated zp ZP_WORD:93 [ startProcessing::spriteY#0 ] +Allocated zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] +Allocated zp ZP_BYTE:96 [ startProcessing::$21 ] +Allocated zp ZP_WORD:97 [ startProcessing::$22 ] +Allocated zp ZP_BYTE:99 [ startProcessing::$47 ] +Allocated zp ZP_BYTE:100 [ startProcessing::$48 ] +Allocated zp ZP_BYTE:101 [ startProcessing::$49 ] +Allocated zp ZP_BYTE:102 [ startProcessing::$30 ] +Allocated zp ZP_BYTE:103 [ getCharToProcess::$13 ] +Allocated zp ZP_BYTE:104 [ getCharToProcess::$14 ] +Allocated zp ZP_WORD:105 [ getCharToProcess::$9 ] +Allocated zp ZP_WORD:107 [ getCharToProcess::$15 ] +Allocated zp ZP_WORD:109 [ getCharToProcess::$16 ] +Allocated zp ZP_WORD:111 [ getCharToProcess::$10 ] +Allocated zp ZP_WORD:113 [ getCharToProcess::$11 ] +Allocated zp ZP_WORD:115 [ mul8u::return#2 ] +Allocated zp ZP_WORD:117 [ initSquareTables::$6 ] +Allocated zp ZP_BYTE:119 [ initSquareTables::$16 ] +Allocated zp ZP_WORD:120 [ mul8u::return#3 ] +Allocated zp ZP_WORD:122 [ initSquareTables::$14 ] +Allocated zp ZP_BYTE:124 [ initSquareTables::$17 ] +Allocated zp ZP_BYTE:125 [ mul8u::$1 ] +Allocated zp ZP_BYTE:126 [ processChars::$65 ] +Allocated zp ZP_BYTE:127 [ processChars::$66 ] +Allocated zp ZP_BYTE:128 [ processChars::$67 ] +Allocated zp ZP_BYTE:129 [ processChars::$37 ] +Allocated zp ZP_WORD:130 [ processChars::processing#0 ] +Allocated zp ZP_BYTE:132 [ processChars::bitmask#0 ] +Allocated zp ZP_WORD:133 [ processChars::xpos#0 ] +Allocated zp ZP_BYTE:135 [ processChars::$11 ] +Allocated zp ZP_BYTE:136 [ processChars::$12 ] +Allocated zp ZP_BYTE:137 [ processChars::$17 ] +Allocated zp ZP_BYTE:138 [ processChars::$14 ] +Allocated zp ZP_WORD:139 [ processChars::$15 ] +Allocated zp ZP_BYTE:141 [ processChars::ypos#0 ] +Allocated zp ZP_WORD:142 [ processChars::$25 ] +Allocated zp ZP_BYTE:144 [ processChars::$26 ] +Allocated zp ZP_BYTE:145 [ processChars::xchar#0 ] +Allocated zp ZP_BYTE:146 [ processChars::$38 ] +Allocated zp ZP_BYTE:147 [ processChars::$30 ] +Allocated zp ZP_BYTE:148 [ processChars::ychar#0 ] +Allocated zp ZP_BYTE:149 [ processChars::$39 ] +Allocated zp ZP_BYTE:150 [ processChars::$33 ] INITIAL ASM //SEG0 File Comments @@ -4240,16 +4305,16 @@ bend_from_b2: bend: //SEG13 main main: { - .label _16 = $2e + .label _16 = $2b .label src = 2 .label dst = 4 .label i = 6 - .label center_x = $33 - .label center_y = $34 - .label center_dist = $35 - .label _25 = $2b - .label _26 = $2c - .label _27 = $2d + .label center_x = $30 + .label center_y = $31 + .label center_dist = $32 + .label _25 = $28 + .label _26 = $29 + .label _27 = $2a //SEG14 [7] call initSquareTables //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: @@ -4464,46 +4529,46 @@ main: { } //SEG74 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($37) center_x, byte zeropage($38) center_y) +// startProcessing(byte zeropage($34) center_x, byte zeropage($35) center_y) startProcessing: { - .label _0 = $3d - .label _1 = $43 - .label _2 = $45 - .label _4 = $49 - .label _5 = $4b - .label _7 = $4e - .label _8 = $50 - .label _10 = $52 - .label _11 = $54 - .label _12 = $56 - .label _14 = $5a - .label _15 = $5c - .label _16 = $5e - .label _21 = $63 - .label _22 = $64 - .label _29 = $3c - .label _30 = $69 - .label center_x = $37 - .label center_y = $38 + .label _0 = $3a + .label _1 = $40 + .label _2 = $42 + .label _4 = $46 + .label _5 = $48 + .label _7 = $4b + .label _8 = $4d + .label _10 = $4f + .label _11 = $51 + .label _12 = $53 + .label _14 = $57 + .label _15 = $59 + .label _16 = $5b + .label _21 = $60 + .label _22 = $61 + .label _29 = $39 + .label _30 = $66 + .label center_x = $34 + .label center_y = $35 .label i = 8 - .label screenPtr = $47 + .label screenPtr = $44 .label spriteData = $b - .label ch = $4d + .label ch = $4a .label chargenData = 9 .label i1 = $d - .label spriteX = $58 - .label spriteY = $60 - .label spritePtr = $62 + .label spriteX = $55 + .label spriteY = $5d + .label spritePtr = $5f .label freeIdx = 8 .label freeIdx_6 = 7 - .label _40 = $39 - .label _41 = $3a - .label _42 = $3b - .label _44 = $3f - .label _45 = $41 - .label _47 = $66 - .label _48 = $67 - .label _49 = $68 + .label _40 = $36 + .label _41 = $37 + .label _42 = $38 + .label _44 = $3c + .label _45 = $3e + .label _47 = $63 + .label _48 = $64 + .label _49 = $65 .label freeIdx_7 = 7 //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: @@ -4907,14 +4972,14 @@ startProcessing: { // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff getCharToProcess: { - .label _9 = $6c - .label _10 = $72 - .label _11 = $74 - .label _13 = $6a - .label _14 = $6b - .label return_x = $2f - .label return_y = $30 - .label return_dist = $31 + .label _9 = $69 + .label _10 = $6f + .label _11 = $71 + .label _13 = $67 + .label _14 = $68 + .label return_x = $2c + .label return_y = $2d + .label return_dist = $2e .label x = $11 .label dist = $16 .label screen_line = $e @@ -4925,8 +4990,8 @@ getCharToProcess: { .label closest_dist = $12 .label closest_x = $14 .label closest_y = $15 - .label _15 = $6e - .label _16 = $70 + .label _15 = $6b + .label _16 = $6d .label return_dist_5 = $16 .label return_dist_6 = $16 .label return_x_7 = $14 @@ -5286,12 +5351,12 @@ initSprites: { initSquareTables: { .label _2 = $1c .label _4 = $1c - .label _6 = $78 + .label _6 = $75 .label _10 = $1e .label _12 = $1e - .label _14 = $7d - .label _16 = $7a - .label _17 = $7f + .label _14 = $7a + .label _16 = $77 + .label _17 = $7c .label x_dist = $1c .label x = $1b .label y_dist = $1e @@ -5472,14 +5537,14 @@ initSquareTables: { // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte zeropage($21) a, byte zeropage($20) b) mul8u: { - .label _1 = $80 + .label _1 = $7d .label mb = $24 .label a = $21 .label res = $22 .label b = $20 - .label return = $76 + .label return = $73 .label b_1 = $1f - .label return_3 = $7b + .label return_3 = $78 //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: //SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy @@ -5542,60 +5607,41 @@ mul8u: { jmp b1 } //SEG338 irqBottom -// Raster Interrupt at the middle of the screen +// Raster Interrupt at the bottom of the screen irqBottom: { - .label i = $26 //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i jmp b1 - //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - b1_from_b1: - //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - jmp b1 - //SEG344 irqBottom::@1 + //SEG341 irqBottom::@1 b1: - //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #5 - cmp i - bne b1_from_b1 - //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] - b2_from_b1: - jmp b2 - //SEG348 irqBottom::@2 - b2: - //SEG349 [203] call processChars - //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] - processChars_from_b2: + //SEG342 [200] call processChars + //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] + processChars_from_b1: jsr processChars - jmp b3 - //SEG351 irqBottom::@3 - b3: - //SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + jmp b2 + //SEG344 irqBottom::@2 + b2: + //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG355 irqBottom::@return + //SEG348 irqBottom::@return breturn: - //SEG356 [207] return - exit interrupt(HARDWARE_ALL) + //SEG349 [204] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5604,77 +5650,76 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG350 processChars // Process any chars in the PROCESSING array processChars: { - .label _1 = $99 - .label _12 = $8a - .label _13 = $8b - .label _15 = $8d - .label _16 = $8e - .label _18 = $8c - .label _26 = $91 - .label _27 = $93 - .label _31 = $96 - .label _34 = $9a - .label _36 = $84 - .label _37 = $95 - .label _38 = $98 - .label processing = $85 - .label bitmask = $87 - .label i = $27 - .label xpos = $88 - .label ypos = $90 - .label xchar = $94 - .label ychar = $97 - .label numActive = $28 - .label _64 = $81 - .label _65 = $82 - .label _66 = $83 - //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _11 = $87 + .label _12 = $88 + .label _14 = $8a + .label _15 = $8b + .label _17 = $89 + .label _25 = $8e + .label _26 = $90 + .label _30 = $93 + .label _33 = $96 + .label _37 = $81 + .label _38 = $92 + .label _39 = $95 + .label processing = $82 + .label bitmask = $84 + .label i = $26 + .label xpos = $85 + .label ypos = $8d + .label xchar = $91 + .label ychar = $94 + .label numActive = $27 + .label _65 = $7e + .label _66 = $7f + .label _67 = $80 + //SEG351 [206] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG352 [206] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG354 [206] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG355 [206] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG356 [206] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG364 processChars::@1 + //SEG357 processChars::@1 b1: - //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _64 - //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _64 - clc - adc i sta _65 - //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 lda _65 - asl - asl - sta _66 - //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _66 clc adc i - sta _36 - //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuz2 - lda _36 + sta _66 + //SEG360 [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _66 + asl + asl + sta _67 + //SEG361 [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _67 + clc + adc i + sta _37 + //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuz2 + lda _37 clc adc #PROCESSING adc #0 sta processing+1 - //SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG363 [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -5687,23 +5732,23 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //SEG364 [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE beq b2_from_b1 jmp b10 - //SEG372 processChars::@10 + //SEG365 processChars::@10 b10: - //SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + //SEG366 [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 jmp b11 - //SEG374 processChars::@11 + //SEG367 processChars::@11 b11: - //SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -5715,12 +5760,12 @@ processChars: { txa !: sta $ffff - //SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //SEG370 [217] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -5730,15 +5775,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y jmp b3 - //SEG379 processChars::@3 + //SEG372 processChars::@3 b3: - //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -5753,62 +5798,62 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 + //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 lda xpos+1 - sta _12 - //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 + sta _11 + //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 // Set sprite position lda #0 - cmp _12 + cmp _11 bne b4 jmp b8 - //SEG383 processChars::@8 + //SEG376 processChars::@8 b8: - //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask - sta _13 - //SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _12 + //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB - and _13 + and _12 sta SPRITES_XMSB jmp b5 - //SEG386 processChars::@5 + //SEG379 processChars::@5 b5: - //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _18 - //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 + sta _17 + //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 lda xpos - sta _15 - //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _15 - ldy _18 + sta _14 + //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _14 + ldy _17 sta SPRITES_XPOS,y - //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG383 [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _16 + sta _15 iny lda (processing),y - sta _16+1 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 - lda _16 + sta _15+1 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + lda _15 sta ypos - //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos - ldy _18 + ldy _17 sta SPRITES_YPOS,y - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -5820,10 +5865,10 @@ processChars: { cmp #(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + jmp b14 + //SEG387 processChars::@14 + b14: + //SEG388 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -5834,10 +5879,10 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b14 - //SEG396 processChars::@14 - b14: - //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + jmp b13 + //SEG389 processChars::@13 + b13: + //SEG390 [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -5849,10 +5894,10 @@ processChars: { cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + jmp b12 + //SEG391 processChars::@12 + b12: + //SEG392 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -5865,32 +5910,32 @@ processChars: { bcc b6 !: jmp b9 - //SEG400 processChars::@9 + //SEG393 processChars::@9 b9: - //SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 + //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 lda xpos+1 lsr - sta _26+1 + sta _25+1 lda xpos ror + sta _25 + lsr _25+1 + ror _25 + lsr _25+1 + ror _25 + //SEG395 [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 -- vbuz1=_byte_vwuz2 + lda _25 sta _26 - lsr _26+1 - ror _26 - lsr _26+1 - ror _26 - //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuz1=_byte_vwuz2 - lda _26 - sta _27 - //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 - lax _27 + //SEG396 [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + lax _26 axs #BORDER_XPOS_LEFT/8 stx xchar - //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda xchar asl - sta _37 - //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 - ldx _37 + sta _38 + //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 + ldx _38 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX clc lda (processing),y @@ -5900,7 +5945,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + //SEG399 [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -5914,22 +5959,22 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda ypos lsr lsr lsr - sta _31 - //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 - lax _31 + sta _30 + //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + lax _30 axs #BORDER_YPOS_TOP/8 stx ychar - //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda ychar asl - sta _38 - //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 - ldx _38 + sta _39 + //SEG403 [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 + ldx _39 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -5939,7 +5984,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -5952,130 +5997,80 @@ processChars: { adc (processing),y sta (processing),y jmp b7 - //SEG412 processChars::@7 + //SEG405 processChars::@7 b7: - //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG407 [246] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG408 [246] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG416 processChars::@2 + //SEG409 processChars::@2 b2: - //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 - jmp b12 - //SEG419 processChars::@12 - b12: - //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2 - lax numActive - axs #-['0'] - stx _1 - //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1 - lda _1 - sta SCREEN+$3e7 jmp breturn - //SEG422 processChars::@return + //SEG412 processChars::@return breturn: - //SEG423 [254] return + //SEG413 [249] return rts - //SEG424 processChars::@6 + //SEG414 processChars::@6 b6: - //SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask - sta _34 - //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _33 + //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 // Disable the sprite lda SPRITES_ENABLE - and _34 + and _33 sta SPRITES_ENABLE jmp b7 - //SEG428 processChars::@4 + //SEG418 processChars::@4 b4: - //SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora bitmask sta SPRITES_XMSB jmp b5 } -//SEG430 irqTop +//SEG420 irqTop // Raster Interrupt at the top of the screen irqTop: { - .label i = $29 - .label i1 = $2a - //SEG431 entry interrupt(HARDWARE_ALL) + //SEG421 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - b1_from_irqTop: - //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i jmp b1 - //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - b1_from_b1: - //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - jmp b1 - //SEG436 irqTop::@1 + //SEG422 irqTop::@1 b1: - //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #5 - cmp i - bne b1_from_b1 - //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] - b2_from_b1: - //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuz1=vbuc1 - lda #0 - sta i1 - jmp b2 - //*BORDERCOL = WHITE; - //*BGCOL = WHITE; - //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] - b2_from_b2: - //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy - jmp b2 - //SEG443 irqTop::@2 - b2: - //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 - inc i1 - //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuz1_neq_vbuc1_then_la1 - lda #8 - cmp i1 - bne b2_from_b2 - jmp b3 - //SEG446 irqTop::@3 - b3: - //SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG450 irqTop::@return + //SEG426 irqTop::@return breturn: - //SEG451 [269] return - exit interrupt(HARDWARE_ALL) + //SEG427 [258] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -6112,7 +6107,7 @@ Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main:: Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ main::$16 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ main::$16 ] Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a @@ -6121,16 +6116,16 @@ Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCES Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] Statement [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ main::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ main::center_y#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ main::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ main::center_y#0 ] Statement [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a Statement [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] Statement [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ) always clobbers reg byte a @@ -6152,8 +6147,8 @@ Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (b Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:53 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] @@ -6169,14 +6164,14 @@ Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a Statement [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] Statement [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ) always clobbers reg byte a Statement [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ) always clobbers reg byte a Statement [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ) always clobbers reg byte a Statement [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ startProcessing::$30 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ startProcessing::$30 ] Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a Statement [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a @@ -6191,7 +6186,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ g Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] Statement [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a Statement [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ getCharToProcess::$13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ getCharToProcess::$13 ] Statement [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a Statement [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a Statement [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a @@ -6234,66 +6229,65 @@ Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareT Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a -Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a -Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a -Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] -Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] -Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a -Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ processChars::$18 ] -Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:140 [ processChars::$18 ] -Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ] -Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a -Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a -Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a -Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a -Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a -Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a -Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a -Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [204] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Statement [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a +Statement [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ) always clobbers reg byte a +Statement [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ) always clobbers reg byte a +Statement [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Statement [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:132 [ processChars::bitmask#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:132 [ processChars::bitmask#0 ] +Statement [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:132 [ processChars::bitmask#0 ] +Statement [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [217] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a +Statement [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ) always clobbers reg byte a +Statement [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$14 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:137 [ processChars::$17 ] +Statement [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$15 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$15 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:137 [ processChars::$17 ] +Statement [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:141 [ processChars::ypos#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:141 [ processChars::ypos#0 ] +Statement [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a +Statement [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ) always clobbers reg byte a +Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a +Statement [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ) always clobbers reg byte a +Statement [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:200 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ) always clobbers reg byte a +Statement [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 [ processChars::i#10 processChars::numActive#10 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [258] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y Statement [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:4 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y Statement [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:4 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a Statement [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$25 ] ( main:4 [ main::i#2 main::$25 ] ) always clobbers reg byte a @@ -6401,54 +6395,53 @@ Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareT Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a Statement [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a -Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a -Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a -Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a -Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a -Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a -Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y -Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a -Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a -Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a -Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a -Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a -Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a -Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a -Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [204] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a +Statement [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a +Statement [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ) always clobbers reg byte a +Statement [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ) always clobbers reg byte a +Statement [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [217] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a +Statement [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ) always clobbers reg byte a +Statement [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$14 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$14 ] ) always clobbers reg byte a +Statement [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$15 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::$15 ] ) always clobbers reg byte a reg byte y +Statement [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a +Statement [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ) always clobbers reg byte a +Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a +Statement [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ) always clobbers reg byte a +Statement [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:200 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ) always clobbers reg byte a +Statement [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 [ processChars::i#10 processChars::numActive#10 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:200 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [258] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y Potential registers zp ZP_WORD:2 [ main::src#2 main::src#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ main::i#2 main::i#1 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , @@ -6475,241 +6468,229 @@ Potential registers zp ZP_BYTE:32 [ mul8u::b#0 ] : zp ZP_BYTE:32 , reg byte a , Potential registers zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , Potential registers zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:34 , Potential registers zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:36 , -Potential registers zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] : zp ZP_BYTE:39 , -Potential registers zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] : zp ZP_BYTE:40 , -Potential registers zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ main::$25 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ main::$26 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ main::$27 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ main::$16 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:49 , -Potential registers zp ZP_BYTE:51 [ main::center_x#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ main::center_y#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:53 [ main::center_dist#0 ] : zp ZP_WORD:53 , -Potential registers zp ZP_BYTE:55 [ startProcessing::center_x#0 ] : zp ZP_BYTE:55 , reg byte x , -Potential registers zp ZP_BYTE:56 [ startProcessing::center_y#0 ] : zp ZP_BYTE:56 , reg byte x , -Potential registers zp ZP_BYTE:57 [ startProcessing::$40 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ startProcessing::$41 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ startProcessing::$42 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:60 [ startProcessing::$29 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:61 [ startProcessing::$0 ] : zp ZP_WORD:61 , -Potential registers zp ZP_WORD:63 [ startProcessing::$44 ] : zp ZP_WORD:63 , -Potential registers zp ZP_WORD:65 [ startProcessing::$45 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ startProcessing::$1 ] : zp ZP_WORD:67 , -Potential registers zp ZP_WORD:69 [ startProcessing::$2 ] : zp ZP_WORD:69 , -Potential registers zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:71 , -Potential registers zp ZP_WORD:73 [ startProcessing::$4 ] : zp ZP_WORD:73 , -Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 , -Potential registers zp ZP_BYTE:77 [ startProcessing::ch#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:78 [ startProcessing::$7 ] : zp ZP_WORD:78 , -Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 , -Potential registers zp ZP_WORD:82 [ startProcessing::$10 ] : zp ZP_WORD:82 , -Potential registers zp ZP_WORD:84 [ startProcessing::$11 ] : zp ZP_WORD:84 , -Potential registers zp ZP_WORD:86 [ startProcessing::$12 ] : zp ZP_WORD:86 , -Potential registers zp ZP_WORD:88 [ startProcessing::spriteX#0 ] : zp ZP_WORD:88 , -Potential registers zp ZP_WORD:90 [ startProcessing::$14 ] : zp ZP_WORD:90 , -Potential registers zp ZP_WORD:92 [ startProcessing::$15 ] : zp ZP_WORD:92 , -Potential registers zp ZP_WORD:94 [ startProcessing::$16 ] : zp ZP_WORD:94 , -Potential registers zp ZP_WORD:96 [ startProcessing::spriteY#0 ] : zp ZP_WORD:96 , -Potential registers zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ startProcessing::$21 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:100 [ startProcessing::$22 ] : zp ZP_WORD:100 , -Potential registers zp ZP_BYTE:102 [ startProcessing::$47 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:103 [ startProcessing::$48 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ startProcessing::$49 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ startProcessing::$30 ] : zp ZP_BYTE:105 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ getCharToProcess::$13 ] : zp ZP_BYTE:106 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ getCharToProcess::$14 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:108 [ getCharToProcess::$9 ] : zp ZP_WORD:108 , -Potential registers zp ZP_WORD:110 [ getCharToProcess::$15 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ getCharToProcess::$16 ] : zp ZP_WORD:112 , -Potential registers zp ZP_WORD:114 [ getCharToProcess::$10 ] : zp ZP_WORD:114 , -Potential registers zp ZP_WORD:116 [ getCharToProcess::$11 ] : zp ZP_WORD:116 , -Potential registers zp ZP_WORD:118 [ mul8u::return#2 ] : zp ZP_WORD:118 , -Potential registers zp ZP_WORD:120 [ initSquareTables::$6 ] : zp ZP_WORD:120 , -Potential registers zp ZP_BYTE:122 [ initSquareTables::$16 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:123 [ mul8u::return#3 ] : zp ZP_WORD:123 , -Potential registers zp ZP_WORD:125 [ initSquareTables::$14 ] : zp ZP_WORD:125 , -Potential registers zp ZP_BYTE:127 [ initSquareTables::$17 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ mul8u::$1 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ processChars::$64 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ processChars::$65 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ processChars::$66 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ processChars::$36 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:133 [ processChars::processing#0 ] : zp ZP_WORD:133 , -Potential registers zp ZP_BYTE:135 [ processChars::bitmask#0 ] : zp ZP_BYTE:135 , -Potential registers zp ZP_WORD:136 [ processChars::xpos#0 ] : zp ZP_WORD:136 , -Potential registers zp ZP_BYTE:138 [ processChars::$12 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:139 [ processChars::$13 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:140 [ processChars::$18 ] : zp ZP_BYTE:140 , reg byte x , -Potential registers zp ZP_BYTE:141 [ processChars::$15 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:142 [ processChars::$16 ] : zp ZP_WORD:142 , -Potential registers zp ZP_BYTE:144 [ processChars::ypos#0 ] : zp ZP_BYTE:144 , reg byte x , -Potential registers zp ZP_WORD:145 [ processChars::$26 ] : zp ZP_WORD:145 , -Potential registers zp ZP_BYTE:147 [ processChars::$27 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:148 [ processChars::xchar#0 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:149 [ processChars::$37 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:150 [ processChars::$31 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:151 [ processChars::ychar#0 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:152 [ processChars::$38 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:153 [ processChars::$1 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:154 [ processChars::$34 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] : zp ZP_BYTE:38 , +Potential registers zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] : zp ZP_BYTE:39 , +Potential registers zp ZP_BYTE:40 [ main::$25 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ main::$26 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ main::$27 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ main::$16 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:46 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:46 , +Potential registers zp ZP_BYTE:48 [ main::center_x#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ main::center_y#0 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:50 [ main::center_dist#0 ] : zp ZP_WORD:50 , +Potential registers zp ZP_BYTE:52 [ startProcessing::center_x#0 ] : zp ZP_BYTE:52 , reg byte x , +Potential registers zp ZP_BYTE:53 [ startProcessing::center_y#0 ] : zp ZP_BYTE:53 , reg byte x , +Potential registers zp ZP_BYTE:54 [ startProcessing::$40 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ startProcessing::$41 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ startProcessing::$42 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ startProcessing::$29 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:58 [ startProcessing::$0 ] : zp ZP_WORD:58 , +Potential registers zp ZP_WORD:60 [ startProcessing::$44 ] : zp ZP_WORD:60 , +Potential registers zp ZP_WORD:62 [ startProcessing::$45 ] : zp ZP_WORD:62 , +Potential registers zp ZP_WORD:64 [ startProcessing::$1 ] : zp ZP_WORD:64 , +Potential registers zp ZP_WORD:66 [ startProcessing::$2 ] : zp ZP_WORD:66 , +Potential registers zp ZP_WORD:68 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:68 , +Potential registers zp ZP_WORD:70 [ startProcessing::$4 ] : zp ZP_WORD:70 , +Potential registers zp ZP_WORD:72 [ startProcessing::$5 ] : zp ZP_WORD:72 , +Potential registers zp ZP_BYTE:74 [ startProcessing::ch#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:75 [ startProcessing::$7 ] : zp ZP_WORD:75 , +Potential registers zp ZP_WORD:77 [ startProcessing::$8 ] : zp ZP_WORD:77 , +Potential registers zp ZP_WORD:79 [ startProcessing::$10 ] : zp ZP_WORD:79 , +Potential registers zp ZP_WORD:81 [ startProcessing::$11 ] : zp ZP_WORD:81 , +Potential registers zp ZP_WORD:83 [ startProcessing::$12 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:85 [ startProcessing::spriteX#0 ] : zp ZP_WORD:85 , +Potential registers zp ZP_WORD:87 [ startProcessing::$14 ] : zp ZP_WORD:87 , +Potential registers zp ZP_WORD:89 [ startProcessing::$15 ] : zp ZP_WORD:89 , +Potential registers zp ZP_WORD:91 [ startProcessing::$16 ] : zp ZP_WORD:91 , +Potential registers zp ZP_WORD:93 [ startProcessing::spriteY#0 ] : zp ZP_WORD:93 , +Potential registers zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:95 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ startProcessing::$21 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:97 [ startProcessing::$22 ] : zp ZP_WORD:97 , +Potential registers zp ZP_BYTE:99 [ startProcessing::$47 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ startProcessing::$48 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ startProcessing::$49 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ startProcessing::$30 ] : zp ZP_BYTE:102 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ getCharToProcess::$13 ] : zp ZP_BYTE:103 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ getCharToProcess::$14 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:105 [ getCharToProcess::$9 ] : zp ZP_WORD:105 , +Potential registers zp ZP_WORD:107 [ getCharToProcess::$15 ] : zp ZP_WORD:107 , +Potential registers zp ZP_WORD:109 [ getCharToProcess::$16 ] : zp ZP_WORD:109 , +Potential registers zp ZP_WORD:111 [ getCharToProcess::$10 ] : zp ZP_WORD:111 , +Potential registers zp ZP_WORD:113 [ getCharToProcess::$11 ] : zp ZP_WORD:113 , +Potential registers zp ZP_WORD:115 [ mul8u::return#2 ] : zp ZP_WORD:115 , +Potential registers zp ZP_WORD:117 [ initSquareTables::$6 ] : zp ZP_WORD:117 , +Potential registers zp ZP_BYTE:119 [ initSquareTables::$16 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:120 [ mul8u::return#3 ] : zp ZP_WORD:120 , +Potential registers zp ZP_WORD:122 [ initSquareTables::$14 ] : zp ZP_WORD:122 , +Potential registers zp ZP_BYTE:124 [ initSquareTables::$17 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ mul8u::$1 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ processChars::$65 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ processChars::$66 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ processChars::$67 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ processChars::$37 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:130 [ processChars::processing#0 ] : zp ZP_WORD:130 , +Potential registers zp ZP_BYTE:132 [ processChars::bitmask#0 ] : zp ZP_BYTE:132 , +Potential registers zp ZP_WORD:133 [ processChars::xpos#0 ] : zp ZP_WORD:133 , +Potential registers zp ZP_BYTE:135 [ processChars::$11 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ processChars::$12 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ processChars::$17 ] : zp ZP_BYTE:137 , reg byte x , +Potential registers zp ZP_BYTE:138 [ processChars::$14 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:139 [ processChars::$15 ] : zp ZP_WORD:139 , +Potential registers zp ZP_BYTE:141 [ processChars::ypos#0 ] : zp ZP_BYTE:141 , reg byte x , +Potential registers zp ZP_WORD:142 [ processChars::$25 ] : zp ZP_WORD:142 , +Potential registers zp ZP_BYTE:144 [ processChars::$26 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:145 [ processChars::xchar#0 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:146 [ processChars::$38 ] : zp ZP_BYTE:146 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:147 [ processChars::$30 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:148 [ processChars::ychar#0 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:149 [ processChars::$39 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:150 [ processChars::$33 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [getCharToProcess] 4,996.99: zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,090.17: zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,820.67: zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 2,002: zp ZP_BYTE:107 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:106 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:110 [ getCharToProcess::$15 ] 4: zp ZP_WORD:112 [ getCharToProcess::$16 ] 4: zp ZP_WORD:114 [ getCharToProcess::$10 ] 4: zp ZP_WORD:116 [ getCharToProcess::$11 ] 3: zp ZP_WORD:108 [ getCharToProcess::$9 ] -Uplift Scope [startProcessing] 2,734.41: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$40 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$41 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$42 ] 2,002: zp ZP_BYTE:60 [ startProcessing::$29 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:63 [ startProcessing::$44 ] 4: zp ZP_WORD:65 [ startProcessing::$45 ] 4: zp ZP_WORD:67 [ startProcessing::$1 ] 4: zp ZP_WORD:73 [ startProcessing::$4 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:78 [ startProcessing::$7 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$10 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:90 [ startProcessing::$14 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_BYTE:102 [ startProcessing::$47 ] 4: zp ZP_BYTE:103 [ startProcessing::$48 ] 4: zp ZP_BYTE:104 [ startProcessing::$49 ] 3: zp ZP_WORD:61 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:105 [ startProcessing::$30 ] 2: zp ZP_BYTE:77 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:99 [ startProcessing::$21 ] 1.2: zp ZP_WORD:69 [ startProcessing::$2 ] 0.57: zp ZP_WORD:100 [ startProcessing::$22 ] 0.44: zp ZP_WORD:96 [ startProcessing::spriteY#0 ] 0.38: zp ZP_BYTE:55 [ startProcessing::center_x#0 ] 0.33: zp ZP_WORD:88 [ startProcessing::spriteX#0 ] 0.33: zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:56 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] -Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:128 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:118 [ mul8u::return#2 ] 22: zp ZP_WORD:123 [ mul8u::return#3 ] -Uplift Scope [processChars] 34.43: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:129 [ processChars::$64 ] 22: zp ZP_BYTE:130 [ processChars::$65 ] 22: zp ZP_BYTE:131 [ processChars::$66 ] 22: zp ZP_BYTE:132 [ processChars::$36 ] 22: zp ZP_BYTE:138 [ processChars::$12 ] 22: zp ZP_BYTE:139 [ processChars::$13 ] 22: zp ZP_BYTE:141 [ processChars::$15 ] 22: zp ZP_BYTE:147 [ processChars::$27 ] 22: zp ZP_BYTE:148 [ processChars::xchar#0 ] 22: zp ZP_BYTE:149 [ processChars::$37 ] 22: zp ZP_BYTE:150 [ processChars::$31 ] 22: zp ZP_BYTE:151 [ processChars::ychar#0 ] 22: zp ZP_BYTE:152 [ processChars::$38 ] 22: zp ZP_BYTE:154 [ processChars::$34 ] 17.97: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:142 [ processChars::$16 ] 11: zp ZP_WORD:145 [ processChars::$26 ] 6.6: zp ZP_BYTE:140 [ processChars::$18 ] 4: zp ZP_BYTE:153 [ processChars::$1 ] 2.75: zp ZP_BYTE:144 [ processChars::ypos#0 ] 2.29: zp ZP_BYTE:135 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:136 [ processChars::xpos#0 ] 0.32: zp ZP_WORD:133 [ processChars::processing#0 ] -Uplift Scope [initSquareTables] 66: zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:122 [ initSquareTables::$16 ] 22: zp ZP_BYTE:127 [ initSquareTables::$17 ] 11: zp ZP_WORD:120 [ initSquareTables::$6 ] 11: zp ZP_WORD:125 [ initSquareTables::$14 ] -Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$25 ] 22: zp ZP_BYTE:44 [ main::$26 ] 22: zp ZP_BYTE:45 [ main::$27 ] 22: zp ZP_WORD:53 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:46 [ main::$16 ] 5.5: zp ZP_BYTE:51 [ main::center_x#0 ] 5.5: zp ZP_BYTE:52 [ main::center_y#0 ] -Uplift Scope [irqTop] 38.5: zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] +Uplift Scope [getCharToProcess] 4,996.99: zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,090.17: zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,820.67: zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 2,002: zp ZP_BYTE:104 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:103 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:46 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:107 [ getCharToProcess::$15 ] 4: zp ZP_WORD:109 [ getCharToProcess::$16 ] 4: zp ZP_WORD:111 [ getCharToProcess::$10 ] 4: zp ZP_WORD:113 [ getCharToProcess::$11 ] 3: zp ZP_WORD:105 [ getCharToProcess::$9 ] +Uplift Scope [startProcessing] 2,734.41: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:54 [ startProcessing::$40 ] 2,002: zp ZP_BYTE:55 [ startProcessing::$41 ] 2,002: zp ZP_BYTE:56 [ startProcessing::$42 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$29 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:60 [ startProcessing::$44 ] 4: zp ZP_WORD:62 [ startProcessing::$45 ] 4: zp ZP_WORD:64 [ startProcessing::$1 ] 4: zp ZP_WORD:70 [ startProcessing::$4 ] 4: zp ZP_WORD:72 [ startProcessing::$5 ] 4: zp ZP_WORD:75 [ startProcessing::$7 ] 4: zp ZP_WORD:77 [ startProcessing::$8 ] 4: zp ZP_WORD:79 [ startProcessing::$10 ] 4: zp ZP_WORD:81 [ startProcessing::$11 ] 4: zp ZP_WORD:83 [ startProcessing::$12 ] 4: zp ZP_WORD:87 [ startProcessing::$14 ] 4: zp ZP_WORD:89 [ startProcessing::$15 ] 4: zp ZP_WORD:91 [ startProcessing::$16 ] 4: zp ZP_BYTE:99 [ startProcessing::$47 ] 4: zp ZP_BYTE:100 [ startProcessing::$48 ] 4: zp ZP_BYTE:101 [ startProcessing::$49 ] 3: zp ZP_WORD:58 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:102 [ startProcessing::$30 ] 2: zp ZP_BYTE:74 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:96 [ startProcessing::$21 ] 1.2: zp ZP_WORD:66 [ startProcessing::$2 ] 0.57: zp ZP_WORD:97 [ startProcessing::$22 ] 0.44: zp ZP_WORD:93 [ startProcessing::spriteY#0 ] 0.38: zp ZP_BYTE:52 [ startProcessing::center_x#0 ] 0.33: zp ZP_WORD:85 [ startProcessing::spriteX#0 ] 0.33: zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:53 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:68 [ startProcessing::screenPtr#0 ] +Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:125 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:115 [ mul8u::return#2 ] 22: zp ZP_WORD:120 [ mul8u::return#3 ] +Uplift Scope [processChars] 33.77: zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:126 [ processChars::$65 ] 22: zp ZP_BYTE:127 [ processChars::$66 ] 22: zp ZP_BYTE:128 [ processChars::$67 ] 22: zp ZP_BYTE:129 [ processChars::$37 ] 22: zp ZP_BYTE:135 [ processChars::$11 ] 22: zp ZP_BYTE:136 [ processChars::$12 ] 22: zp ZP_BYTE:138 [ processChars::$14 ] 22: zp ZP_BYTE:144 [ processChars::$26 ] 22: zp ZP_BYTE:145 [ processChars::xchar#0 ] 22: zp ZP_BYTE:146 [ processChars::$38 ] 22: zp ZP_BYTE:147 [ processChars::$30 ] 22: zp ZP_BYTE:148 [ processChars::ychar#0 ] 22: zp ZP_BYTE:149 [ processChars::$39 ] 22: zp ZP_BYTE:150 [ processChars::$33 ] 17.97: zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:139 [ processChars::$15 ] 11: zp ZP_WORD:142 [ processChars::$25 ] 6.6: zp ZP_BYTE:137 [ processChars::$17 ] 2.75: zp ZP_BYTE:141 [ processChars::ypos#0 ] 2.29: zp ZP_BYTE:132 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:133 [ processChars::xpos#0 ] 0.32: zp ZP_WORD:130 [ processChars::processing#0 ] +Uplift Scope [initSquareTables] 66: zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:119 [ initSquareTables::$16 ] 22: zp ZP_BYTE:124 [ initSquareTables::$17 ] 11: zp ZP_WORD:117 [ initSquareTables::$6 ] 11: zp ZP_WORD:122 [ initSquareTables::$14 ] +Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:40 [ main::$25 ] 22: zp ZP_BYTE:41 [ main::$26 ] 22: zp ZP_BYTE:42 [ main::$27 ] 22: zp ZP_WORD:50 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:43 [ main::$16 ] 5.5: zp ZP_BYTE:48 [ main::center_x#0 ] 5.5: zp ZP_BYTE:49 [ main::center_y#0 ] Uplift Scope [initSprites] 33: zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] 33: zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] -Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] Uplift Scope [ProcessingChar] Uplift Scope [ProcessingSprite] Uplift Scope [setupRasterIrq] +Uplift Scope [irqTop] +Uplift Scope [irqBottom] Uplift Scope [] -Uplifting [getCharToProcess] best 290835 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:106 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:110 [ getCharToProcess::$15 ] zp ZP_WORD:112 [ getCharToProcess::$16 ] zp ZP_WORD:114 [ getCharToProcess::$10 ] zp ZP_WORD:116 [ getCharToProcess::$11 ] zp ZP_WORD:108 [ getCharToProcess::$9 ] +Uplifting [getCharToProcess] best 290112 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:103 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] zp ZP_WORD:46 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:107 [ getCharToProcess::$15 ] zp ZP_WORD:109 [ getCharToProcess::$16 ] zp ZP_WORD:111 [ getCharToProcess::$10 ] zp ZP_WORD:113 [ getCharToProcess::$11 ] zp ZP_WORD:105 [ getCharToProcess::$9 ] Limited combination testing to 100 combinations of 8748 possible. -Uplifting [startProcessing] best 272835 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$40 ] reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] zp ZP_BYTE:60 [ startProcessing::$29 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:63 [ startProcessing::$44 ] zp ZP_WORD:65 [ startProcessing::$45 ] zp ZP_WORD:67 [ startProcessing::$1 ] zp ZP_WORD:73 [ startProcessing::$4 ] zp ZP_WORD:75 [ startProcessing::$5 ] zp ZP_WORD:78 [ startProcessing::$7 ] zp ZP_WORD:80 [ startProcessing::$8 ] zp ZP_WORD:82 [ startProcessing::$10 ] zp ZP_WORD:84 [ startProcessing::$11 ] zp ZP_WORD:86 [ startProcessing::$12 ] zp ZP_WORD:90 [ startProcessing::$14 ] zp ZP_WORD:92 [ startProcessing::$15 ] zp ZP_WORD:94 [ startProcessing::$16 ] zp ZP_BYTE:102 [ startProcessing::$47 ] zp ZP_BYTE:103 [ startProcessing::$48 ] zp ZP_BYTE:104 [ startProcessing::$49 ] zp ZP_WORD:61 [ startProcessing::$0 ] zp ZP_BYTE:105 [ startProcessing::$30 ] zp ZP_BYTE:77 [ startProcessing::ch#0 ] zp ZP_BYTE:99 [ startProcessing::$21 ] zp ZP_WORD:69 [ startProcessing::$2 ] zp ZP_WORD:100 [ startProcessing::$22 ] zp ZP_WORD:96 [ startProcessing::spriteY#0 ] zp ZP_BYTE:55 [ startProcessing::center_x#0 ] zp ZP_WORD:88 [ startProcessing::spriteX#0 ] zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:56 [ startProcessing::center_y#0 ] zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Uplifting [startProcessing] best 272112 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$40 ] reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] zp ZP_BYTE:57 [ startProcessing::$29 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:60 [ startProcessing::$44 ] zp ZP_WORD:62 [ startProcessing::$45 ] zp ZP_WORD:64 [ startProcessing::$1 ] zp ZP_WORD:70 [ startProcessing::$4 ] zp ZP_WORD:72 [ startProcessing::$5 ] zp ZP_WORD:75 [ startProcessing::$7 ] zp ZP_WORD:77 [ startProcessing::$8 ] zp ZP_WORD:79 [ startProcessing::$10 ] zp ZP_WORD:81 [ startProcessing::$11 ] zp ZP_WORD:83 [ startProcessing::$12 ] zp ZP_WORD:87 [ startProcessing::$14 ] zp ZP_WORD:89 [ startProcessing::$15 ] zp ZP_WORD:91 [ startProcessing::$16 ] zp ZP_BYTE:99 [ startProcessing::$47 ] zp ZP_BYTE:100 [ startProcessing::$48 ] zp ZP_BYTE:101 [ startProcessing::$49 ] zp ZP_WORD:58 [ startProcessing::$0 ] zp ZP_BYTE:102 [ startProcessing::$30 ] zp ZP_BYTE:74 [ startProcessing::ch#0 ] zp ZP_BYTE:96 [ startProcessing::$21 ] zp ZP_WORD:66 [ startProcessing::$2 ] zp ZP_WORD:97 [ startProcessing::$22 ] zp ZP_WORD:93 [ startProcessing::spriteY#0 ] zp ZP_BYTE:52 [ startProcessing::center_x#0 ] zp ZP_WORD:85 [ startProcessing::spriteX#0 ] zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:53 [ startProcessing::center_y#0 ] zp ZP_WORD:68 [ startProcessing::screenPtr#0 ] Limited combination testing to 100 combinations of 113246208 possible. -Uplifting [mul8u] best 271809 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:118 [ mul8u::return#2 ] zp ZP_WORD:123 [ mul8u::return#3 ] +Uplifting [mul8u] best 271086 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:115 [ mul8u::return#2 ] zp ZP_WORD:120 [ mul8u::return#3 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [initSquareTables] best 271649 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:122 [ initSquareTables::$16 ] zp ZP_BYTE:127 [ initSquareTables::$17 ] zp ZP_WORD:120 [ initSquareTables::$6 ] zp ZP_WORD:125 [ initSquareTables::$14 ] +Uplifting [processChars] best 270846 combination zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] reg byte a [ processChars::$67 ] reg byte a [ processChars::$37 ] zp ZP_BYTE:135 [ processChars::$11 ] zp ZP_BYTE:136 [ processChars::$12 ] zp ZP_BYTE:138 [ processChars::$14 ] zp ZP_BYTE:144 [ processChars::$26 ] zp ZP_BYTE:145 [ processChars::xchar#0 ] zp ZP_BYTE:146 [ processChars::$38 ] zp ZP_BYTE:147 [ processChars::$30 ] zp ZP_BYTE:148 [ processChars::ychar#0 ] zp ZP_BYTE:149 [ processChars::$39 ] zp ZP_BYTE:150 [ processChars::$33 ] zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] zp ZP_WORD:139 [ processChars::$15 ] zp ZP_WORD:142 [ processChars::$25 ] zp ZP_BYTE:137 [ processChars::$17 ] zp ZP_BYTE:141 [ processChars::ypos#0 ] zp ZP_BYTE:132 [ processChars::bitmask#0 ] zp ZP_WORD:133 [ processChars::xpos#0 ] zp ZP_WORD:130 [ processChars::processing#0 ] +Limited combination testing to 100 combinations of 1073741824 possible. +Uplifting [initSquareTables] best 270686 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:119 [ initSquareTables::$16 ] zp ZP_BYTE:124 [ initSquareTables::$17 ] zp ZP_WORD:117 [ initSquareTables::$6 ] zp ZP_WORD:122 [ initSquareTables::$14 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [main] best 271469 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] zp ZP_WORD:53 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:46 [ main::$16 ] zp ZP_BYTE:51 [ main::center_x#0 ] zp ZP_BYTE:52 [ main::center_y#0 ] +Uplifting [main] best 270506 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] zp ZP_WORD:50 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:43 [ main::$16 ] zp ZP_BYTE:48 [ main::center_x#0 ] zp ZP_BYTE:49 [ main::center_y#0 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [irqTop] best 271289 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -Uplifting [initSprites] best 271169 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -Uplifting [irqBottom] best 271079 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -Uplifting [ProcessingChar] best 271079 combination -Uplifting [ProcessingSprite] best 271079 combination -Uplifting [setupRasterIrq] best 271079 combination -Uplifting [] best 271079 combination +Uplifting [initSprites] best 270386 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [ProcessingChar] best 270386 combination +Uplifting [ProcessingSprite] best 270386 combination +Uplifting [setupRasterIrq] best 270386 combination +Uplifting [irqTop] best 270386 combination +Uplifting [irqBottom] best 270386 combination +Uplifting [] best 270386 combination Attempting to uplift remaining variables inzp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -Uplifting [getCharToProcess] best 271079 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 270386 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Uplifting [startProcessing] best 271079 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ startProcessing::$29 ] -Uplifting [startProcessing] best 267079 combination reg byte a [ startProcessing::$29 ] +Uplifting [startProcessing] best 270386 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ startProcessing::$29 ] +Uplifting [startProcessing] best 266386 combination reg byte a [ startProcessing::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] -Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 266386 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:106 [ getCharToProcess::$13 ] -Uplifting [getCharToProcess] best 263079 combination reg byte x [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 266386 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:103 [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 262386 combination reg byte x [ getCharToProcess::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 263079 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 262386 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Uplifting [startProcessing] best 262179 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 261486 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] -Uplifting [startProcessing] best 261279 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Uplifting [processChars] best 261279 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [startProcessing] best 260586 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [processChars] best 260586 combination zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Uplifting [initSquareTables] best 261279 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 260586 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Uplifting [initSquareTables] best 261279 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:122 [ initSquareTables::$16 ] -Uplifting [initSquareTables] best 261239 combination reg byte a [ initSquareTables::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:127 [ initSquareTables::$17 ] -Uplifting [initSquareTables] best 261199 combination reg byte a [ initSquareTables::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ processChars::$64 ] -Uplifting [processChars] best 261139 combination reg byte a [ processChars::$64 ] -Attempting to uplift remaining variables inzp ZP_BYTE:130 [ processChars::$65 ] -Uplifting [processChars] best 261079 combination reg byte a [ processChars::$65 ] -Attempting to uplift remaining variables inzp ZP_BYTE:131 [ processChars::$66 ] -Uplifting [processChars] best 261019 combination reg byte a [ processChars::$66 ] -Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::$36 ] -Uplifting [processChars] best 260959 combination reg byte a [ processChars::$36 ] -Attempting to uplift remaining variables inzp ZP_BYTE:138 [ processChars::$12 ] -Uplifting [processChars] best 260899 combination reg byte a [ processChars::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:139 [ processChars::$13 ] -Uplifting [processChars] best 260839 combination reg byte a [ processChars::$13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::$15 ] -Uplifting [processChars] best 260779 combination reg byte a [ processChars::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$27 ] -Uplifting [processChars] best 260739 combination reg byte a [ processChars::$27 ] -Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::xchar#0 ] -Uplifting [processChars] best 260679 combination reg byte a [ processChars::xchar#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:149 [ processChars::$37 ] -Uplifting [processChars] best 260639 combination reg byte a [ processChars::$37 ] -Attempting to uplift remaining variables inzp ZP_BYTE:150 [ processChars::$31 ] -Uplifting [processChars] best 260599 combination reg byte a [ processChars::$31 ] -Attempting to uplift remaining variables inzp ZP_BYTE:151 [ processChars::ychar#0 ] -Uplifting [processChars] best 260539 combination reg byte a [ processChars::ychar#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:152 [ processChars::$38 ] -Uplifting [processChars] best 260499 combination reg byte a [ processChars::$38 ] -Attempting to uplift remaining variables inzp ZP_BYTE:154 [ processChars::$34 ] -Uplifting [processChars] best 260439 combination reg byte a [ processChars::$34 ] +Uplifting [initSquareTables] best 260586 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ initSquareTables::$16 ] +Uplifting [initSquareTables] best 260546 combination reg byte a [ initSquareTables::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ initSquareTables::$17 ] +Uplifting [initSquareTables] best 260506 combination reg byte a [ initSquareTables::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::$11 ] +Uplifting [processChars] best 260446 combination reg byte a [ processChars::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:136 [ processChars::$12 ] +Uplifting [processChars] best 260386 combination reg byte a [ processChars::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:138 [ processChars::$14 ] +Uplifting [processChars] best 260326 combination reg byte a [ processChars::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::$26 ] +Uplifting [processChars] best 260286 combination reg byte a [ processChars::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:145 [ processChars::xchar#0 ] +Uplifting [processChars] best 260226 combination reg byte a [ processChars::xchar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:146 [ processChars::$38 ] +Uplifting [processChars] best 260186 combination reg byte a [ processChars::$38 ] +Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$30 ] +Uplifting [processChars] best 260146 combination reg byte a [ processChars::$30 ] +Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::ychar#0 ] +Uplifting [processChars] best 260086 combination reg byte a [ processChars::ychar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:149 [ processChars::$39 ] +Uplifting [processChars] best 260046 combination reg byte a [ processChars::$39 ] +Attempting to uplift remaining variables inzp ZP_BYTE:150 [ processChars::$33 ] +Uplifting [processChars] best 259986 combination reg byte a [ processChars::$33 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Uplifting [main] best 260439 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Uplifting [processChars] best 260439 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ main::$16 ] -Uplifting [main] best 260309 combination reg byte x [ main::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 260249 combination reg byte x [ getCharToProcess::return_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 260189 combination reg byte y [ getCharToProcess::return_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::$18 ] -Uplifting [processChars] best 260119 combination reg byte x [ processChars::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_x#0 ] -Uplifting [main] best 260059 combination reg byte x [ main::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ main::center_y#0 ] -Uplifting [main] best 259999 combination reg byte y [ main::center_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:102 [ startProcessing::$47 ] -Uplifting [startProcessing] best 259993 combination reg byte a [ startProcessing::$47 ] -Attempting to uplift remaining variables inzp ZP_BYTE:103 [ startProcessing::$48 ] -Uplifting [startProcessing] best 259987 combination reg byte a [ startProcessing::$48 ] -Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$49 ] -Uplifting [startProcessing] best 259981 combination reg byte a [ startProcessing::$49 ] -Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$1 ] -Uplifting [processChars] best 259975 combination reg byte x [ processChars::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::ypos#0 ] -Uplifting [processChars] best 259975 combination zp ZP_BYTE:144 [ processChars::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::bitmask#0 ] -Uplifting [processChars] best 259975 combination zp ZP_BYTE:135 [ processChars::bitmask#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$30 ] -Uplifting [startProcessing] best 259953 combination reg byte x [ startProcessing::$30 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 259947 combination reg byte a [ startProcessing::ch#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$21 ] -Uplifting [startProcessing] best 259941 combination reg byte a [ startProcessing::$21 ] -Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:80 [ startProcessing::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:75 [ startProcessing::$5 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:118 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:123 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 ] ] with [ zp ZP_WORD:65 [ startProcessing::$45 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ startProcessing::$1 ] ] with [ zp ZP_WORD:69 [ startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 ] ] with [ zp ZP_WORD:84 [ startProcessing::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 ] ] with [ zp ZP_WORD:92 [ startProcessing::$15 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:112 [ getCharToProcess::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:114 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:116 [ getCharToProcess::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:136 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:145 [ processChars::$26 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:78 [ startProcessing::$7 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:73 [ startProcessing::$4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:53 [ main::center_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:120 [ initSquareTables::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:125 [ initSquareTables::$14 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 startProcessing::$45 ] ] with [ zp ZP_WORD:67 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:114 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +Uplifting [main] best 259986 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Uplifting [processChars] best 259986 combination zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ main::$16 ] +Uplifting [main] best 259856 combination reg byte x [ main::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:44 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 259796 combination reg byte x [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 259736 combination reg byte y [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:137 [ processChars::$17 ] +Uplifting [processChars] best 259666 combination reg byte x [ processChars::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ main::center_x#0 ] +Uplifting [main] best 259606 combination reg byte x [ main::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ main::center_y#0 ] +Uplifting [main] best 259546 combination reg byte y [ main::center_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$47 ] +Uplifting [startProcessing] best 259540 combination reg byte a [ startProcessing::$47 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::$48 ] +Uplifting [startProcessing] best 259534 combination reg byte a [ startProcessing::$48 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$49 ] +Uplifting [startProcessing] best 259528 combination reg byte a [ startProcessing::$49 ] +Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::ypos#0 ] +Uplifting [processChars] best 259528 combination zp ZP_BYTE:141 [ processChars::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::bitmask#0 ] +Uplifting [processChars] best 259528 combination zp ZP_BYTE:132 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ startProcessing::$30 ] +Uplifting [startProcessing] best 259506 combination reg byte x [ startProcessing::$30 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 259500 combination reg byte a [ startProcessing::ch#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:96 [ startProcessing::$21 ] +Uplifting [startProcessing] best 259494 combination reg byte a [ startProcessing::$21 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 259494 combination zp ZP_BYTE:52 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] +Uplifting [startProcessing] best 259494 combination zp ZP_BYTE:95 [ startProcessing::spritePtr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 259494 combination zp ZP_BYTE:53 [ startProcessing::center_y#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:77 [ startProcessing::$8 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:72 [ startProcessing::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:46 [ getCharToProcess::return_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:115 [ mul8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:120 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:58 [ startProcessing::$0 ] ] with [ zp ZP_WORD:62 [ startProcessing::$45 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ startProcessing::$1 ] ] with [ zp ZP_WORD:66 [ startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:79 [ startProcessing::$10 ] ] with [ zp ZP_WORD:81 [ startProcessing::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:83 [ startProcessing::$12 ] ] with [ zp ZP_WORD:85 [ startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:87 [ startProcessing::$14 ] ] with [ zp ZP_WORD:89 [ startProcessing::$15 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:91 [ startProcessing::$16 ] ] with [ zp ZP_WORD:93 [ startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:105 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:109 [ getCharToProcess::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:111 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:113 [ getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:133 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:142 [ processChars::$25 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:75 [ startProcessing::$7 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:70 [ startProcessing::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:50 [ main::center_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:117 [ initSquareTables::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:122 [ initSquareTables::$14 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:58 [ startProcessing::$0 startProcessing::$45 ] ] with [ zp ZP_WORD:64 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:79 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:83 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:87 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:91 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:105 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:111 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] @@ -6725,24 +6706,24 @@ Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTa Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ] Allocated (was zp ZP_WORD:34) zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] Allocated (was zp ZP_WORD:36) zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] -Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] -Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -Allocated (was zp ZP_WORD:61) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] -Allocated (was zp ZP_WORD:63) zp ZP_WORD:36 [ startProcessing::$44 ] -Allocated (was zp ZP_WORD:71) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] -Allocated (was zp ZP_WORD:82) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -Allocated (was zp ZP_WORD:90) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -Allocated (was zp ZP_WORD:100) zp ZP_WORD:45 [ startProcessing::$22 ] -Allocated (was zp ZP_WORD:108) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -Allocated (was zp ZP_WORD:110) zp ZP_WORD:49 [ getCharToProcess::$15 ] -Allocated (was zp ZP_WORD:133) zp ZP_WORD:51 [ processChars::processing#0 ] -Allocated (was zp ZP_BYTE:135) zp ZP_BYTE:53 [ processChars::bitmask#0 ] -Allocated (was zp ZP_WORD:136) zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] -Allocated (was zp ZP_WORD:142) zp ZP_WORD:56 [ processChars::$16 ] -Allocated (was zp ZP_BYTE:144) zp ZP_BYTE:58 [ processChars::ypos#0 ] +Allocated (was zp ZP_BYTE:38) zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Allocated (was zp ZP_BYTE:52) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +Allocated (was zp ZP_WORD:58) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] +Allocated (was zp ZP_WORD:60) zp ZP_WORD:36 [ startProcessing::$44 ] +Allocated (was zp ZP_WORD:68) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] +Allocated (was zp ZP_WORD:79) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] +Allocated (was zp ZP_WORD:87) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] +Allocated (was zp ZP_BYTE:95) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] +Allocated (was zp ZP_WORD:97) zp ZP_WORD:45 [ startProcessing::$22 ] +Allocated (was zp ZP_WORD:105) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +Allocated (was zp ZP_WORD:107) zp ZP_WORD:49 [ getCharToProcess::$15 ] +Allocated (was zp ZP_WORD:130) zp ZP_WORD:51 [ processChars::processing#0 ] +Allocated (was zp ZP_BYTE:132) zp ZP_BYTE:53 [ processChars::bitmask#0 ] +Allocated (was zp ZP_WORD:133) zp ZP_WORD:54 [ processChars::xpos#0 processChars::$25 ] +Allocated (was zp ZP_WORD:139) zp ZP_WORD:56 [ processChars::$15 ] +Allocated (was zp ZP_BYTE:141) zp ZP_BYTE:58 [ processChars::ypos#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -7982,7 +7963,7 @@ mul8u: { jmp b1 } //SEG338 irqBottom -// Raster Interrupt at the middle of the screen +// Raster Interrupt at the bottom of the screen irqBottom: { //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 @@ -7990,49 +7971,33 @@ irqBottom: { sty regy+1 //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 - ldx #0 jmp b1 - //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - b1_from_b1: - //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - jmp b1 - //SEG344 irqBottom::@1 + //SEG341 irqBottom::@1 b1: - //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 - bne b1_from_b1 - //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] - b2_from_b1: - jmp b2 - //SEG348 irqBottom::@2 - b2: - //SEG349 [203] call processChars - //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] - processChars_from_b2: + //SEG342 [200] call processChars + //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] + processChars_from_b1: jsr processChars - jmp b3 - //SEG351 irqBottom::@3 - b3: - //SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + jmp b2 + //SEG344 irqBottom::@2 + b2: + //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG355 irqBottom::@return + //SEG348 irqBottom::@return breturn: - //SEG356 [207] return - exit interrupt(HARDWARE_ALL) + //SEG349 [204] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8041,53 +8006,53 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG350 processChars // Process any chars in the PROCESSING array processChars: { - .label _16 = $38 - .label _26 = $36 + .label _15 = $38 + .label _25 = $36 .label processing = $33 .label bitmask = $35 .label i = $1e .label xpos = $36 .label ypos = $3a .label numActive = $1f - //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG351 [206] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG352 [206] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG354 [206] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG355 [206] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG356 [206] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG364 processChars::@1 + //SEG357 processChars::@1 b1: - //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG360 [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG361 [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa + //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG363 [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -8100,23 +8065,23 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //SEG364 [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE beq b2_from_b1 jmp b10 - //SEG372 processChars::@10 + //SEG365 processChars::@10 b10: - //SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + //SEG366 [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 jmp b11 - //SEG374 processChars::@11 + //SEG367 processChars::@11 b11: - //SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -8128,12 +8093,12 @@ processChars: { txa !: sta $ffff - //SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //SEG370 [217] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -8143,15 +8108,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y jmp b3 - //SEG379 processChars::@3 + //SEG372 processChars::@3 b3: - //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -8166,54 +8131,54 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 bne b4 jmp b8 - //SEG383 processChars::@8 + //SEG376 processChars::@8 b8: - //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b5 - //SEG386 processChars::@5 + //SEG379 processChars::@5 b5: - //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG383 [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _16 + sta _15 iny lda (processing),y - sta _16+1 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 - lda _16 + sta _15+1 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + lda _15 sta ypos - //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -8225,10 +8190,10 @@ processChars: { cmp #(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + jmp b14 + //SEG387 processChars::@14 + b14: + //SEG388 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -8239,10 +8204,10 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b14 - //SEG396 processChars::@14 - b14: - //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + jmp b13 + //SEG389 processChars::@13 + b13: + //SEG390 [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -8254,10 +8219,10 @@ processChars: { cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + jmp b12 + //SEG391 processChars::@12 + b12: + //SEG392 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -8270,23 +8235,23 @@ processChars: { bcc b6 !: jmp b9 - //SEG400 processChars::@9 + //SEG393 processChars::@9 b9: - //SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 - lsr _26+1 - ror _26 - lsr _26+1 - ror _26 - lsr _26+1 - ror _26 - //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1 - lda _26 - //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + lsr _25+1 + ror _25 + lsr _25+1 + ror _25 + lsr _25+1 + ror _25 + //SEG395 [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 -- vbuaa=_byte_vwuz1 + lda _25 + //SEG396 [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 - //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax clc @@ -8297,7 +8262,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + //SEG399 [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -8311,17 +8276,17 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 - //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG403 [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax clc @@ -8332,7 +8297,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -8345,120 +8310,78 @@ processChars: { adc (processing),y sta (processing),y jmp b7 - //SEG412 processChars::@7 + //SEG405 processChars::@7 b7: - //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG407 [246] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG408 [246] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG416 processChars::@2 + //SEG409 processChars::@2 b2: - //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 - jmp b12 - //SEG419 processChars::@12 - b12: - //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 - lax numActive - axs #-['0'] - //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx - stx SCREEN+$3e7 jmp breturn - //SEG422 processChars::@return + //SEG412 processChars::@return breturn: - //SEG423 [254] return + //SEG413 [249] return rts - //SEG424 processChars::@6 + //SEG414 processChars::@6 b6: - //SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE jmp b7 - //SEG428 processChars::@4 + //SEG418 processChars::@4 b4: - //SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora bitmask sta SPRITES_XMSB jmp b5 } -//SEG430 irqTop +//SEG420 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG431 entry interrupt(HARDWARE_ALL) + //SEG421 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - b1_from_irqTop: - //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 - ldx #0 jmp b1 - //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - b1_from_b1: - //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - jmp b1 - //SEG436 irqTop::@1 + //SEG422 irqTop::@1 b1: - //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 - bne b1_from_b1 - //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] - b2_from_b1: - //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 - ldx #0 - jmp b2 - //*BORDERCOL = WHITE; - //*BGCOL = WHITE; - //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] - b2_from_b2: - //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy - jmp b2 - //SEG443 irqTop::@2 - b2: - //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx - inx - //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 - bne b2_from_b2 - jmp b3 - //SEG446 irqTop::@3 - b3: - //SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG450 irqTop::@return + //SEG426 irqTop::@return breturn: - //SEG451 [269] return - exit interrupt(HARDWARE_ALL) + //SEG427 [258] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8537,7 +8460,6 @@ Removing instruction jmp b4 Removing instruction jmp b3 Removing instruction jmp b1 Removing instruction jmp b2 -Removing instruction jmp b3 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b10 @@ -8545,17 +8467,14 @@ Removing instruction jmp b11 Removing instruction jmp b3 Removing instruction jmp b8 Removing instruction jmp b5 -Removing instruction jmp b15 Removing instruction jmp b14 Removing instruction jmp b13 +Removing instruction jmp b12 Removing instruction jmp b9 Removing instruction jmp b7 Removing instruction jmp b2 -Removing instruction jmp b12 Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b2 -Removing instruction jmp b3 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 @@ -8595,11 +8514,8 @@ Replacing label b5_from_b10 with b5 Replacing label b8_from_b6 with b8 Replacing label b4_from_b2 with b4 Replacing label b3_from_b2 with b3 -Replacing label b1_from_b1 with b1 Replacing label b2_from_b1 with b2 Replacing label b1_from_b2 with b1 -Replacing label b1_from_b1 with b1 -Replacing label b2_from_b2 with b2 Removing instruction b1: Removing instruction b2_from_b1: Removing instruction b2: @@ -8631,15 +8547,12 @@ Removing instruction b8_from_b6: Removing instruction b8_from_b7: Removing instruction b3_from_b2: Removing instruction b3_from_b4: -Removing instruction b1_from_b1: -Removing instruction b2_from_b1: -Removing instruction processChars_from_b2: +Removing instruction b1_from_irqBottom: +Removing instruction processChars_from_b1: Removing instruction breturn: Removing instruction b1_from_b2: Removing instruction b2_from_b1: Removing instruction b2_from_b7: -Removing instruction b1_from_b1: -Removing instruction b2_from_b2: Removing instruction breturn: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: @@ -8687,22 +8600,18 @@ Removing instruction b1_from_mul8u: Removing instruction breturn: Removing instruction b4: Removing instruction b1_from_b3: -Removing instruction b1_from_irqBottom: +Removing instruction b1: Removing instruction b2: -Removing instruction b3: Removing instruction b1_from_processChars: Removing instruction b10: Removing instruction b11: Removing instruction b8: -Removing instruction b15: Removing instruction b14: Removing instruction b13: -Removing instruction b9: Removing instruction b12: +Removing instruction b9: Removing instruction breturn: -Removing instruction b1_from_irqTop: -Removing instruction b2_from_b1: -Removing instruction b3: +Removing instruction b1: Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main @@ -8718,9 +8627,6 @@ Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b5 Removing instruction jmp b1 -Removing instruction jmp b1 -Removing instruction jmp b1 -Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction lda x with TYA Removing instruction lda #$28 @@ -8731,28 +8637,30 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [425] bne b2 to beq -Fixing long branch [1007] bne b1 to beq +Fixing long branch [1002] bne b1 to beq Fixing long branch [212] bne b3 to beq Fixing long branch [218] beq b8 to bne Fixing long branch [473] beq b11 to bne Fixing long branch [494] beq b12 to bne Fixing long branch [498] bcc b12 to bcs -Fixing long branch [829] beq b2 to bne -Fixing long branch [881] bne b4 to beq -Fixing long branch [915] bcc b6 to bcs -Fixing long branch [922] bcc b6 to bcs -Fixing long branch [929] bcc b6 to bcs -Fixing long branch [936] bcc b6 to bcs -Fixing long branch [944] bcc b6 to bcs -Fixing long branch [951] bcc b6 to bcs -Fixing long branch [959] bcc b6 to bcs -Fixing long branch [966] bcc b6 to bcs +Fixing long branch [824] beq b2 to bne +Fixing long branch [876] bne b4 to beq +Fixing long branch [910] bcc b6 to bcs +Fixing long branch [917] bcc b6 to bcs +Fixing long branch [924] bcc b6 to bcs +Fixing long branch [931] bcc b6 to bcs +Fixing long branch [939] bcc b6 to bcs +Fixing long branch [946] bcc b6 to bcs +Fixing long branch [954] bcc b6 to bcs FINAL SYMBOL TABLE (label) @1 (label) @2 (label) @begin (label) @end +(byte*) BGCOL +(byte) BLUE +(byte*) BORDERCOL (byte) BORDER_XPOS_LEFT (const byte) BORDER_XPOS_LEFT#0 BORDER_XPOS_LEFT = (byte) $18 (word) BORDER_XPOS_RIGHT @@ -8769,6 +8677,7 @@ FINAL SYMBOL TABLE (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f (byte*) COLS (const byte*) COLS#0 COLS = (byte*) 55296 +(bool) DEBUG (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534 (byte*) IRQ_ENABLE @@ -8859,6 +8768,7 @@ FINAL SYMBOL TABLE (const word*) VXSIN#0 VXSIN = (word*) 8704 (word*) VYSIN (const word*) VYSIN#0 VYSIN = (word*) 8832 +(byte) WHITE (word) XPOS_LEFTMOST (const word) XPOS_LEFTMOST#0 XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8<<(byte) 4 (word) XPOS_RIGHTMOST @@ -8969,22 +8879,13 @@ FINAL SYMBOL TABLE interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 -(label) irqBottom::@3 (label) irqBottom::@return (byte) irqBottom::i -(byte) irqBottom::i#1 reg byte x 16.5 -(byte) irqBottom::i#2 reg byte x 22.0 interrupt(HARDWARE_ALL)(void()) irqTop() (label) irqTop::@1 -(label) irqTop::@2 -(label) irqTop::@3 (label) irqTop::@return (byte) irqTop::i -(byte) irqTop::i#1 reg byte x 16.5 -(byte) irqTop::i#2 reg byte x 22.0 (byte) irqTop::i1 -(byte) irqTop::i1#1 reg byte x 16.5 -(byte) irqTop::i1#2 reg byte x 22.0 (void()) main() (byte~) main::$16 reg byte x 12.375 (byte) main::$25 reg byte a 22.0 @@ -9044,29 +8945,27 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$1 reg byte x 4.0 +(byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$12 reg byte a 22.0 -(byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$15 reg byte a 22.0 -(word~) processChars::$16 $16 zp ZP_WORD:56 11.0 -(byte~) processChars::$18 reg byte x 6.6000000000000005 -(word~) processChars::$26 $26 zp ZP_WORD:54 11.0 -(byte~) processChars::$27 reg byte a 22.0 -(byte~) processChars::$31 reg byte a 22.0 -(byte~) processChars::$34 reg byte a 22.0 -(byte~) processChars::$36 reg byte a 22.0 +(byte~) processChars::$14 reg byte a 22.0 +(word~) processChars::$15 $15 zp ZP_WORD:56 11.0 +(byte~) processChars::$17 reg byte x 6.6000000000000005 +(word~) processChars::$25 $25 zp ZP_WORD:54 11.0 +(byte~) processChars::$26 reg byte a 22.0 +(byte~) processChars::$30 reg byte a 22.0 +(byte~) processChars::$33 reg byte a 22.0 (byte~) processChars::$37 reg byte a 22.0 (byte~) processChars::$38 reg byte a 22.0 -(byte) processChars::$64 reg byte a 22.0 +(byte~) processChars::$39 reg byte a 22.0 (byte) processChars::$65 reg byte a 22.0 (byte) processChars::$66 reg byte a 22.0 +(byte) processChars::$67 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 (label) processChars::@12 (label) processChars::@13 (label) processChars::@14 -(label) processChars::@15 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 @@ -9084,7 +8983,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::numActive (byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 (byte) processChars::numActive#10 numActive zp ZP_BYTE:31 0.7674418604651163 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.0 (struct ProcessingSprite*) processChars::processing (struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.3235294117647059 (byte) processChars::xchar @@ -9201,11 +9100,8 @@ reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -reg byte x [ irqBottom::i#2 irqBottom::i#1 ] zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -reg byte x [ irqTop::i#2 irqTop::i#1 ] -reg byte x [ irqTop::i1#2 irqTop::i1#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] @@ -9240,31 +9136,30 @@ zp ZP_WORD:49 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$64 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] -reg byte a [ processChars::$36 ] +reg byte a [ processChars::$67 ] +reg byte a [ processChars::$37 ] zp ZP_WORD:51 [ processChars::processing#0 ] zp ZP_BYTE:53 [ processChars::bitmask#0 ] -zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] +zp ZP_WORD:54 [ processChars::xpos#0 processChars::$25 ] +reg byte a [ processChars::$11 ] reg byte a [ processChars::$12 ] -reg byte a [ processChars::$13 ] -reg byte x [ processChars::$18 ] -reg byte a [ processChars::$15 ] -zp ZP_WORD:56 [ processChars::$16 ] +reg byte x [ processChars::$17 ] +reg byte a [ processChars::$14 ] +zp ZP_WORD:56 [ processChars::$15 ] zp ZP_BYTE:58 [ processChars::ypos#0 ] -reg byte a [ processChars::$27 ] +reg byte a [ processChars::$26 ] reg byte a [ processChars::xchar#0 ] -reg byte a [ processChars::$37 ] -reg byte a [ processChars::$31 ] -reg byte a [ processChars::ychar#0 ] reg byte a [ processChars::$38 ] -reg byte x [ processChars::$1 ] -reg byte a [ processChars::$34 ] +reg byte a [ processChars::$30 ] +reg byte a [ processChars::ychar#0 ] +reg byte a [ processChars::$39 ] +reg byte a [ processChars::$33 ] FINAL ASSEMBLER -Score: 243580 +Score: 243286 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in letters @@ -10362,45 +10257,33 @@ mul8u: { jmp b1 } //SEG338 irqBottom -// Raster Interrupt at the middle of the screen +// Raster Interrupt at the bottom of the screen irqBottom: { //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] - //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - //SEG344 irqBottom::@1 - b1: - //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 - bne b1 - //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] - //SEG348 irqBottom::@2 - //SEG349 [203] call processChars - //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG341 irqBottom::@1 + //SEG342 [200] call processChars + //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] jsr processChars - //SEG351 irqBottom::@3 - //SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG344 irqBottom::@2 + //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG355 irqBottom::@return - //SEG356 [207] return - exit interrupt(HARDWARE_ALL) + //SEG348 irqBottom::@return + //SEG349 [204] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -10409,48 +10292,48 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG350 processChars // Process any chars in the PROCESSING array processChars: { - .label _16 = $38 - .label _26 = $36 + .label _15 = $38 + .label _25 = $36 .label processing = $33 .label bitmask = $35 .label i = $1e .label xpos = $36 .label ypos = $3a .label numActive = $1f - //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] - //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG351 [206] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG352 [206] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 sta i - //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] - //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy - //SEG364 processChars::@1 + //SEG354 [206] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG355 [206] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG356 [206] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG357 processChars::@1 b1: - //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG360 [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG361 [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa + //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG363 [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -10463,20 +10346,20 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //SEG364 [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE bne !b2+ jmp b2 !b2: - //SEG372 processChars::@10 - //SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + //SEG365 processChars::@10 + //SEG366 [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 lda (processing),y cmp #STATUS_NEW bne b3 - //SEG374 processChars::@11 - //SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG367 processChars::@11 + //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -10488,12 +10371,12 @@ processChars: { txa !: sta $ffff - //SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //SEG370 [217] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -10503,14 +10386,14 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - //SEG379 processChars::@3 + //SEG372 processChars::@3 b3: - //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -10525,52 +10408,52 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 beq !b4+ jmp b4 !b4: - //SEG383 processChars::@8 - //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG376 processChars::@8 + //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG386 processChars::@5 + //SEG379 processChars::@5 b5: - //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG383 [227] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _16 + sta _15 iny lda (processing),y - sta _16+1 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - lsr _16+1 - ror _16 - //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 - lda _16 + sta _15+1 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + lsr _15+1 + ror _15 + //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + lda _15 sta ypos - //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta SPRITES_YPOS,x - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -10586,8 +10469,8 @@ processChars: { jmp b6 !b6: !: - //SEG394 processChars::@15 - //SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + //SEG387 processChars::@14 + //SEG388 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -10602,8 +10485,8 @@ processChars: { jmp b6 !b6: !: - //SEG396 processChars::@14 - //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG389 processChars::@13 + //SEG390 [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -10619,8 +10502,8 @@ processChars: { jmp b6 !b6: !: - //SEG398 processChars::@13 - //SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + //SEG391 processChars::@12 + //SEG392 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -10632,26 +10515,24 @@ processChars: { dey lda #> (byte) 3 -- vwuz1=vwuz1_ror_3 - lsr _26+1 - ror _26 - lsr _26+1 - ror _26 - lsr _26+1 - ror _26 - //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1 - lda _26 - //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG393 processChars::@9 + //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + lsr _25+1 + ror _25 + lsr _25+1 + ror _25 + lsr _25+1 + ror _25 + //SEG395 [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 -- vbuaa=_byte_vwuz1 + lda _25 + //SEG396 [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 - //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax clc @@ -10662,7 +10543,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + //SEG399 [239] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -10676,17 +10557,17 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 - //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG403 [243] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax clc @@ -10697,7 +10578,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [244] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -10709,103 +10590,71 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - //SEG412 processChars::@7 + //SEG405 processChars::@7 b7: - //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy - //SEG416 processChars::@2 + //SEG407 [246] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG408 [246] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG409 processChars::@2 b2: - //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i beq !b1+ jmp b1 !b1: - //SEG419 processChars::@12 - //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 - lax numActive - axs #-['0'] - //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx - stx SCREEN+$3e7 - //SEG422 processChars::@return - //SEG423 [254] return + //SEG412 processChars::@return + //SEG413 [249] return rts - //SEG424 processChars::@6 + //SEG414 processChars::@6 b6: - //SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE jmp b7 - //SEG428 processChars::@4 + //SEG418 processChars::@4 b4: - //SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora bitmask sta SPRITES_XMSB jmp b5 } -//SEG430 irqTop +//SEG420 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG431 entry interrupt(HARDWARE_ALL) + //SEG421 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - //SEG436 irqTop::@1 - b1: - //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 - bne b1 - //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] - //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 - ldx #0 - //*BORDERCOL = WHITE; - //*BGCOL = WHITE; - //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] - //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy - //SEG443 irqTop::@2 - b2: - //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx - inx - //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 - bne b2 - //SEG446 irqTop::@3 - //SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG422 irqTop::@1 + //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG450 irqTop::@return - //SEG451 [269] return - exit interrupt(HARDWARE_ALL) + //SEG426 irqTop::@return + //SEG427 [258] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: diff --git a/src/test/ref/complex/blackhole/blackhole.sym b/src/test/ref/complex/clearscreen/clearscreen.sym similarity index 93% rename from src/test/ref/complex/blackhole/blackhole.sym rename to src/test/ref/complex/clearscreen/clearscreen.sym index 10fcb7fb4..8f90b7418 100644 --- a/src/test/ref/complex/blackhole/blackhole.sym +++ b/src/test/ref/complex/clearscreen/clearscreen.sym @@ -2,6 +2,9 @@ (label) @2 (label) @begin (label) @end +(byte*) BGCOL +(byte) BLUE +(byte*) BORDERCOL (byte) BORDER_XPOS_LEFT (const byte) BORDER_XPOS_LEFT#0 BORDER_XPOS_LEFT = (byte) $18 (word) BORDER_XPOS_RIGHT @@ -18,6 +21,7 @@ (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f (byte*) COLS (const byte*) COLS#0 COLS = (byte*) 55296 +(bool) DEBUG (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534 (byte*) IRQ_ENABLE @@ -108,6 +112,7 @@ (const word*) VXSIN#0 VXSIN = (word*) 8704 (word*) VYSIN (const word*) VYSIN#0 VYSIN = (word*) 8832 +(byte) WHITE (word) XPOS_LEFTMOST (const word) XPOS_LEFTMOST#0 XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8<<(byte) 4 (word) XPOS_RIGHTMOST @@ -218,22 +223,13 @@ interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 -(label) irqBottom::@3 (label) irqBottom::@return (byte) irqBottom::i -(byte) irqBottom::i#1 reg byte x 16.5 -(byte) irqBottom::i#2 reg byte x 22.0 interrupt(HARDWARE_ALL)(void()) irqTop() (label) irqTop::@1 -(label) irqTop::@2 -(label) irqTop::@3 (label) irqTop::@return (byte) irqTop::i -(byte) irqTop::i#1 reg byte x 16.5 -(byte) irqTop::i#2 reg byte x 22.0 (byte) irqTop::i1 -(byte) irqTop::i1#1 reg byte x 16.5 -(byte) irqTop::i1#2 reg byte x 22.0 (void()) main() (byte~) main::$16 reg byte x 12.375 (byte) main::$25 reg byte a 22.0 @@ -293,29 +289,27 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$1 reg byte x 4.0 +(byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$12 reg byte a 22.0 -(byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$15 reg byte a 22.0 -(word~) processChars::$16 $16 zp ZP_WORD:56 11.0 -(byte~) processChars::$18 reg byte x 6.6000000000000005 -(word~) processChars::$26 $26 zp ZP_WORD:54 11.0 -(byte~) processChars::$27 reg byte a 22.0 -(byte~) processChars::$31 reg byte a 22.0 -(byte~) processChars::$34 reg byte a 22.0 -(byte~) processChars::$36 reg byte a 22.0 +(byte~) processChars::$14 reg byte a 22.0 +(word~) processChars::$15 $15 zp ZP_WORD:56 11.0 +(byte~) processChars::$17 reg byte x 6.6000000000000005 +(word~) processChars::$25 $25 zp ZP_WORD:54 11.0 +(byte~) processChars::$26 reg byte a 22.0 +(byte~) processChars::$30 reg byte a 22.0 +(byte~) processChars::$33 reg byte a 22.0 (byte~) processChars::$37 reg byte a 22.0 (byte~) processChars::$38 reg byte a 22.0 -(byte) processChars::$64 reg byte a 22.0 +(byte~) processChars::$39 reg byte a 22.0 (byte) processChars::$65 reg byte a 22.0 (byte) processChars::$66 reg byte a 22.0 +(byte) processChars::$67 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 (label) processChars::@12 (label) processChars::@13 (label) processChars::@14 -(label) processChars::@15 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 @@ -333,7 +327,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::numActive (byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 (byte) processChars::numActive#10 numActive zp ZP_BYTE:31 0.7674418604651163 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.0 (struct ProcessingSprite*) processChars::processing (struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.3235294117647059 (byte) processChars::xchar @@ -450,11 +444,8 @@ reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -reg byte x [ irqBottom::i#2 irqBottom::i#1 ] zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -reg byte x [ irqTop::i#2 irqTop::i#1 ] -reg byte x [ irqTop::i1#2 irqTop::i1#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] @@ -489,24 +480,23 @@ zp ZP_WORD:49 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$64 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] -reg byte a [ processChars::$36 ] +reg byte a [ processChars::$67 ] +reg byte a [ processChars::$37 ] zp ZP_WORD:51 [ processChars::processing#0 ] zp ZP_BYTE:53 [ processChars::bitmask#0 ] -zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] +zp ZP_WORD:54 [ processChars::xpos#0 processChars::$25 ] +reg byte a [ processChars::$11 ] reg byte a [ processChars::$12 ] -reg byte a [ processChars::$13 ] -reg byte x [ processChars::$18 ] -reg byte a [ processChars::$15 ] -zp ZP_WORD:56 [ processChars::$16 ] +reg byte x [ processChars::$17 ] +reg byte a [ processChars::$14 ] +zp ZP_WORD:56 [ processChars::$15 ] zp ZP_BYTE:58 [ processChars::ypos#0 ] -reg byte a [ processChars::$27 ] +reg byte a [ processChars::$26 ] reg byte a [ processChars::xchar#0 ] -reg byte a [ processChars::$37 ] -reg byte a [ processChars::$31 ] -reg byte a [ processChars::ychar#0 ] reg byte a [ processChars::$38 ] -reg byte x [ processChars::$1 ] -reg byte a [ processChars::$34 ] +reg byte a [ processChars::$30 ] +reg byte a [ processChars::ychar#0 ] +reg byte a [ processChars::$39 ] +reg byte a [ processChars::$33 ]