diff --git a/src/test/kc/complex/clearscreen/clearscreen.kc b/src/test/kc/complex/clearscreen/clearscreen.kc index d4440897f..7465ad142 100644 --- a/src/test/kc/complex/clearscreen/clearscreen.kc +++ b/src/test/kc/complex/clearscreen/clearscreen.kc @@ -47,6 +47,8 @@ struct ProcessingSprite { byte id; // sprite pointer (0-255) byte ptr; + // sprite color + byte col; // status of the processing (0: free, 1: new, 2: processing) byte status; // Pointer to screen char being processed (used for deletion) @@ -67,7 +69,7 @@ void main() { // Copy screen to screen copy for( byte* src=SCREEN, dst=SCREEN_COPY; src!=SCREEN+1000; src++, dst++) *dst = *src; // Init processing array - for( byte i: 0..NUM_PROCESSING-1 ) PROCESSING[i] = { 0, 0, 0, 0, 0, 0, STATUS_FREE, 0}; + for( byte i: 0..NUM_PROCESSING-1 ) PROCESSING[i] = { 0, 0, 0, 0, 0, 0, 0, STATUS_FREE, 0}; // Init sprites initSprites(); // Set-up raster interrupts @@ -125,7 +127,10 @@ void startProcessing(struct ProcessingChar center) { // Found a free sprite byte spriteIdx = freeIdx; // Copy char into sprite - byte* screenPtr = SCREEN+(word)center.y*40+center.x; + word offset = (word)center.y*40+center.x; + byte* colPtr = COLS+offset; + byte spriteCol = *colPtr; + byte* screenPtr = SCREEN+offset; byte* spriteData = SPRITE_DATA+(word)spriteIdx*64; byte ch = (*screenPtr); byte* chargenData = CHARGEN+(word)ch*8; @@ -142,7 +147,7 @@ void startProcessing(struct ProcessingChar center) { word spriteY = (BORDER_YPOS_TOP + (word)center.y*8) << 4; byte spritePtr = (byte)(SPRITE_DATA/64)+spriteIdx; // Put the sprite into the PROCESSING array - PROCESSING[spriteIdx] = { spriteX, spriteY, (word)(spriteIdx*8), 60, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; + PROCESSING[spriteIdx] = { spriteX, spriteY, (word)(spriteIdx*8), 60, spriteIdx, spritePtr, spriteCol, STATUS_NEW, screenPtr }; } const word XPOS_LEFTMOST = (word)(BORDER_XPOS_LEFT-8)<<4; @@ -173,6 +178,8 @@ void processChars() { *(processing->screenPtr) = ' '; // Enable the sprite *SPRITES_ENABLE |= bitmask; + // Set the sprite color + SPRITES_COLS[processing->id] = processing->col; // Set sprite pointer *(SCREEN+SPRITE_PTRS+processing->id) = processing->ptr; // Set status diff --git a/src/test/ref/complex/clearscreen/clearscreen.asm b/src/test/ref/complex/clearscreen/clearscreen.asm index 8fcd03f48..15a7fe044 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.asm +++ b/src/test/ref/complex/clearscreen/clearscreen.asm @@ -7,8 +7,9 @@ .const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6 .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8 .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_COL = $a + .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -117,9 +118,9 @@ main: { clc adc i asl - asl clc adc i + asl tax lda #0 sta PROCESSING,x @@ -132,6 +133,7 @@ main: { sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x lda #<0 @@ -170,30 +172,32 @@ main: { startProcessing: { .label _0 = $22 .label _1 = $22 - .label _2 = $22 - .label _4 = $a .label _5 = $a - .label _7 = 8 + .label _6 = $a .label _8 = 8 - .label _10 = $28 - .label _11 = $28 - .label _12 = $28 - .label _14 = $2a - .label _15 = $2a - .label _16 = $2a - .label _22 = $2d + .label _9 = 8 + .label _11 = $29 + .label _12 = $29 + .label _13 = $29 + .label _15 = $2b + .label _16 = $2b + .label _17 = $2b + .label _23 = $2e .label center_x = $20 .label center_y = $21 .label i = 7 - .label screenPtr = $26 + .label offset = $22 + .label colPtr = $26 + .label spriteCol = $28 + .label screenPtr = $22 .label spriteData = $a .label chargenData = 8 - .label spriteX = $28 - .label spriteY = $2a - .label spritePtr = $2c + .label spriteX = $29 + .label spriteY = $2b + .label spritePtr = $2d .label freeIdx = 7 - .label _44 = $24 - .label _45 = $22 + .label _47 = $24 + .label _48 = $22 ldx #$ff b1: lda #0 @@ -204,9 +208,9 @@ startProcessing: { clc adc i asl - asl clc adc i + asl tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y @@ -225,55 +229,65 @@ startProcessing: { sta _0+1 lda _0 asl - sta _44 + sta _47 lda _0+1 rol - sta _44+1 - asl _44 - rol _44+1 - lda _45 + sta _47+1 + asl _47 + rol _47+1 + lda _48 clc - adc _44 - sta _45 - lda _45+1 - adc _44+1 - sta _45+1 + adc _47 + sta _48 + lda _48+1 + adc _47+1 + sta _48+1 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - clc - lda _2 - adc #SCREEN - sta _2+1 lda center_x clc - adc _2 + adc offset + sta offset + bcc !+ + inc offset+1 + !: + lda offset + clc + adc #COLS + sta colPtr+1 + ldy #0 + lda (colPtr),y + sta spriteCol + clc + lda screenPtr + adc #SCREEN sta screenPtr+1 lda freeIdx - sta _4 - lda #0 - sta _4+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 + sta _5 + tya + sta _5+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - ldy center_x - lda (_2),y - sta _7 - lda #0 - sta _7+1 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - asl _8 - rol _8+1 + lda (screenPtr),y + sta _8 + tya + sta _8+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 clc lda chargenData adc #=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [118] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [119] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [120] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [121] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [122] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [123] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [117] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) - [117] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) - [117] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) - [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [124] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [124] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [124] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [125] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [126] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [127] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [128] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [129] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [131] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [132] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [133] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [134] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [135] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [130] return + [137] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [144] return + [151] return to:@return initSprites: scope:[initSprites] from main::@3 - [145] phi() + [152] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [146] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [147] *((byte*) initSprites::sp#2) ← (byte) 0 - [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [153] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [154] *((byte*) initSprites::sp#2) ← (byte) 0 + [155] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [150] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [157] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [159] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [160] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [157] return + [164] return to:@return initSquareTables: scope:[initSquareTables] from main - [158] phi() + [165] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [159] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [166] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [167] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [162] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [165] call mul8u - [166] (word) mul8u::return#2 ← (word) mul8u::res#2 + [169] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [170] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [171] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [172] call mul8u + [173] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [177] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [178] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [172] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [179] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [180] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [175] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [178] call mul8u - [179] (word) mul8u::return#3 ← (word) mul8u::res#2 + [182] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [183] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [184] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [185] call mul8u + [186] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [190] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [191] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [185] return + [192] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [194] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [188] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [188] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [195] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [195] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [189] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [189] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [189] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [196] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [196] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [196] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [197] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [191] return + [198] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [199] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [200] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [201] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [195] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [202] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [203] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [204] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [198] phi() + [205] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom - [199] phi() - [200] call processChars + [206] phi() + [207] call processChars to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [208] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@2 - [204] return + [211] return to:@return processChars: scope:[processChars] from irqBottom::@1 - [205] phi() + [212] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [206] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [206] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 - [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 - [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 - [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 - [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 - [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [213] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [213] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 + [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 + [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 + [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 + [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 + [219] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 + [220] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [221] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 to:processChars::@10 processChars::@10: scope:[processChars] from processChars::@1 - [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [222] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 to:processChars::@11 processChars::@11: scope:[processChars] from processChars::@10 - [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [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) - [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 + [223] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [224] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) + [226] *((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) + [227] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 to:processChars::@3 processChars::@3: scope:[processChars] from processChars::@10 processChars::@11 - [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 + [228] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [229] (byte~) processChars::$11 ← > (word) processChars::xpos#0 + [230] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 + [231] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [232] *((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 - [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 + [233] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 + [234] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 + [235] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 + [236] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [237] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 + [238] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 + [239] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@14 processChars::@14: scope:[processChars] from processChars::@5 - [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + [240] 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 - [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + [241] 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 + [242] 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::@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) + [243] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 + [244] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 + [245] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 + [247] *((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) + [248] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 + [250] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 + [252] *((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) + [253] *((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 - [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [254] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [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 + [255] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [256] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [257] 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::@2 - [249] return - to:@return -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 - [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 - to:processChars::@5 -irqTop: scope:[irqTop] from - [254] phi() - to:irqTop::@1 -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::@1 [258] return to:@return +processChars::@6: scope:[processChars] from processChars::@12 processChars::@13 processChars::@14 processChars::@5 + [259] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [261] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 + to:processChars::@7 +processChars::@4: scope:[processChars] from processChars::@3 + [262] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + to:processChars::@5 +irqTop: scope:[irqTop] from + [263] phi() + to:irqTop::@1 +irqTop::@1: scope:[irqTop] from irqTop + [264] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + to:irqTop::@return +irqTop::@return: scope:[irqTop] from irqTop::@1 + [267] return + to:@return diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log index 0c63c901a..4628192a7 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -41,8 +41,9 @@ Adding struct value list initializer *((word*) main::$19 + (byte~) main::$16) Adding struct value list initializer *((word*) main::$20 + (byte~) main::$16) ← (number) 0 Adding struct value list initializer *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 -Adding struct value list initializer *((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE -Adding struct value list initializer *((byte**) main::$24 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((byte*) main::$23 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((byte*) main::$24 + (byte~) main::$16) ← (byte) STATUS_FREE +Adding struct value list initializer *((byte**) main::$25 + (byte~) main::$16) ← (number) 0 Converted procedure call LValue to member variables { (byte) main::$9_x, (byte) main::$9_y, (word) main::$9_dist } ← call getCharToProcess Adding struct value member variable copy (byte) main::center_x ← (byte) main::$9_x Adding struct value member variable copy (byte) main::center_y ← (byte) main::$9_y @@ -61,14 +62,15 @@ Adding struct value member variable copy (byte) getCharToProcess::return_x ← ( Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::return_y Adding struct value member variable copy (word) getCharToProcess::return_dist ← (word) getCharToProcess::return_dist Converted procedure struct return value to member variables return { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist } -Adding struct value list initializer *((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX -Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY -Adding struct value list initializer *((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -Adding struct value list initializer *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c -Adding struct value list initializer *((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx -Adding struct value list initializer *((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr -Adding struct value list initializer *((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW -Adding struct value list initializer *((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr +Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX +Adding struct value list initializer *((word*) startProcessing::$33 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY +Adding struct value list initializer *((word*) startProcessing::$34 + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 +Adding struct value list initializer *((word*) startProcessing::$35 + (byte~) startProcessing::$31) ← (number) $3c +Adding struct value list initializer *((byte*) startProcessing::$36 + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteIdx +Adding struct value list initializer *((byte*) startProcessing::$37 + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr +Adding struct value list initializer *((byte*) startProcessing::$38 + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol +Adding struct value list initializer *((byte*) startProcessing::$39 + (byte~) startProcessing::$31) ← (byte) STATUS_NEW +Adding struct value list initializer *((byte**) startProcessing::$40 + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr Replacing struct member reference (struct ProcessingChar) main::center.dist with member variable reference (word) main::center_dist Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist @@ -78,12 +80,14 @@ Replacing struct member reference (struct ProcessingChar) startProcessing::cente Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member variable reference (byte) startProcessing::center_y -Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$29).status +Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$30).status Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).screenPtr +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).col +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).ptr Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status @@ -152,7 +156,7 @@ Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number Adding pointer type conversion cast (byte*) SPRITE_DATA in (byte*) SPRITE_DATA ← (number) $2000 Adding pointer type conversion cast (word*) VXSIN in (word*) VXSIN ← (number) $2200 Adding pointer type conversion cast (word*) VYSIN in (word*) VYSIN ← (number) $2280 -Adding pointer type conversion cast (byte*) *(main::$24 + main::$16) in *((byte**) main::$24 + (byte~) main::$16) ← (number) 0 +Adding pointer type conversion cast (byte*) *(main::$25 + main::$16) in *((byte**) main::$25 + (byte~) main::$16) ← (number) 0 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Culled Empty Block (label) @1 Culled Empty Block (label) @2 @@ -325,10 +329,12 @@ main::@3: scope:[main] from main::@2 main::@3 *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 (byte*) main::$22 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 - (byte*) main::$23 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE#0 - (byte**) main::$24 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) main::$24 + (byte~) main::$16) ← ((byte*)) (number) 0 + (byte*) main::$23 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + *((byte*) main::$23 + (byte~) main::$16) ← (number) 0 + (byte*) main::$24 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) main::$24 + (byte~) main::$16) ← (byte) STATUS_FREE#0 + (byte**) main::$25 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) main::$25 + (byte~) main::$16) ← ((byte*)) (number) 0 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$7) (bool~) main::$8 ← (byte) main::i#1 != rangelast(0,main::$7) if((bool~) main::$8) goto main::@3 @@ -506,7 +512,7 @@ startProcessing::@1: scope:[startProcessing] from startProcessing startProcessi (byte) startProcessing::center_x#8 ← phi( startProcessing/(byte) startProcessing::center_x#9 startProcessing::@4/(byte) startProcessing::center_x#3 ) (byte) startProcessing::center_y#8 ← phi( startProcessing/(byte) startProcessing::center_y#9 startProcessing::@4/(byte) startProcessing::center_y#3 ) (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) startProcessing::freeIdx#0 startProcessing::@4/(byte) startProcessing::freeIdx#2 ) - (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) startProcessing::$24 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) startProcessing::i#0 ← (byte) 0 to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 @@ -514,20 +520,20 @@ startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProc (byte) startProcessing::center_y#7 ← phi( startProcessing::@1/(byte) startProcessing::center_y#8 startProcessing::@3/(byte) startProcessing::center_y#5 ) (byte) startProcessing::freeIdx#5 ← phi( startProcessing::@1/(byte) startProcessing::freeIdx#6 startProcessing::@3/(byte) startProcessing::freeIdx#4 ) (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) startProcessing::i#0 startProcessing::@3/(byte) startProcessing::i#1 ) - (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 - (bool~) startProcessing::$25 ← ! (bool~) startProcessing::$24 - if((bool~) startProcessing::$25) goto startProcessing::@3 + (byte~) startProcessing::$30 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (byte*) startProcessing::$41 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (bool~) startProcessing::$25 ← *((byte*) startProcessing::$41 + (byte~) startProcessing::$30) == (byte) STATUS_FREE#0 + (bool~) startProcessing::$26 ← ! (bool~) startProcessing::$25 + if((bool~) startProcessing::$26) goto startProcessing::@3 to:startProcessing::@5 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 (byte) startProcessing::center_x#5 ← phi( startProcessing::@2/(byte) startProcessing::center_x#7 ) (byte) startProcessing::center_y#5 ← phi( startProcessing::@2/(byte) startProcessing::center_y#7 ) (byte) startProcessing::freeIdx#4 ← phi( startProcessing::@2/(byte) startProcessing::freeIdx#5 ) (byte) startProcessing::i#3 ← phi( startProcessing::@2/(byte) startProcessing::i#2 ) - (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,startProcessing::$23) - (bool~) startProcessing::$26 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$23) - if((bool~) startProcessing::$26) goto startProcessing::@2 + (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,startProcessing::$24) + (bool~) startProcessing::$27 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$24) + if((bool~) startProcessing::$27) goto startProcessing::@2 to:startProcessing::@4 startProcessing::@5: scope:[startProcessing] from startProcessing::@2 (byte) startProcessing::center_x#6 ← phi( startProcessing::@2/(byte) startProcessing::center_x#7 ) @@ -539,8 +545,8 @@ startProcessing::@4: scope:[startProcessing] from startProcessing::@3 startProc (byte) startProcessing::center_x#3 ← phi( startProcessing::@3/(byte) startProcessing::center_x#5 startProcessing::@5/(byte) startProcessing::center_x#6 ) (byte) startProcessing::center_y#3 ← phi( startProcessing::@3/(byte) startProcessing::center_y#5 startProcessing::@5/(byte) startProcessing::center_y#6 ) (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@3/(byte) startProcessing::freeIdx#4 startProcessing::@5/(byte) startProcessing::freeIdx#1 ) - (bool~) startProcessing::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff - if((bool~) startProcessing::$27) goto startProcessing::@1 + (bool~) startProcessing::$28 ← (byte) startProcessing::freeIdx#2 == (number) $ff + if((bool~) startProcessing::$28) goto startProcessing::@1 to:startProcessing::@8 startProcessing::@8: scope:[startProcessing] from startProcessing::@4 (byte) startProcessing::center_x#1 ← phi( startProcessing::@4/(byte) startProcessing::center_x#3 ) @@ -549,24 +555,29 @@ startProcessing::@8: scope:[startProcessing] from startProcessing::@4 (byte) startProcessing::spriteIdx#0 ← (byte) startProcessing::freeIdx#3 (word~) startProcessing::$0 ← ((word)) (byte) startProcessing::center_y#1 (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (number) $28 - (byte*~) startProcessing::$2 ← (byte*) SCREEN#0 + (number~) startProcessing::$1 - (byte*~) startProcessing::$3 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#1 - (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$3 - (word~) startProcessing::$4 ← ((word)) (byte) startProcessing::spriteIdx#0 - (number~) startProcessing::$5 ← (word~) startProcessing::$4 * (number) $40 - (byte*~) startProcessing::$6 ← (byte*) SPRITE_DATA#0 + (number~) startProcessing::$5 - (byte*) startProcessing::spriteData#0 ← (byte*~) startProcessing::$6 + (number~) startProcessing::$2 ← (number~) startProcessing::$1 + (byte) startProcessing::center_x#1 + (word) startProcessing::offset#0 ← (number~) startProcessing::$2 + (byte*~) startProcessing::$3 ← (byte*) COLS#0 + (word) startProcessing::offset#0 + (byte*) startProcessing::colPtr#0 ← (byte*~) startProcessing::$3 + (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) + (byte*~) startProcessing::$4 ← (byte*) SCREEN#0 + (word) startProcessing::offset#0 + (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$4 + (word~) startProcessing::$5 ← ((word)) (byte) startProcessing::spriteIdx#0 + (number~) startProcessing::$6 ← (word~) startProcessing::$5 * (number) $40 + (byte*~) startProcessing::$7 ← (byte*) SPRITE_DATA#0 + (number~) startProcessing::$6 + (byte*) startProcessing::spriteData#0 ← (byte*~) startProcessing::$7 (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) - (word~) startProcessing::$7 ← ((word)) (byte) startProcessing::ch#0 - (number~) startProcessing::$8 ← (word~) startProcessing::$7 * (number) 8 - (byte*~) startProcessing::$9 ← (byte*) CHARGEN#0 + (number~) startProcessing::$8 - (byte*) startProcessing::chargenData#0 ← (byte*~) startProcessing::$9 + (word~) startProcessing::$8 ← ((word)) (byte) startProcessing::ch#0 + (number~) startProcessing::$9 ← (word~) startProcessing::$8 * (number) 8 + (byte*~) startProcessing::$10 ← (byte*) CHARGEN#0 + (number~) startProcessing::$9 + (byte*) startProcessing::chargenData#0 ← (byte*~) startProcessing::$10 asm { sei } *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_CHARROM#0 (byte) startProcessing::i1#0 ← (byte) 0 to:startProcessing::@9 startProcessing::@9: scope:[startProcessing] from startProcessing::@8 startProcessing::@9 (byte*) startProcessing::screenPtr#2 ← phi( startProcessing::@8/(byte*) startProcessing::screenPtr#0 startProcessing::@9/(byte*) startProcessing::screenPtr#2 ) + (byte) startProcessing::spriteCol#2 ← phi( startProcessing::@8/(byte) startProcessing::spriteCol#0 startProcessing::@9/(byte) startProcessing::spriteCol#2 ) (byte) startProcessing::spriteIdx#2 ← phi( startProcessing::@8/(byte) startProcessing::spriteIdx#0 startProcessing::@9/(byte) startProcessing::spriteIdx#2 ) (byte) startProcessing::center_y#4 ← phi( startProcessing::@8/(byte) startProcessing::center_y#1 startProcessing::@9/(byte) startProcessing::center_y#4 ) (byte) startProcessing::center_x#4 ← phi( startProcessing::@8/(byte) startProcessing::center_x#1 startProcessing::@9/(byte) startProcessing::center_x#4 ) @@ -577,49 +588,52 @@ startProcessing::@9: scope:[startProcessing] from startProcessing::@8 startProc (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (number) 3 (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 (byte) startProcessing::i1#1 ← (byte) startProcessing::i1#2 + rangenext(0,7) - (bool~) startProcessing::$28 ← (byte) startProcessing::i1#1 != rangelast(0,7) - if((bool~) startProcessing::$28) goto startProcessing::@9 + (bool~) startProcessing::$29 ← (byte) startProcessing::i1#1 != rangelast(0,7) + if((bool~) startProcessing::$29) goto startProcessing::@9 to:startProcessing::@10 startProcessing::@10: scope:[startProcessing] from startProcessing::@9 (byte*) startProcessing::screenPtr#1 ← phi( startProcessing::@9/(byte*) startProcessing::screenPtr#2 ) + (byte) startProcessing::spriteCol#1 ← phi( startProcessing::@9/(byte) startProcessing::spriteCol#2 ) (byte) startProcessing::spriteIdx#1 ← phi( startProcessing::@9/(byte) startProcessing::spriteIdx#2 ) (byte) startProcessing::center_y#2 ← phi( startProcessing::@9/(byte) startProcessing::center_y#4 ) (byte) startProcessing::center_x#2 ← phi( startProcessing::@9/(byte) startProcessing::center_x#4 ) *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 asm { cli } - (word~) startProcessing::$10 ← ((word)) (byte) startProcessing::center_x#2 - (number~) startProcessing::$11 ← (word~) startProcessing::$10 * (number) 8 - (number~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (number~) startProcessing::$11 - (number~) startProcessing::$13 ← (number~) startProcessing::$12 << (number) 4 - (word) startProcessing::spriteX#0 ← (number~) startProcessing::$13 - (word~) startProcessing::$14 ← ((word)) (byte) startProcessing::center_y#2 - (number~) startProcessing::$15 ← (word~) startProcessing::$14 * (number) 8 - (number~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (number~) startProcessing::$15 - (number~) startProcessing::$17 ← (number~) startProcessing::$16 << (number) 4 - (word) startProcessing::spriteY#0 ← (number~) startProcessing::$17 - (byte*~) startProcessing::$18 ← (byte*) SPRITE_DATA#0 / (number) $40 - (byte~) startProcessing::$19 ← ((byte)) (byte*~) startProcessing::$18 - (byte~) startProcessing::$20 ← (byte~) startProcessing::$19 + (byte) startProcessing::spriteIdx#1 - (byte) startProcessing::spritePtr#0 ← (byte~) startProcessing::$20 - (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8 - (word~) startProcessing::$22 ← ((word)) (number~) startProcessing::$21 - (byte~) startProcessing::$30 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 - (word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 - (word*) startProcessing::$33 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 - (word*) startProcessing::$34 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c - (byte*) startProcessing::$35 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx#1 - (byte*) startProcessing::$36 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 - (byte*) startProcessing::$37 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW#0 - (byte**) startProcessing::$38 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#1 + (word~) startProcessing::$11 ← ((word)) (byte) startProcessing::center_x#2 + (number~) startProcessing::$12 ← (word~) startProcessing::$11 * (number) 8 + (number~) startProcessing::$13 ← (byte) BORDER_XPOS_LEFT#0 + (number~) startProcessing::$12 + (number~) startProcessing::$14 ← (number~) startProcessing::$13 << (number) 4 + (word) startProcessing::spriteX#0 ← (number~) startProcessing::$14 + (word~) startProcessing::$15 ← ((word)) (byte) startProcessing::center_y#2 + (number~) startProcessing::$16 ← (word~) startProcessing::$15 * (number) 8 + (number~) startProcessing::$17 ← (byte) BORDER_YPOS_TOP#0 + (number~) startProcessing::$16 + (number~) startProcessing::$18 ← (number~) startProcessing::$17 << (number) 4 + (word) startProcessing::spriteY#0 ← (number~) startProcessing::$18 + (byte*~) startProcessing::$19 ← (byte*) SPRITE_DATA#0 / (number) $40 + (byte~) startProcessing::$20 ← ((byte)) (byte*~) startProcessing::$19 + (byte~) startProcessing::$21 ← (byte~) startProcessing::$20 + (byte) startProcessing::spriteIdx#1 + (byte) startProcessing::spritePtr#0 ← (byte~) startProcessing::$21 + (number~) startProcessing::$22 ← (byte) startProcessing::spriteIdx#1 * (number) 8 + (word~) startProcessing::$23 ← ((word)) (number~) startProcessing::$22 + (byte~) startProcessing::$31 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) startProcessing::$32 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 + (word*) startProcessing::$33 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) startProcessing::$33 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 + (word*) startProcessing::$34 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) startProcessing::$34 + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 + (word*) startProcessing::$35 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) startProcessing::$35 + (byte~) startProcessing::$31) ← (number) $3c + (byte*) startProcessing::$36 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) startProcessing::$36 + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteIdx#1 + (byte*) startProcessing::$37 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*) startProcessing::$37 + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 + (byte*) startProcessing::$38 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + *((byte*) startProcessing::$38 + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#1 + (byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) startProcessing::$39 + (byte~) startProcessing::$31) ← (byte) STATUS_NEW#0 + (byte**) startProcessing::$40 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) startProcessing::$40 + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#1 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@10 return @@ -693,8 +707,8 @@ processChars::@4: scope:[processChars] from processChars::@13 processChars::@14 (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 + (bool~) processChars::$66 ← (number) 0 != (byte~) processChars::$11 + if((bool~) processChars::$66) goto processChars::@5 to:processChars::@9 processChars::@14: scope:[processChars] from processChars::@13 (byte) processChars::numActive#14 ← phi( processChars::@13/(byte) processChars::numActive#13 ) @@ -704,13 +718,16 @@ processChars::@14: scope:[processChars] from processChars::@13 (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::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) SPRITES_COLS#0 + *((byte*) processChars::$46)) ← *((byte*) processChars::$45) (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 + (byte*) processChars::$47 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*) processChars::$47) + (byte*) processChars::$48 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*~) processChars::$9) ← *((byte*) processChars::$48) + (byte*) processChars::$49 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) processChars::$49) ← (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 ) @@ -738,22 +755,22 @@ processChars::@6: scope:[processChars] from processChars::@5 processChars::@9 (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 + (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (word~) processChars::$15 ← *((word*) processChars::$50) >> (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 + (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (bool~) processChars::$18 ← *((word*) processChars::$51) < (word) XPOS_LEFTMOST#0 + (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (bool~) processChars::$19 ← *((word*) processChars::$52) > (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 + (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$21 ← *((word*) processChars::$53) < (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 + (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$23 ← *((word*) processChars::$54) > (word) YPOS_BOTTOMMOST#0 (bool~) processChars::$24 ← (bool~) processChars::$22 || (bool~) processChars::$23 if((bool~) processChars::$24) goto processChars::@7 to:processChars::@11 @@ -762,8 +779,8 @@ processChars::@7: scope:[processChars] from processChars::@6 (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 + (byte*) processChars::$55 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) processChars::$55) ← (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 @@ -779,26 +796,26 @@ processChars::@11: scope:[processChars] from processChars::@6 (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::$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_VX + *((word*) processChars::$57) ← *((word*) processChars::$56) + *((word*) VXSIN#0 + (byte~) processChars::$38) (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) processChars::$58) ← *((word*) processChars::$56) + *((word*) processChars::$57) + (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) processChars::$60) ← *((word*) processChars::$58) + *((word*) processChars::$59) (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::$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_VY + *((word*) processChars::$62) ← *((word*) processChars::$61) + *((word*) VYSIN#0 + (byte~) processChars::$39) (word*) processChars::$63 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) processChars::$63) ← *((word*) processChars::$61) + *((word*) processChars::$62) + (word*) processChars::$64 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (word*) processChars::$65 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) processChars::$65) ← *((word*) processChars::$63) + *((word*) processChars::$64) 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 ) @@ -1107,10 +1124,11 @@ SYMBOL TABLE SSA (word) NOT_FOUND#0 (byte) NUM_PROCESSING (byte) NUM_PROCESSING#0 +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $c +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $b (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X = (byte) 0 @@ -1130,6 +1148,7 @@ SYMBOL TABLE SSA (word) ProcessingChar::dist (byte) ProcessingChar::x (byte) ProcessingChar::y +(byte) ProcessingSprite::col (byte) ProcessingSprite::id (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr @@ -1148,7 +1167,7 @@ SYMBOL TABLE SSA (byte*) SCREEN#0 (byte[$3e8]) SCREEN_COPY (byte[$3e8]) SCREEN_COPY#0 -(const byte) SIZEOF_STRUCT_PROCESSINGSPRITE = (byte) $d +(const byte) SIZEOF_STRUCT_PROCESSINGSPRITE = (byte) $e (const byte) SIZEOF_WORD = (byte) 2 (byte*) SPRITES_COLS (byte*) SPRITES_COLS#0 @@ -1423,7 +1442,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::$21 (byte*) main::$22 (byte*) main::$23 -(byte**) main::$24 +(byte*) main::$24 +(byte**) main::$25 (byte*~) main::$4 (byte*~) main::$5 (bool~) main::$6 @@ -1562,15 +1582,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) processChars::$45 (byte*) processChars::$46 (byte*) processChars::$47 -(word*) processChars::$48 -(word*) processChars::$49 +(byte*) processChars::$48 +(byte*) processChars::$49 (bool~) processChars::$5 (word*) processChars::$50 (word*) processChars::$51 (word*) processChars::$52 -(byte*) processChars::$53 +(word*) processChars::$53 (word*) processChars::$54 -(word*) processChars::$55 +(byte*) processChars::$55 (word*) processChars::$56 (word*) processChars::$57 (word*) processChars::$58 @@ -1580,7 +1600,9 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word*) processChars::$61 (word*) processChars::$62 (word*) processChars::$63 -(bool~) processChars::$64 +(word*) processChars::$64 +(word*) processChars::$65 +(bool~) processChars::$66 (bool~) processChars::$7 (byte*~) processChars::$8 (byte*~) processChars::$9 @@ -1682,44 +1704,46 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) (word~) startProcessing::$0 (number~) startProcessing::$1 -(word~) startProcessing::$10 -(number~) startProcessing::$11 +(byte*~) startProcessing::$10 +(word~) startProcessing::$11 (number~) startProcessing::$12 (number~) startProcessing::$13 -(word~) startProcessing::$14 -(number~) startProcessing::$15 +(number~) startProcessing::$14 +(word~) startProcessing::$15 (number~) startProcessing::$16 (number~) startProcessing::$17 -(byte*~) startProcessing::$18 -(byte~) startProcessing::$19 -(byte*~) startProcessing::$2 +(number~) startProcessing::$18 +(byte*~) startProcessing::$19 +(number~) startProcessing::$2 (byte~) startProcessing::$20 -(number~) startProcessing::$21 -(word~) startProcessing::$22 -(number~) startProcessing::$23 -(bool~) startProcessing::$24 +(byte~) startProcessing::$21 +(number~) startProcessing::$22 +(word~) startProcessing::$23 +(number~) startProcessing::$24 (bool~) startProcessing::$25 (bool~) startProcessing::$26 (bool~) startProcessing::$27 (bool~) startProcessing::$28 -(byte~) startProcessing::$29 +(bool~) startProcessing::$29 (byte*~) startProcessing::$3 (byte~) startProcessing::$30 -(word*) startProcessing::$31 +(byte~) startProcessing::$31 (word*) startProcessing::$32 (word*) startProcessing::$33 (word*) startProcessing::$34 -(byte*) startProcessing::$35 +(word*) startProcessing::$35 (byte*) startProcessing::$36 (byte*) startProcessing::$37 -(byte**) startProcessing::$38 +(byte*) startProcessing::$38 (byte*) startProcessing::$39 -(word~) startProcessing::$4 -(number~) startProcessing::$5 -(byte*~) startProcessing::$6 -(word~) startProcessing::$7 -(number~) startProcessing::$8 -(byte*~) startProcessing::$9 +(byte*~) startProcessing::$4 +(byte**) startProcessing::$40 +(byte*) startProcessing::$41 +(word~) startProcessing::$5 +(number~) startProcessing::$6 +(byte*~) startProcessing::$7 +(word~) startProcessing::$8 +(number~) startProcessing::$9 (label) startProcessing::@1 (label) startProcessing::@10 (label) startProcessing::@2 @@ -1760,6 +1784,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) startProcessing::chargenData#0 (byte*) startProcessing::chargenData#1 (byte*) startProcessing::chargenData#2 +(byte*) startProcessing::colPtr +(byte*) startProcessing::colPtr#0 (byte) startProcessing::freeIdx (byte) startProcessing::freeIdx#0 (byte) startProcessing::freeIdx#1 @@ -1778,10 +1804,16 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) startProcessing::i1#0 (byte) startProcessing::i1#1 (byte) startProcessing::i1#2 +(word) startProcessing::offset +(word) startProcessing::offset#0 (byte*) startProcessing::screenPtr (byte*) startProcessing::screenPtr#0 (byte*) startProcessing::screenPtr#1 (byte*) startProcessing::screenPtr#2 +(byte) startProcessing::spriteCol +(byte) startProcessing::spriteCol#0 +(byte) startProcessing::spriteCol#1 +(byte) startProcessing::spriteCol#2 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 (byte*) startProcessing::spriteData#1 @@ -1831,6 +1863,7 @@ Adding number conversion cast (unumber) 0 in *((word*) main::$19 + (byte~) main: Adding number conversion cast (unumber) 0 in *((word*) main::$20 + (byte~) main::$16) ← (number) 0 Adding number conversion cast (unumber) 0 in *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 Adding number conversion cast (unumber) 0 in *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$23 + (byte~) main::$16) ← (number) 0 Adding number conversion cast (unumber) $3e7 in (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7 Adding number conversion cast (unumber) $3e7 in (byte*~) main::$15 ← (byte*) COLS#0 + (number) $3e7 Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_x#0 ← (number) 0 @@ -1839,30 +1872,31 @@ Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::screen_ Adding number conversion cast (unumber) $28 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (number) $28 Adding number conversion cast (unumber) getCharToProcess::$10 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (unumber)(number) $28 Adding number conversion cast (unumber) $ff in (byte) startProcessing::freeIdx#0 ← (number) $ff -Adding number conversion cast (unumber) 1 in (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) startProcessing::$23 in (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff +Adding number conversion cast (unumber) 1 in (number~) startProcessing::$24 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) startProcessing::$24 in (number~) startProcessing::$24 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$28 ← (byte) startProcessing::freeIdx#2 == (number) $ff Adding number conversion cast (unumber) $28 in (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (number) $28 Adding number conversion cast (unumber) startProcessing::$1 in (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (unumber)(number) $28 -Adding number conversion cast (unumber) $40 in (number~) startProcessing::$5 ← (word~) startProcessing::$4 * (number) $40 -Adding number conversion cast (unumber) startProcessing::$5 in (number~) startProcessing::$5 ← (word~) startProcessing::$4 * (unumber)(number) $40 -Adding number conversion cast (unumber) 8 in (number~) startProcessing::$8 ← (word~) startProcessing::$7 * (number) 8 -Adding number conversion cast (unumber) startProcessing::$8 in (number~) startProcessing::$8 ← (word~) startProcessing::$7 * (unumber)(number) 8 +Adding number conversion cast (unumber) startProcessing::$2 in (number~) startProcessing::$2 ← (unumber~) startProcessing::$1 + (byte) startProcessing::center_x#1 +Adding number conversion cast (unumber) $40 in (number~) startProcessing::$6 ← (word~) startProcessing::$5 * (number) $40 +Adding number conversion cast (unumber) startProcessing::$6 in (number~) startProcessing::$6 ← (word~) startProcessing::$5 * (unumber)(number) $40 +Adding number conversion cast (unumber) 8 in (number~) startProcessing::$9 ← (word~) startProcessing::$8 * (number) 8 +Adding number conversion cast (unumber) startProcessing::$9 in (number~) startProcessing::$9 ← (word~) startProcessing::$8 * (unumber)(number) 8 Adding number conversion cast (unumber) 3 in (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (number) 3 -Adding number conversion cast (unumber) 8 in (number~) startProcessing::$11 ← (word~) startProcessing::$10 * (number) 8 -Adding number conversion cast (unumber) startProcessing::$11 in (number~) startProcessing::$11 ← (word~) startProcessing::$10 * (unumber)(number) 8 -Adding number conversion cast (unumber) startProcessing::$12 in (number~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (unumber~) startProcessing::$11 -Adding number conversion cast (unumber) 4 in (number~) startProcessing::$13 ← (unumber~) startProcessing::$12 << (number) 4 -Adding number conversion cast (unumber) startProcessing::$13 in (number~) startProcessing::$13 ← (unumber~) startProcessing::$12 << (unumber)(number) 4 -Adding number conversion cast (unumber) 8 in (number~) startProcessing::$15 ← (word~) startProcessing::$14 * (number) 8 -Adding number conversion cast (unumber) startProcessing::$15 in (number~) startProcessing::$15 ← (word~) startProcessing::$14 * (unumber)(number) 8 -Adding number conversion cast (unumber) startProcessing::$16 in (number~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (unumber~) startProcessing::$15 -Adding number conversion cast (unumber) 4 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (number) 4 -Adding number conversion cast (unumber) startProcessing::$17 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (unumber)(number) 4 -Adding number conversion cast (unumber) $40 in (byte*~) startProcessing::$18 ← (byte*) SPRITE_DATA#0 / (number) $40 -Adding number conversion cast (unumber) 8 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8 -Adding number conversion cast (unumber) startProcessing::$21 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (unumber)(number) 8 -Adding number conversion cast (unumber) $3c in *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c +Adding number conversion cast (unumber) 8 in (number~) startProcessing::$12 ← (word~) startProcessing::$11 * (number) 8 +Adding number conversion cast (unumber) startProcessing::$12 in (number~) startProcessing::$12 ← (word~) startProcessing::$11 * (unumber)(number) 8 +Adding number conversion cast (unumber) startProcessing::$13 in (number~) startProcessing::$13 ← (byte) BORDER_XPOS_LEFT#0 + (unumber~) startProcessing::$12 +Adding number conversion cast (unumber) 4 in (number~) startProcessing::$14 ← (unumber~) startProcessing::$13 << (number) 4 +Adding number conversion cast (unumber) startProcessing::$14 in (number~) startProcessing::$14 ← (unumber~) startProcessing::$13 << (unumber)(number) 4 +Adding number conversion cast (unumber) 8 in (number~) startProcessing::$16 ← (word~) startProcessing::$15 * (number) 8 +Adding number conversion cast (unumber) startProcessing::$16 in (number~) startProcessing::$16 ← (word~) startProcessing::$15 * (unumber)(number) 8 +Adding number conversion cast (unumber) startProcessing::$17 in (number~) startProcessing::$17 ← (byte) BORDER_YPOS_TOP#0 + (unumber~) startProcessing::$16 +Adding number conversion cast (unumber) 4 in (number~) startProcessing::$18 ← (unumber~) startProcessing::$17 << (number) 4 +Adding number conversion cast (unumber) startProcessing::$18 in (number~) startProcessing::$18 ← (unumber~) startProcessing::$17 << (unumber)(number) 4 +Adding number conversion cast (unumber) $40 in (byte*~) startProcessing::$19 ← (byte*) SPRITE_DATA#0 / (number) $40 +Adding number conversion cast (unumber) 8 in (number~) startProcessing::$22 ← (byte) startProcessing::spriteIdx#1 * (number) 8 +Adding number conversion cast (unumber) startProcessing::$22 in (number~) startProcessing::$22 ← (byte) startProcessing::spriteIdx#1 * (unumber)(number) 8 +Adding number conversion cast (unumber) $3c in *((word*) startProcessing::$35 + (byte~) startProcessing::$31) ← (number) $3c Adding number conversion cast (unumber) 8 in (number~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (number) 8 Adding number conversion cast (unumber) $0 in (number~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (unumber)(number) 8 Adding number conversion cast (unumber) 4 in (word~) $2 ← (word~) $1 << (number) 4 @@ -1877,12 +1911,12 @@ Adding number conversion cast (unumber) processChars::$1 in (number~) processCha 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) 0 in (bool~) processChars::$66 ← (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) 4 in (word~) processChars::$15 ← *((word*) processChars::$50) >> (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 @@ -1977,19 +2011,20 @@ Inlining cast *((word*) main::$19 + (byte~) main::$16) ← (unumber)(number) 0 Inlining cast *((word*) main::$20 + (byte~) main::$16) ← (unumber)(number) 0 Inlining cast *((byte*) main::$21 + (byte~) main::$16) ← (unumber)(number) 0 Inlining cast *((byte*) main::$22 + (byte~) main::$16) ← (unumber)(number) 0 -Inlining cast *((byte**) main::$24 + (byte~) main::$16) ← (byte*)(number) 0 +Inlining cast *((byte*) main::$23 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((byte**) main::$25 + (byte~) main::$16) ← (byte*)(number) 0 Inlining cast (byte) getCharToProcess::closest_x#0 ← (unumber)(number) 0 Inlining cast (byte) getCharToProcess::closest_y#0 ← (unumber)(number) 0 Inlining cast (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::closest_y#3 Inlining cast (byte) startProcessing::freeIdx#0 ← (unumber)(number) $ff Inlining cast (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#1 -Inlining cast (word~) startProcessing::$4 ← (word)(byte) startProcessing::spriteIdx#0 -Inlining cast (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -Inlining cast (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#2 -Inlining cast (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#2 -Inlining cast (byte~) startProcessing::$19 ← (byte)(byte*~) startProcessing::$18 -Inlining cast (word~) startProcessing::$22 ← (word)(unumber~) startProcessing::$21 -Inlining cast *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (unumber)(number) $3c +Inlining cast (word~) startProcessing::$5 ← (word)(byte) startProcessing::spriteIdx#0 +Inlining cast (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 +Inlining cast (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#2 +Inlining cast (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#2 +Inlining cast (byte~) startProcessing::$20 ← (byte)(byte*~) startProcessing::$19 +Inlining cast (word~) startProcessing::$23 ← (word)(unumber~) startProcessing::$22 +Inlining cast *((word*) startProcessing::$35 + (byte~) startProcessing::$31) ← (unumber)(number) $3c Inlining cast (word~) $1 ← (word)(unumber~) $0 Inlining cast (word~) $3 ← (word)(word) BORDER_XPOS_RIGHT#0 Inlining cast (word~) $6 ← (word)(unumber~) $5 @@ -2062,6 +2097,7 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 +Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast $3e7 Simplifying constant integer cast $3e7 @@ -2154,6 +2190,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (word) $3e7 Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) 0 @@ -2215,17 +2252,18 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1 Inferred type updated to byte in (unumber~) main::$7 ← (byte) NUM_PROCESSING#0 - (byte) 1 Inferred type updated to word in (unumber~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28 -Inferred type updated to byte in (unumber~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) startProcessing::$24 ← (byte) NUM_PROCESSING#0 - (byte) 1 Inferred type updated to word in (unumber~) startProcessing::$1 ← (word~) startProcessing::$0 * (byte) $28 -Inferred type updated to word in (unumber~) startProcessing::$5 ← (word~) startProcessing::$4 * (byte) $40 -Inferred type updated to word in (unumber~) startProcessing::$8 ← (word~) startProcessing::$7 * (byte) 8 -Inferred type updated to word in (unumber~) startProcessing::$11 ← (word~) startProcessing::$10 * (byte) 8 -Inferred type updated to word in (unumber~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -Inferred type updated to word in (unumber~) startProcessing::$13 ← (word~) startProcessing::$12 << (byte) 4 -Inferred type updated to word in (unumber~) startProcessing::$15 ← (word~) startProcessing::$14 * (byte) 8 -Inferred type updated to word in (unumber~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -Inferred type updated to word in (unumber~) startProcessing::$17 ← (word~) startProcessing::$16 << (byte) 4 -Inferred type updated to byte in (unumber~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (byte) 8 +Inferred type updated to word in (unumber~) startProcessing::$2 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#1 +Inferred type updated to word in (unumber~) startProcessing::$6 ← (word~) startProcessing::$5 * (byte) $40 +Inferred type updated to word in (unumber~) startProcessing::$9 ← (word~) startProcessing::$8 * (byte) 8 +Inferred type updated to word in (unumber~) startProcessing::$12 ← (word~) startProcessing::$11 * (byte) 8 +Inferred type updated to word in (unumber~) startProcessing::$13 ← (byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 +Inferred type updated to word in (unumber~) startProcessing::$14 ← (word~) startProcessing::$13 << (byte) 4 +Inferred type updated to word in (unumber~) startProcessing::$16 ← (word~) startProcessing::$15 * (byte) 8 +Inferred type updated to word in (unumber~) startProcessing::$17 ← (byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 +Inferred type updated to word in (unumber~) startProcessing::$18 ← (word~) startProcessing::$17 << (byte) 4 +Inferred type updated to byte in (unumber~) startProcessing::$22 ← (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::$1 ← (byte) NUM_PROCESSING#0 - (byte) 1 @@ -2252,13 +2290,13 @@ Inferred type updated to byte in (unumber~) initSquareTables::$10 ← (byte~) in 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 [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 [195] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) != (byte) STATUS_FREE#0 from [194] (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 -Inversing boolean not [297] (bool~) processChars::$5 ← *((byte*) processChars::$41) == (byte) STATUS_FREE#0 from [296] (bool~) processChars::$4 ← *((byte*) processChars::$41) != (byte) STATUS_FREE#0 -Inversing boolean not [306] (bool~) processChars::$7 ← *((byte*) processChars::$42) != (byte) STATUS_NEW#0 from [305] (bool~) processChars::$6 ← *((byte*) processChars::$42) == (byte) STATUS_NEW#0 +Inversing boolean not [121] (bool~) main::$11 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [120] (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 +Inversing boolean not [144] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [143] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' +Inversing boolean not [156] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [155] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 +Inversing boolean not [169] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [168] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 +Inversing boolean not [197] (bool~) startProcessing::$26 ← *((byte*) startProcessing::$41 + (byte~) startProcessing::$30) != (byte) STATUS_FREE#0 from [196] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$41 + (byte~) startProcessing::$30) == (byte) STATUS_FREE#0 +Inversing boolean not [305] (bool~) processChars::$5 ← *((byte*) processChars::$41) == (byte) STATUS_FREE#0 from [304] (bool~) processChars::$4 ← *((byte*) processChars::$41) != (byte) STATUS_FREE#0 +Inversing boolean not [314] (bool~) processChars::$7 ← *((byte*) processChars::$42) != (byte) STATUS_NEW#0 from [313] (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 @@ -2296,16 +2334,19 @@ Alias (byte) startProcessing::center_x#5 = (byte) startProcessing::center_x#7 (b Alias (byte) startProcessing::freeIdx#2 = (byte) startProcessing::freeIdx#3 (byte) startProcessing::spriteIdx#0 Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#3 Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#3 -Alias (byte*) startProcessing::screenPtr#0 = (byte*~) startProcessing::$3 -Alias (byte*) startProcessing::spriteData#0 = (byte*~) startProcessing::$6 -Alias (byte*) startProcessing::chargenData#0 = (byte*~) startProcessing::$9 +Alias (word) startProcessing::offset#0 = (word~) startProcessing::$2 +Alias (byte*) startProcessing::colPtr#0 = (byte*~) startProcessing::$3 +Alias (byte*) startProcessing::screenPtr#0 = (byte*~) startProcessing::$4 +Alias (byte*) startProcessing::spriteData#0 = (byte*~) startProcessing::$7 +Alias (byte*) startProcessing::chargenData#0 = (byte*~) startProcessing::$10 Alias (byte) startProcessing::center_x#2 = (byte) startProcessing::center_x#4 Alias (byte) startProcessing::center_y#2 = (byte) startProcessing::center_y#4 Alias (byte) startProcessing::spriteIdx#1 = (byte) startProcessing::spriteIdx#2 +Alias (byte) startProcessing::spriteCol#1 = (byte) startProcessing::spriteCol#2 Alias (byte*) startProcessing::screenPtr#1 = (byte*) startProcessing::screenPtr#2 -Alias (word) startProcessing::spriteX#0 = (word~) startProcessing::$13 -Alias (word) startProcessing::spriteY#0 = (word~) startProcessing::$17 -Alias (byte) startProcessing::spritePtr#0 = (byte~) startProcessing::$20 +Alias (word) startProcessing::spriteX#0 = (word~) startProcessing::$14 +Alias (word) startProcessing::spriteY#0 = (word~) startProcessing::$18 +Alias (byte) startProcessing::spritePtr#0 = (byte~) startProcessing::$21 Alias (word) XPOS_LEFTMOST#0 = (word~) $2 Alias (word) BORDER_XPOS_RIGHT#0 = (word~) $3 Alias (word) XPOS_RIGHTMOST#0 = (word~) $4 @@ -2383,6 +2424,7 @@ Self Phi Eliminated (byte) startProcessing::center_x#1 Self Phi Eliminated (byte) startProcessing::center_x#2 Self Phi Eliminated (byte) startProcessing::center_y#2 Self Phi Eliminated (byte) startProcessing::spriteIdx#1 +Self Phi Eliminated (byte) startProcessing::spriteCol#1 Self Phi Eliminated (byte*) startProcessing::screenPtr#1 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) getCharToProcess::screen_line#2 (byte*) getCharToProcess::screen_line#4 @@ -2396,61 +2438,62 @@ Identical Phi Values (byte) startProcessing::center_x#1 (byte) startProcessing:: Identical Phi Values (byte) startProcessing::center_x#2 (byte) startProcessing::center_x#1 Identical Phi Values (byte) startProcessing::center_y#2 (byte) startProcessing::center_y#1 Identical Phi Values (byte) startProcessing::spriteIdx#1 (byte) startProcessing::freeIdx#2 +Identical Phi Values (byte) startProcessing::spriteCol#1 (byte) startProcessing::spriteCol#0 Identical Phi Values (byte*) startProcessing::screenPtr#1 (byte*) startProcessing::screenPtr#0 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 [339] (byte~) processChars::$17 ← (byte) processChars::i#10 * (byte) 2 +Identified duplicate assignment right side [350] (byte~) processChars::$17 ← (byte) processChars::i#10 * (byte) 2 Successful SSA optimization Pass2DuplicateRValueIdentification 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 [196] if(*((byte*) startProcessing::$39 + (byte~) startProcessing::$29)!=(byte) STATUS_FREE#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$26 [200] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$27 [205] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) startProcessing::$28 [231] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 -Simple Condition (bool~) processChars::$5 [298] if(*((byte*) processChars::$41)==(byte) STATUS_FREE#0) goto processChars::@3 -Simple Condition (bool~) processChars::$34 [302] if((byte) processChars::i#1!=rangelast(0,processChars::$1)) goto processChars::@2 -Simple Condition (bool~) processChars::$7 [307] if(*((byte*) processChars::$42)!=(byte) STATUS_NEW#0) goto processChars::@4 -Simple Condition (bool~) processChars::$64 [314] if((byte) 0!=(byte~) processChars::$11) goto processChars::@5 -Simple Condition (bool~) initSquareTables::$0 [400] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [419] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [423] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [442] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) initSprites::$2 [451] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 -Simple Condition (bool~) initSprites::$3 [457] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 -Simple Condition (bool~) setupRasterIrq::$0 [468] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$2 [491] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 -Simple Condition (bool~) irqTop::$3 [498] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 -Simple Condition (bool~) irqBottom::$4 [512] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 +Simple Condition (bool~) main::$8 [103] if((byte) main::i#1!=rangelast(0,main::$7)) goto main::@3 +Simple Condition (bool~) main::$11 [122] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 +Simple Condition (bool~) getCharToProcess::$3 [145] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$7 [149] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 +Simple Condition (bool~) getCharToProcess::$6 [157] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$8 [166] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 +Simple Condition (bool~) getCharToProcess::$1 [170] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 +Simple Condition (bool~) startProcessing::$26 [198] if(*((byte*) startProcessing::$41 + (byte~) startProcessing::$30)!=(byte) STATUS_FREE#0) goto startProcessing::@3 +Simple Condition (bool~) startProcessing::$27 [202] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$24)) goto startProcessing::@2 +Simple Condition (bool~) startProcessing::$28 [207] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 +Simple Condition (bool~) startProcessing::$29 [237] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 +Simple Condition (bool~) processChars::$5 [306] if(*((byte*) processChars::$41)==(byte) STATUS_FREE#0) goto processChars::@3 +Simple Condition (bool~) processChars::$34 [310] if((byte) processChars::i#1!=rangelast(0,processChars::$1)) goto processChars::@2 +Simple Condition (bool~) processChars::$7 [315] if(*((byte*) processChars::$42)!=(byte) STATUS_NEW#0) goto processChars::@4 +Simple Condition (bool~) processChars::$66 [322] if((byte) 0!=(byte~) processChars::$11) goto processChars::@5 +Simple Condition (bool~) initSquareTables::$0 [411] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 +Simple Condition (bool~) initSquareTables::$7 [430] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 +Simple Condition (bool~) initSquareTables::$8 [434] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 +Simple Condition (bool~) initSquareTables::$15 [453] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 +Simple Condition (bool~) initSprites::$2 [462] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 +Simple Condition (bool~) initSprites::$3 [468] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 +Simple Condition (bool~) setupRasterIrq::$0 [479] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +Simple Condition (bool~) irqTop::$2 [502] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 +Simple Condition (bool~) irqTop::$3 [509] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 +Simple Condition (bool~) irqBottom::$4 [523] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting || if()-condition to two if()s [351] (bool~) processChars::$24 ← (bool~) processChars::$22 || (bool~) processChars::$23 +Rewriting || if()-condition to two if()s [362] (bool~) processChars::$24 ← (bool~) processChars::$22 || (bool~) processChars::$23 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting || if()-condition to two if()s [348] (bool~) processChars::$22 ← (bool~) processChars::$20 || (bool~) processChars::$21 +Rewriting || if()-condition to two if()s [359] (bool~) processChars::$22 ← (bool~) processChars::$20 || (bool~) processChars::$21 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting || if()-condition to two if()s [345] (bool~) processChars::$20 ← (bool~) processChars::$18 || (bool~) processChars::$19 +Rewriting || if()-condition to two if()s [356] (bool~) processChars::$20 ← (bool~) processChars::$18 || (bool~) processChars::$19 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting ! if()-condition to reversed if() [388] (bool~) processChars::$0 ← ! (bool) DEBUG#0 +Rewriting ! if()-condition to reversed if() [399] (bool~) processChars::$0 ← ! (bool) DEBUG#0 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting ! if()-condition to reversed if() [481] (bool~) irqTop::$0 ← ! (bool) DEBUG#0 +Rewriting ! if()-condition to reversed if() [492] (bool~) irqTop::$0 ← ! (bool) DEBUG#0 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting ! if()-condition to reversed if() [503] (bool~) irqBottom::$0 ← ! (bool) DEBUG#0 +Rewriting ! if()-condition to reversed if() [514] (bool~) irqBottom::$0 ← ! (bool) DEBUG#0 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting ! if()-condition to reversed if() [506] (bool~) irqBottom::$2 ← ! (bool) DEBUG#0 +Rewriting ! if()-condition to reversed if() [517] (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 [395] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [396] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [484] (void()*~) irqTop::$1 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [516] (void()*~) irqBottom::$3 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [105] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [406] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } +Constant right-side identified [407] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } +Constant right-side identified [495] (void()*~) irqTop::$1 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() +Constant right-side identified [527] (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 @@ -2529,104 +2572,107 @@ 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 [68] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } -Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [280] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 +Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [288] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 Successful SSA optimization Pass2ConstantValues -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 [389] if((const bool) DEBUG#0) goto processChars::@16 -if() condition always true - replacing block destination [468] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -if() condition always false - eliminating [482] if((const bool) DEBUG#0) goto irqTop::@2 -if() condition always false - eliminating [504] if((const bool) DEBUG#0) goto irqBottom::@3 -if() condition always false - eliminating [507] if((const bool) DEBUG#0) goto irqBottom::@4 +if() condition always true - replacing block destination [128] if(true) goto main::@5 +if() condition always true - replacing block destination [133] if(true) goto main::@11 +if() condition always false - eliminating [400] if((const bool) DEBUG#0) goto processChars::@16 +if() condition always true - replacing block destination [479] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always false - eliminating [493] if((const bool) DEBUG#0) goto irqTop::@2 +if() condition always false - eliminating [515] if((const bool) DEBUG#0) goto irqBottom::@3 +if() condition always false - eliminating [518] if((const bool) DEBUG#0) goto irqBottom::@4 Successful SSA optimization Pass2ConstantIfs -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 [229] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ -Resolved ranged comparison value [231] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 -Resolved ranged next value [417] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [419] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [440] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [442] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [455] initSprites::i#1 ← ++ initSprites::i#2 to ++ -Resolved ranged comparison value [457] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 -Resolved ranged next value [489] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [491] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 to (number) 5 -Resolved ranged next value [496] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [498] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 to (number) 8 -Resolved ranged next value [510] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [512] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 to (number) 5 -Converting *(pointer+n) to pointer[n] [179] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) -Converting *(pointer+n) to pointer[n] [217] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) -Converting *(pointer+n) to pointer[n] [293] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$40) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [298] 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] [307] 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] [310] (word) processChars::xpos#0 ← *((word*) processChars::$43) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [317] *(*((byte**) processChars::$44)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) -Converting *(pointer+n) to pointer[n] [321] (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [323] *((byte*~) processChars::$9) ← *((byte*) processChars::$46) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -Converting *(pointer+n) to pointer[n] [323] *((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] [325] *((byte*) processChars::$47) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [336] (word~) processChars::$15 ← *((word*) processChars::$48) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [342] (bool~) processChars::$18 ← *((word*) processChars::$49) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [344] (bool~) processChars::$19 ← *((word*) processChars::$50) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [347] (bool~) processChars::$21 ← *((word*) processChars::$51) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [350] (bool~) processChars::$23 ← *((word*) processChars::$52) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [355] *((byte*) processChars::$53) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [367] *((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] [367] *((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] [371] *((word*) processChars::$58) ← *((word*) processChars::$56) + *((word*) processChars::$57) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [371] *((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] [371] *((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] [380] *((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] [380] *((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] [384] *((word*) processChars::$63) ← *((word*) processChars::$61) + *((word*) processChars::$62) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [384] *((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] [384] *((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) +Resolved ranged next value [147] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ +Resolved ranged comparison value [149] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 +Resolved ranged next value [164] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ +Resolved ranged comparison value [166] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 +Resolved ranged next value [235] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ +Resolved ranged comparison value [237] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 +Resolved ranged next value [428] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ +Resolved ranged comparison value [430] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 +Resolved ranged next value [451] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ +Resolved ranged comparison value [453] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 +Resolved ranged next value [466] initSprites::i#1 ← ++ initSprites::i#2 to ++ +Resolved ranged comparison value [468] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 +Resolved ranged next value [500] irqTop::i#1 ← ++ irqTop::i#2 to ++ +Resolved ranged comparison value [502] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@3 to (number) 5 +Resolved ranged next value [507] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ +Resolved ranged comparison value [509] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@5 to (number) 8 +Resolved ranged next value [521] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ +Resolved ranged comparison value [523] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@5 to (number) 5 +Converting *(pointer+n) to pointer[n] [181] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) +Converting *(pointer+n) to pointer[n] [301] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$40) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [306] 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] [315] 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] [318] (word) processChars::xpos#0 ← *((word*) processChars::$43) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [325] *(*((byte**) processChars::$44)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) +Converting *(pointer+n) to pointer[n] [329] *((const byte*) SPRITES_COLS#0 + *((byte*) processChars::$46)) ← *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_COL) +Converting *(pointer+n) to pointer[n] [329] *((const byte*) SPRITES_COLS#0 + *((byte*) processChars::$46)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [332] (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*) processChars::$47) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [334] *((byte*~) processChars::$9) ← *((byte*) processChars::$48) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) +Converting *(pointer+n) to pointer[n] [334] *((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] [336] *((byte*) processChars::$49) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [347] (word~) processChars::$15 ← *((word*) processChars::$50) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [353] (bool~) processChars::$18 ← *((word*) processChars::$51) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [355] (bool~) processChars::$19 ← *((word*) processChars::$52) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [358] (bool~) processChars::$21 ← *((word*) processChars::$53) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [361] (bool~) processChars::$23 ← *((word*) processChars::$54) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [366] *((byte*) processChars::$55) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [378] *((word*) processChars::$57) ← *((word*) processChars::$56) + *((const word*) VXSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [378] *((word*) processChars::$57) ← *((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] [382] *((word*) processChars::$60) ← *((word*) processChars::$58) + *((word*) processChars::$59) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [382] *((word*) processChars::$60) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$59) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [382] *((word*) processChars::$60) ← *((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] [391] *((word*) processChars::$62) ← *((word*) processChars::$61) + *((const word*) VYSIN#0 + (byte~) processChars::$39) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [391] *((word*) processChars::$62) ← *((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] [395] *((word*) processChars::$65) ← *((word*) processChars::$63) + *((word*) processChars::$64) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [395] *((word*) processChars::$65) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$64) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [395] *((word*) processChars::$65) ← *((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 [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 [252] (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 [309] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [310] (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 [341] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [342] (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 [343] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [344] (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 [368] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [370] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [371] *((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 [371] *((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 [258] (word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [317] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [318] (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 [352] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [353] (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 [354] (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [355] (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 [379] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [381] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [382] *((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 [382] *((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 (struct ProcessingChar) getCharToProcess::return#0 and assignment [72] (struct ProcessingChar) getCharToProcess::return#0 ← struct-unwound {(byte) getCharToProcess::return_x#1, (byte) getCharToProcess::return_y#1, (word) getCharToProcess::return_dist#1} -Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [76] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 -Eliminating unused variable (struct ProcessingChar) getCharToProcess::return#1 and assignment [78] (struct ProcessingChar) getCharToProcess::return#1 ← struct-unwound {(byte) getCharToProcess::return_x#1, (byte) getCharToProcess::return_y#1, (word) getCharToProcess::return_dist#1} -Eliminating unused variable (byte*) processChars::$40 and assignment [157] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*) processChars::$41 and assignment [159] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (byte*) processChars::$42 and assignment [164] (byte*) processChars::$42 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$43 and assignment [166] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (byte**) processChars::$44 and assignment [170] (byte**) processChars::$44 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Eliminating unused variable (byte*) processChars::$45 and assignment [174] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*~) processChars::$9 and assignment [175] (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 [176] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Eliminating unused variable (byte*) processChars::$47 and assignment [178] (byte*) processChars::$47 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$48 and assignment [186] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -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 -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 (word*) processChars::$52 and assignment [197] (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (byte*) processChars::$53 and assignment [200] (byte*) processChars::$53 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$54 and assignment [209] (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 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$56 and assignment [212] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$57 and assignment [213] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$58 and assignment [214] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$59 and assignment [221] (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_VY -Eliminating unused variable (word*) processChars::$61 and assignment [224] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$62 and assignment [225] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$63 and assignment [226] (word*) processChars::$63 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word) startProcessing::center_dist#0 and assignment [53] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 +Eliminating unused variable (struct ProcessingChar) getCharToProcess::return#0 and assignment [74] (struct ProcessingChar) getCharToProcess::return#0 ← struct-unwound {(byte) getCharToProcess::return_x#1, (byte) getCharToProcess::return_y#1, (word) getCharToProcess::return_dist#1} +Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [78] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 +Eliminating unused variable (struct ProcessingChar) getCharToProcess::return#1 and assignment [80] (struct ProcessingChar) getCharToProcess::return#1 ← struct-unwound {(byte) getCharToProcess::return_x#1, (byte) getCharToProcess::return_y#1, (word) getCharToProcess::return_dist#1} +Eliminating unused variable (byte*) processChars::$40 and assignment [163] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*) processChars::$41 and assignment [165] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (byte*) processChars::$42 and assignment [170] (byte*) processChars::$42 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$43 and assignment [172] (word*) processChars::$43 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (byte**) processChars::$44 and assignment [176] (byte**) processChars::$44 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Eliminating unused variable (byte*) processChars::$45 and assignment [179] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Eliminating unused variable (byte*) processChars::$46 and assignment [180] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*) processChars::$47 and assignment [183] (byte*) processChars::$47 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*~) processChars::$9 and assignment [184] (byte*~) processChars::$9 ← (byte*~) processChars::$8 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Eliminating unused variable (byte*) processChars::$48 and assignment [185] (byte*) processChars::$48 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Eliminating unused variable (byte*) processChars::$49 and assignment [187] (byte*) processChars::$49 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$50 and assignment [195] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$51 and assignment [200] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$52 and assignment [202] (word*) processChars::$52 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$53 and assignment [204] (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$54 and assignment [206] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$55 and assignment [209] (byte*) processChars::$55 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$56 and assignment [218] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$57 and assignment [219] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$58 and assignment [221] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$59 and assignment [222] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$60 and assignment [223] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$61 and assignment [230] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$62 and assignment [231] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$63 and assignment [233] (word*) processChars::$63 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$64 and assignment [234] (word*) processChars::$64 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$65 and assignment [235] (word*) processChars::$65 ← (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 @@ -2687,34 +2733,34 @@ 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::$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 +Simple Condition (bool~) processChars::$18 [187] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@7 +Simple Condition (bool~) processChars::$23 [271] 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 [272] 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 [273] 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 -Constant right-side identified [52] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [54] (byte*~) main::$15 ← (const byte*) COLS#0 + (word) $3e7 -Constant right-side identified [76] (byte~) startProcessing::$23 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [114] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40 -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::$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 +Constant right-side identified [54] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [56] (byte*~) main::$15 ← (const byte*) COLS#0 + (word) $3e7 +Constant right-side identified [78] (byte~) startProcessing::$24 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [118] (byte*~) startProcessing::$19 ← (const byte*) SPRITE_DATA#0 / (byte) $40 +Constant right-side identified [143] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 +Constant right-side identified [146] (word) XPOS_RIGHTMOST#0 ← (const word) BORDER_XPOS_RIGHT#0 << (byte) 4 +Constant right-side identified [147] (byte~) $5 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 +Constant right-side identified [154] (byte~) processChars::$1 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [170] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 +Constant right-side identified [193] (byte~) processChars::$27 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8 +Constant right-side identified [200] (byte~) processChars::$31 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8 +Constant right-side identified [239] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 +Constant right-side identified [255] (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 Constant (const byte) main::$7 = NUM_PROCESSING#0-1 Constant (const byte*) main::$4 = SCREEN#0+$3e7 Constant (const byte*) main::$15 = COLS#0+$3e7 -Constant (const byte) startProcessing::$23 = NUM_PROCESSING#0-1 -Constant (const byte*) startProcessing::$18 = SPRITE_DATA#0/$40 +Constant (const byte) startProcessing::$24 = NUM_PROCESSING#0-1 +Constant (const byte*) startProcessing::$19 = SPRITE_DATA#0/$40 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 @@ -2732,27 +2778,29 @@ Constant value identified (word*)PROCESSING#0 in [25] (word*) main::$19 ← (wor Constant value identified (word*)PROCESSING#0 in [27] (word*) main::$20 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY Constant value identified (byte*)PROCESSING#0 in [29] (byte*) main::$21 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID Constant value identified (byte*)PROCESSING#0 in [31] (byte*) main::$22 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant value identified (byte*)PROCESSING#0 in [33] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant value identified (byte**)PROCESSING#0 in [35] (byte**) main::$24 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Constant value identified (byte*)PROCESSING#0 in [79] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant value identified (byte)startProcessing::$18 in [115] (byte~) startProcessing::$19 ← (byte)(const byte*) startProcessing::$18 -Constant value identified (word*)PROCESSING#0 in [120] (word*) startProcessing::$31 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 -Constant value identified (word*)PROCESSING#0 in [122] (word*) startProcessing::$32 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Constant value identified (word*)PROCESSING#0 in [124] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Constant value identified (word*)PROCESSING#0 in [126] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Constant value identified (byte*)PROCESSING#0 in [128] (byte*) startProcessing::$35 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Constant value identified (byte*)PROCESSING#0 in [130] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant value identified (byte*)PROCESSING#0 in [132] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant value identified (byte**)PROCESSING#0 in [134] (byte**) startProcessing::$38 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Constant value identified (word)$0 in [138] (word~) $1 ← (word)(const byte) $0 -Constant value identified (word)$5 in [142] (word~) $6 ← (word)(const byte) $5 +Constant value identified (byte*)PROCESSING#0 in [33] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant value identified (byte*)PROCESSING#0 in [35] (byte*) main::$24 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant value identified (byte**)PROCESSING#0 in [37] (byte**) main::$25 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant value identified (byte*)PROCESSING#0 in [81] (byte*) startProcessing::$41 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant value identified (byte)startProcessing::$19 in [119] (byte~) startProcessing::$20 ← (byte)(const byte*) startProcessing::$19 +Constant value identified (word*)PROCESSING#0 in [124] (word*) startProcessing::$32 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 +Constant value identified (word*)PROCESSING#0 in [126] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Constant value identified (word*)PROCESSING#0 in [128] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Constant value identified (word*)PROCESSING#0 in [130] (word*) startProcessing::$35 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Constant value identified (byte*)PROCESSING#0 in [132] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Constant value identified (byte*)PROCESSING#0 in [134] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Constant value identified (byte*)PROCESSING#0 in [136] (byte*) startProcessing::$38 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant value identified (byte*)PROCESSING#0 in [138] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant value identified (byte**)PROCESSING#0 in [140] (byte**) startProcessing::$40 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant value identified (word)$0 in [144] (word~) $1 ← (word)(const byte) $0 +Constant value identified (word)$5 in [148] (word~) $6 ← (word)(const byte) $5 Successful SSA optimization Pass2ConstantValues -Resolved ranged next value [37] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [38] if(main::i#1!=rangelast(0,main::$7)) goto main::@3 to (const byte) main::$7+(number) 1 -Resolved ranged next value [81] startProcessing::i#1 ← ++ startProcessing::i#2 to ++ -Resolved ranged comparison value [82] if(startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 to (const byte) startProcessing::$23+(number) 1 -Resolved ranged next value [155] processChars::i#1 ← ++ processChars::i#10 to ++ -Resolved ranged comparison value [156] if(processChars::i#1!=rangelast(0,processChars::$1)) goto processChars::@2 to (const byte) processChars::$1+(number) 1 +Resolved ranged next value [39] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [40] if(main::i#1!=rangelast(0,main::$7)) goto main::@3 to (const byte) main::$7+(number) 1 +Resolved ranged next value [83] startProcessing::i#1 ← ++ startProcessing::i#2 to ++ +Resolved ranged comparison value [84] if(startProcessing::i#1!=rangelast(0,startProcessing::$24)) goto startProcessing::@2 to (const byte) startProcessing::$24+(number) 1 +Resolved ranged next value [161] processChars::i#1 ← ++ processChars::i#10 to ++ +Resolved ranged comparison value [162] if(processChars::i#1!=rangelast(0,processChars::$1)) goto processChars::@2 to (const byte) processChars::$1+(number) 1 Eliminating unused constant (const byte) irqTop::i#0 Eliminating unused constant (const byte) irqTop::i1#0 Eliminating unused constant (const byte) irqBottom::i#0 @@ -2763,14 +2811,14 @@ Eliminating unused constant (const byte) BLUE#0 Successful SSA optimization PassNEliminateUnusedVars Adding number conversion cast (unumber) main::$7+1 in if((byte) main::i#1!=(const byte) main::$7+(number) 1) goto main::@3 Adding number conversion cast (unumber) 1 in if((byte) main::i#1!=(unumber)(const byte) main::$7+(number) 1) goto main::@3 -Adding number conversion cast (unumber) startProcessing::$23+1 in if((byte) startProcessing::i#1!=(const byte) startProcessing::$23+(number) 1) goto startProcessing::@2 -Adding number conversion cast (unumber) 1 in if((byte) startProcessing::i#1!=(unumber)(const byte) startProcessing::$23+(number) 1) goto startProcessing::@2 +Adding number conversion cast (unumber) startProcessing::$24+1 in if((byte) startProcessing::i#1!=(const byte) startProcessing::$24+(number) 1) goto startProcessing::@2 +Adding number conversion cast (unumber) 1 in if((byte) startProcessing::i#1!=(unumber)(const byte) startProcessing::$24+(number) 1) goto startProcessing::@2 Adding number conversion cast (unumber) processChars::$1+1 in if((byte) processChars::i#1!=(const byte) processChars::$1+(number) 1) goto processChars::@2 Adding number conversion cast (unumber) 1 in if((byte) processChars::i#1!=(unumber)(const byte) processChars::$1+(number) 1) goto processChars::@2 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast (const byte) main::$7+(unumber)(number) 1 Simplifying constant integer cast 1 -Simplifying constant integer cast (const byte) startProcessing::$23+(unumber)(number) 1 +Simplifying constant integer cast (const byte) startProcessing::$24+(unumber)(number) 1 Simplifying constant integer cast 1 Simplifying constant integer cast (const byte) processChars::$1+(unumber)(number) 1 Simplifying constant integer cast 1 @@ -2784,18 +2832,20 @@ Constant right-side identified [22] (word*) main::$19 ← (word*)(const struct P Constant right-side identified [24] (word*) main::$20 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY Constant right-side identified [26] (byte*) main::$21 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID Constant right-side identified [28] (byte*) main::$22 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant right-side identified [30] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant right-side identified [32] (byte**) main::$24 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Constant right-side identified [73] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant right-side identified [115] (word*) startProcessing::$32 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Constant right-side identified [117] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Constant right-side identified [119] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Constant right-side identified [121] (byte*) startProcessing::$35 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Constant right-side identified [123] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant right-side identified [125] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant right-side identified [127] (byte**) startProcessing::$38 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Constant right-side identified [134] (word) YPOS_BOTTOMMOST#0 ← (const word) $8 << (byte) 4 -Constant right-side identified [211] (byte*~) initSprites::$1 ← (const byte*) SPRITE_DATA#0 + (const byte) initSprites::$0 +Constant right-side identified [30] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant right-side identified [32] (byte*) main::$24 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant right-side identified [34] (byte**) main::$25 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant right-side identified [75] (byte*) startProcessing::$41 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant right-side identified [119] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Constant right-side identified [121] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Constant right-side identified [123] (word*) startProcessing::$35 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Constant right-side identified [125] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Constant right-side identified [127] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Constant right-side identified [129] (byte*) startProcessing::$38 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant right-side identified [131] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant right-side identified [133] (byte**) startProcessing::$40 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant right-side identified [140] (word) YPOS_BOTTOMMOST#0 ← (const word) $8 << (byte) 4 +Constant right-side identified [218] (byte*~) initSprites::$1 ← (const byte*) SPRITE_DATA#0 + (const byte) initSprites::$0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word*) main::$17 = (word*)PROCESSING#0 Constant (const word*) main::$18 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_Y @@ -2803,49 +2853,51 @@ Constant (const word*) main::$19 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGS Constant (const word*) main::$20 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VY Constant (const byte*) main::$21 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_ID Constant (const byte*) main::$22 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant (const byte*) main::$23 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant (const byte**) main::$24 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant (const byte*) main::$23 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant (const byte*) main::$24 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant (const byte**) main::$25 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant (const byte*) startProcessing::$41 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant (const byte) startProcessing::$20 = (byte)startProcessing::$19 +Constant (const word*) startProcessing::$32 = (word*)PROCESSING#0 +Constant (const word*) startProcessing::$33 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_Y +Constant (const word*) startProcessing::$34 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VX +Constant (const word*) startProcessing::$35 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VY +Constant (const byte*) startProcessing::$36 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_ID +Constant (const byte*) startProcessing::$37 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Constant (const byte*) startProcessing::$38 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_COL Constant (const byte*) startProcessing::$39 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant (const byte) startProcessing::$19 = (byte)startProcessing::$18 -Constant (const word*) startProcessing::$31 = (word*)PROCESSING#0 -Constant (const word*) startProcessing::$32 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_Y -Constant (const word*) startProcessing::$33 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VX -Constant (const word*) startProcessing::$34 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VY -Constant (const byte*) startProcessing::$35 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_ID -Constant (const byte*) startProcessing::$36 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Constant (const byte*) startProcessing::$37 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant (const byte**) startProcessing::$38 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant (const byte**) startProcessing::$40 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR Constant (const word) $1 = (word)$0 Constant (const word) $6 = (word)$5 Constant (const word) YPOS_BOTTOMMOST#0 = $8<<4 Constant (const byte*) initSprites::$1 = SPRITE_DATA#0+initSprites::$0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [112] (word) XPOS_LEFTMOST#0 ← (const word) $1 << (byte) 4 -Constant right-side identified [113] (word) YPOS_TOPMOST#0 ← (const word) $6 << (byte) 4 +Constant right-side identified [116] (word) XPOS_LEFTMOST#0 ← (const word) $1 << (byte) 4 +Constant right-side identified [117] (word) YPOS_TOPMOST#0 ← (const word) $6 << (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) XPOS_LEFTMOST#0 = $1<<4 Constant (const word) YPOS_TOPMOST#0 = $6<<4 Successful SSA optimization Pass2ConstantIdentification Rewriting multiplication to use shift and addition[17] (byte~) main::$16 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE -Rewriting multiplication to use shift [49] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [50] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift and addition[58] (word~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28 -Rewriting multiplication to use shift and addition[64] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE -Rewriting multiplication to use shift and addition[71] (word~) startProcessing::$1 ← (word~) startProcessing::$0 * (byte) $28 -Rewriting multiplication to use shift [75] (word~) startProcessing::$5 ← (word~) startProcessing::$4 * (byte) $40 -Rewriting multiplication to use shift [79] (word~) startProcessing::$8 ← (word~) startProcessing::$7 * (byte) 8 -Rewriting multiplication to use shift [92] (word~) startProcessing::$11 ← (word~) startProcessing::$10 * (byte) 8 -Rewriting multiplication to use shift [96] (word~) startProcessing::$15 ← (word~) startProcessing::$14 * (byte) 8 -Rewriting multiplication to use shift [100] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 * (byte) 8 -Rewriting multiplication to use shift and addition[102] (byte~) startProcessing::$30 ← (byte) startProcessing::freeIdx#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE -Rewriting multiplication to use shift and addition[115] (byte~) processChars::$37 ← (byte) processChars::i#10 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE -Rewriting multiplication to use shift [133] (byte~) processChars::$17 ← (byte) processChars::i#10 * (byte) 2 -Rewriting division to use shift [143] (word~) processChars::$25 ← (word) processChars::xpos#0 / (byte) 8 -Rewriting multiplication to use shift [146] (byte~) processChars::$38 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD -Rewriting division to use shift [149] (byte~) processChars::$30 ← (byte) processChars::ypos#0 / (byte) 8 -Rewriting multiplication to use shift [151] (byte~) processChars::$39 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [50] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [51] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift and addition[59] (word~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28 +Rewriting multiplication to use shift and addition[65] (byte~) startProcessing::$30 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE +Rewriting multiplication to use shift and addition[72] (word~) startProcessing::$1 ← (word~) startProcessing::$0 * (byte) $28 +Rewriting multiplication to use shift [78] (word~) startProcessing::$6 ← (word~) startProcessing::$5 * (byte) $40 +Rewriting multiplication to use shift [82] (word~) startProcessing::$9 ← (word~) startProcessing::$8 * (byte) 8 +Rewriting multiplication to use shift [95] (word~) startProcessing::$12 ← (word~) startProcessing::$11 * (byte) 8 +Rewriting multiplication to use shift [99] (word~) startProcessing::$16 ← (word~) startProcessing::$15 * (byte) 8 +Rewriting multiplication to use shift [103] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 * (byte) 8 +Rewriting multiplication to use shift and addition[105] (byte~) startProcessing::$31 ← (byte) startProcessing::freeIdx#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE +Rewriting multiplication to use shift and addition[119] (byte~) processChars::$37 ← (byte) processChars::i#10 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE +Rewriting multiplication to use shift [138] (byte~) processChars::$17 ← (byte) processChars::i#10 * (byte) 2 +Rewriting division to use shift [148] (word~) processChars::$25 ← (word) processChars::xpos#0 / (byte) 8 +Rewriting multiplication to use shift [151] (byte~) processChars::$38 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD +Rewriting division to use shift [154] (byte~) processChars::$30 ← (byte) processChars::ypos#0 / (byte) 8 +Rewriting multiplication to use shift [156] (byte~) processChars::$39 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [171] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [185] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const word) mul8u::res#0 Inlining constant with var siblings (const byte) main::i#0 @@ -2867,8 +2919,7 @@ Inlining constant with var siblings (const byte) initSquareTables::y#0 Inlining constant with var siblings (const byte) initSprites::i#0 Inlining constant with var siblings (const byte*) initSprites::sp#0 Constant inlined processChars::$31 = (const byte) BORDER_YPOS_TOP#0/(byte) 8 -Constant inlined startProcessing::$19 = (byte)(const byte*) SPRITE_DATA#0/(byte) $40 -Constant inlined startProcessing::$18 = (const byte*) SPRITE_DATA#0/(byte) $40 +Constant inlined startProcessing::$19 = (const byte*) SPRITE_DATA#0/(byte) $40 Constant inlined main::src#0 = (const byte*) SCREEN#0 Constant inlined main::$15 = (const byte*) COLS#0+(word) $3e7 Constant inlined $0 = (const byte) BORDER_XPOS_LEFT#0-(byte) 8 @@ -2883,8 +2934,8 @@ Constant inlined main::$18 = (word*)(const struct ProcessingSprite[NUM_PROCESSIN Constant inlined main::$19 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX Constant inlined processChars::numActive#0 = (byte) 0 Constant inlined getCharToProcess::closest_x#0 = (byte) 0 +Constant inlined startProcessing::$24 = (const byte) NUM_PROCESSING#0-(byte) 1 Constant inlined startProcessing::i1#0 = (byte) 0 -Constant inlined startProcessing::$23 = (const byte) NUM_PROCESSING#0-(byte) 1 Constant inlined irqTop::$1 = &interrupt(HARDWARE_ALL)(void()) irqBottom() Constant inlined initSprites::$0 = (const byte) NUM_PROCESSING#0*(byte) $40 Constant inlined initSprites::$1 = (const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40 @@ -2892,27 +2943,28 @@ Constant inlined mul8u::res#0 = (byte) 0 Constant inlined main::dst#0 = (const byte[$3e8]) SCREEN_COPY#0 Constant inlined processChars::i#0 = (byte) 0 Constant inlined initSquareTables::x#0 = (byte) 0 +Constant inlined startProcessing::$20 = (byte)(const byte*) SPRITE_DATA#0/(byte) $40 Constant inlined getCharToProcess::closest_dist#0 = (const word) NOT_FOUND#0 Constant inlined processChars::$1 = (const byte) NUM_PROCESSING#0-(byte) 1 Constant inlined initSprites::i#0 = (byte) 0 -Constant inlined startProcessing::$35 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Constant inlined startProcessing::$34 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Constant inlined startProcessing::$37 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant inlined startProcessing::$36 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Constant inlined startProcessing::$35 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Constant inlined startProcessing::$34 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Constant inlined startProcessing::$37 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Constant inlined startProcessing::$36 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID Constant inlined startProcessing::$39 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Constant inlined startProcessing::freeIdx#0 = (byte) $ff -Constant inlined startProcessing::$38 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant inlined startProcessing::$38 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL Constant inlined irqBottom::$3 = &interrupt(HARDWARE_ALL)(void()) irqTop() Constant inlined processChars::$8 = (const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 Constant inlined getCharToProcess::x#0 = (byte) 0 Constant inlined initSprites::sp#0 = (const byte*) SPRITE_DATA#0 Constant inlined getCharToProcess::closest_y#0 = (byte) 0 Constant inlined main::i#0 = (byte) 0 -Constant inlined startProcessing::$31 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 -Constant inlined startProcessing::$33 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Constant inlined startProcessing::$32 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Constant inlined main::$23 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Constant inlined main::$24 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Constant inlined startProcessing::$33 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Constant inlined startProcessing::$32 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 +Constant inlined main::$23 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL +Constant inlined main::$24 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Constant inlined main::$25 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR Constant inlined getCharToProcess::screen_line#0 = (const byte[$3e8]) SCREEN_COPY#0 Constant inlined processChars::$27 = (const byte) BORDER_XPOS_LEFT#0/(byte) 8 Constant inlined main::$20 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY @@ -2921,16 +2973,18 @@ Constant inlined main::$22 = (byte*)(const struct ProcessingSprite[NUM_PROCESSIN Constant inlined setupRasterIrq::$1 = <(const byte) RASTER_IRQ_TOP#0 Constant inlined startProcessing::i#0 = (byte) 0 Constant inlined main::$5 = (const byte*) SCREEN#0+(word) $3e8 +Constant inlined startProcessing::$40 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR Constant inlined main::$4 = (const byte*) SCREEN#0+(word) $3e7 +Constant inlined startProcessing::$41 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Constant inlined initSquareTables::y#0 = (byte) 0 Constant inlined main::$7 = (const byte) NUM_PROCESSING#0-(byte) 1 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$16 = (byte) main::$28 +Alias (byte~) main::$16 = (byte) main::$30 Alias (word~) getCharToProcess::$10 = (word) getCharToProcess::$17 -Alias (byte~) startProcessing::$29 = (byte) startProcessing::$43 -Alias (word~) startProcessing::$1 = (word) startProcessing::$46 -Alias (byte~) startProcessing::$30 = (byte) startProcessing::$50 -Alias (byte~) processChars::$37 = (byte) processChars::$68 +Alias (byte~) startProcessing::$30 = (byte) startProcessing::$46 +Alias (word~) startProcessing::$1 = (word) startProcessing::$49 +Alias (byte~) startProcessing::$31 = (byte) startProcessing::$54 +Alias (byte~) processChars::$37 = (byte) processChars::$71 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE Eliminating unused constant (const byte) SIZEOF_WORD @@ -2984,67 +3038,67 @@ Adding NOP phi() at start of processChars::@15 Adding NOP phi() at start of irqTop CALL GRAPH Calls in [] to main:8 -Calls in [main] to initSquareTables:12 initSprites:36 setupRasterIrq:38 getCharToProcess:41 startProcessing:53 -Calls in [initSquareTables] to mul8u:206 mul8u:223 -Calls in [irqBottom] to processChars:257 +Calls in [main] to initSquareTables:12 initSprites:38 setupRasterIrq:40 getCharToProcess:43 startProcessing:55 +Calls in [initSquareTables] to mul8u:213 mul8u:230 +Calls in [irqBottom] to processChars:264 Created 36 initial phi equivalence classes -Coalesced [55] main::i#3 ← main::i#1 -Coalesced [56] main::src#3 ← main::src#1 -Coalesced [57] main::dst#3 ← main::dst#1 -Coalesced [66] startProcessing::freeIdx#9 ← startProcessing::i#2 -Coalesced [84] startProcessing::chargenData#3 ← startProcessing::chargenData#0 -Coalesced [85] startProcessing::spriteData#3 ← startProcessing::spriteData#0 -Coalesced [118] startProcessing::chargenData#4 ← startProcessing::chargenData#1 -Coalesced [119] startProcessing::spriteData#4 ← startProcessing::spriteData#1 -Coalesced [120] startProcessing::i1#3 ← startProcessing::i1#1 -Not coalescing [121] startProcessing::freeIdx#7 ← startProcessing::freeIdx#2 -Not coalescing [124] startProcessing::freeIdx#8 ← startProcessing::freeIdx#6 -Coalesced [125] startProcessing::i#5 ← startProcessing::i#1 -Coalesced [128] getCharToProcess::closest_dist#11 ← getCharToProcess::closest_dist#8 -Coalesced [129] getCharToProcess::closest_x#11 ← getCharToProcess::closest_x#9 -Coalesced [130] getCharToProcess::closest_y#11 ← getCharToProcess::closest_y#9 -Coalesced [137] getCharToProcess::return_dist#7 ← getCharToProcess::dist#0 -Not coalescing [138] getCharToProcess::return_x#7 ← getCharToProcess::x#2 -Not coalescing [139] getCharToProcess::return_y#7 ← getCharToProcess::y#7 -Coalesced [155] getCharToProcess::screen_line#8 ← getCharToProcess::screen_line#1 -Coalesced [156] getCharToProcess::y#8 ← getCharToProcess::y#1 -Not coalescing [157] getCharToProcess::closest_dist#10 ← getCharToProcess::return_dist#1 -Coalesced [158] getCharToProcess::closest_x#10 ← getCharToProcess::return_x#1 -Coalesced [159] getCharToProcess::closest_y#10 ← getCharToProcess::return_y#1 -Coalesced [160] getCharToProcess::x#6 ← getCharToProcess::x#1 -Not coalescing [161] getCharToProcess::closest_dist#12 ← getCharToProcess::return_dist#1 -Coalesced (already) [162] getCharToProcess::closest_x#12 ← getCharToProcess::return_x#1 -Coalesced (already) [163] getCharToProcess::closest_y#12 ← getCharToProcess::return_y#1 -Not coalescing [164] getCharToProcess::return_dist#6 ← getCharToProcess::closest_dist#2 -Coalesced (already) [165] getCharToProcess::return_x#6 ← getCharToProcess::closest_x#7 -Coalesced (already) [166] getCharToProcess::return_y#6 ← getCharToProcess::closest_y#7 -Not coalescing [167] getCharToProcess::return_dist#5 ← getCharToProcess::closest_dist#2 -Coalesced (already) [168] getCharToProcess::return_x#5 ← getCharToProcess::closest_x#7 -Coalesced (already) [169] getCharToProcess::return_y#5 ← getCharToProcess::closest_y#7 -Coalesced [194] initSprites::i#3 ← initSprites::i#1 -Coalesced [195] initSprites::sp#3 ← initSprites::sp#1 -Coalesced [200] initSquareTables::x_dist#2 ← initSquareTables::$2 -Coalesced [204] mul8u::mb#7 ← mul8u::b#0 -Coalesced [205] mul8u::a#9 ← mul8u::a#1 -Coalesced [217] initSquareTables::y_dist#2 ← initSquareTables::$10 -Coalesced [221] mul8u::mb#6 ← mul8u::b#1 -Coalesced [222] mul8u::a#8 ← mul8u::a#2 -Coalesced [231] initSquareTables::y#7 ← initSquareTables::y#1 -Coalesced [233] initSquareTables::y_dist#1 ← initSquareTables::$12 -Coalesced [234] initSquareTables::x#7 ← initSquareTables::x#1 -Coalesced [236] initSquareTables::x_dist#1 ← initSquareTables::$4 -Coalesced [238] mul8u::a#10 ← mul8u::a#6 -Coalesced [239] mul8u::mb#8 ← mul8u::mb#0 -Coalesced [247] mul8u::res#9 ← mul8u::res#1 -Coalesced [251] mul8u::a#11 ← mul8u::a#0 -Coalesced [252] mul8u::res#7 ← mul8u::res#6 -Coalesced [253] mul8u::mb#9 ← mul8u::mb#1 -Coalesced (already) [254] mul8u::res#8 ← mul8u::res#2 -Coalesced [304] processChars::numActive#17 ← processChars::numActive#1 -Coalesced [310] processChars::i#13 ← processChars::i#1 -Coalesced [311] processChars::numActive#15 ← processChars::numActive#3 -Coalesced (already) [316] processChars::numActive#16 ← processChars::numActive#10 +Coalesced [57] main::i#3 ← main::i#1 +Coalesced [58] main::src#3 ← main::src#1 +Coalesced [59] main::dst#3 ← main::dst#1 +Coalesced [69] startProcessing::freeIdx#9 ← startProcessing::i#2 +Coalesced [89] startProcessing::chargenData#3 ← startProcessing::chargenData#0 +Coalesced [90] startProcessing::spriteData#3 ← startProcessing::spriteData#0 +Coalesced [125] startProcessing::chargenData#4 ← startProcessing::chargenData#1 +Coalesced [126] startProcessing::spriteData#4 ← startProcessing::spriteData#1 +Coalesced [127] startProcessing::i1#3 ← startProcessing::i1#1 +Not coalescing [128] startProcessing::freeIdx#7 ← startProcessing::freeIdx#2 +Not coalescing [131] startProcessing::freeIdx#8 ← startProcessing::freeIdx#6 +Coalesced [132] startProcessing::i#5 ← startProcessing::i#1 +Coalesced [135] getCharToProcess::closest_dist#11 ← getCharToProcess::closest_dist#8 +Coalesced [136] getCharToProcess::closest_x#11 ← getCharToProcess::closest_x#9 +Coalesced [137] getCharToProcess::closest_y#11 ← getCharToProcess::closest_y#9 +Coalesced [144] getCharToProcess::return_dist#7 ← getCharToProcess::dist#0 +Not coalescing [145] getCharToProcess::return_x#7 ← getCharToProcess::x#2 +Not coalescing [146] getCharToProcess::return_y#7 ← getCharToProcess::y#7 +Coalesced [162] getCharToProcess::screen_line#8 ← getCharToProcess::screen_line#1 +Coalesced [163] getCharToProcess::y#8 ← getCharToProcess::y#1 +Not coalescing [164] getCharToProcess::closest_dist#10 ← getCharToProcess::return_dist#1 +Coalesced [165] getCharToProcess::closest_x#10 ← getCharToProcess::return_x#1 +Coalesced [166] getCharToProcess::closest_y#10 ← getCharToProcess::return_y#1 +Coalesced [167] getCharToProcess::x#6 ← getCharToProcess::x#1 +Not coalescing [168] getCharToProcess::closest_dist#12 ← getCharToProcess::return_dist#1 +Coalesced (already) [169] getCharToProcess::closest_x#12 ← getCharToProcess::return_x#1 +Coalesced (already) [170] getCharToProcess::closest_y#12 ← getCharToProcess::return_y#1 +Not coalescing [171] getCharToProcess::return_dist#6 ← getCharToProcess::closest_dist#2 +Coalesced (already) [172] getCharToProcess::return_x#6 ← getCharToProcess::closest_x#7 +Coalesced (already) [173] getCharToProcess::return_y#6 ← getCharToProcess::closest_y#7 +Not coalescing [174] getCharToProcess::return_dist#5 ← getCharToProcess::closest_dist#2 +Coalesced (already) [175] getCharToProcess::return_x#5 ← getCharToProcess::closest_x#7 +Coalesced (already) [176] getCharToProcess::return_y#5 ← getCharToProcess::closest_y#7 +Coalesced [201] initSprites::i#3 ← initSprites::i#1 +Coalesced [202] initSprites::sp#3 ← initSprites::sp#1 +Coalesced [207] initSquareTables::x_dist#2 ← initSquareTables::$2 +Coalesced [211] mul8u::mb#7 ← mul8u::b#0 +Coalesced [212] mul8u::a#9 ← mul8u::a#1 +Coalesced [224] initSquareTables::y_dist#2 ← initSquareTables::$10 +Coalesced [228] mul8u::mb#6 ← mul8u::b#1 +Coalesced [229] mul8u::a#8 ← mul8u::a#2 +Coalesced [238] initSquareTables::y#7 ← initSquareTables::y#1 +Coalesced [240] initSquareTables::y_dist#1 ← initSquareTables::$12 +Coalesced [241] initSquareTables::x#7 ← initSquareTables::x#1 +Coalesced [243] initSquareTables::x_dist#1 ← initSquareTables::$4 +Coalesced [245] mul8u::a#10 ← mul8u::a#6 +Coalesced [246] mul8u::mb#8 ← mul8u::mb#0 +Coalesced [254] mul8u::res#9 ← mul8u::res#1 +Coalesced [258] mul8u::a#11 ← mul8u::a#0 +Coalesced [259] mul8u::res#7 ← mul8u::res#6 +Coalesced [260] mul8u::mb#9 ← mul8u::mb#1 +Coalesced (already) [261] mul8u::res#8 ← mul8u::res#2 +Coalesced [313] processChars::numActive#17 ← processChars::numActive#1 +Coalesced [319] processChars::i#13 ← processChars::i#1 +Coalesced [320] processChars::numActive#15 ← processChars::numActive#3 +Coalesced (already) [325] processChars::numActive#16 ← processChars::numActive#10 Coalesced down to 26 phi equivalence classes Culled Empty Block (label) @9 Culled Empty Block (label) @13 @@ -3174,430 +3228,439 @@ main::@1: scope:[main] from main main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [13] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::i#1 ) - [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 - [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 - [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 - [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 - [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 - [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 - [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 - [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 - [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 - [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 - [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 - [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 - [26] (byte) main::i#1 ← ++ (byte) main::i#2 - [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 + [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 + [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 + [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 + [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 + [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 + [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 + [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 + [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 + [22] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 + [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 + [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 + [25] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) main::$16) ← (byte) 0 + [26] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 + [27] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 + [28] (byte) main::i#1 ← ++ (byte) main::i#2 + [29] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 - [28] phi() - [29] call initSprites + [30] phi() + [31] call initSprites to:main::@8 main::@8: scope:[main] from main::@3 - [30] phi() - [31] call setupRasterIrq + [32] phi() + [33] call setupRasterIrq to:main::@4 main::@4: scope:[main] from main::@5 main::@8 - [32] phi() - [33] call getCharToProcess - [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 - [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 - [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + [34] phi() + [35] call getCharToProcess + [36] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 + [37] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 + [38] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 to:main::@9 main::@9: scope:[main] from main::@4 - [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 + [39] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + [40] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + [41] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + [42] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 to:main::@6 main::@6: scope:[main] from main::@9 - [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' + [43] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' to:main::@7 main::@7: scope:[main] from main::@6 main::@7 - [42] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) + [44] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) to:main::@7 main::@5: scope:[main] from main::@9 - [43] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 - [44] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 - [45] call startProcessing + [45] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 + [46] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 + [47] call startProcessing to:main::@4 startProcessing: scope:[startProcessing] from main::@5 - [46] phi() + [48] phi() to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8 - [47] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 ) + [49] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 ) to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 - [48] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 - [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 - [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 - [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 - [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 + [50] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) + [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 + [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 + [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 + [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 + [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 + [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9 - [54] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) - [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 + [57] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) + [58] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 - [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 - [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 - [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 - [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 - [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 - [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 - [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 - [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 - [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 - [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) - [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 - [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 - [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 + [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 + [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 + [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 + [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 + [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 + [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 + [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) + [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 + [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 + [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 + [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 + [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) + [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 + [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 + [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 asm { sei } - [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 + [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 to:startProcessing::@6 startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6 - [71] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) - [71] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) - [71] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) - [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) - [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 - [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 - [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 - [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 + [76] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) + [76] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) + [76] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) + [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) + [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 + [79] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 + [80] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 + [81] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 to:startProcessing::@7 startProcessing::@7: scope:[startProcessing] from startProcessing::@6 - [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 asm { cli } - [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 - [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 - [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 - [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 - [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 - [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 - [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 - [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 - [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 - [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 - [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 - [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 - [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 - [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 - [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 - [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 - [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 - [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 - [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c - [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 - [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 - [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 - [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 + [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 + [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 + [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 + [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 + [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 + [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 + [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 + [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 + [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 + [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 + [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 + [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 + [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 + [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 + [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 + [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 + [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 + [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 + [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 + [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c + [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 + [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 + [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 + [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 + [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@7 - [102] return + [109] return to:@return startProcessing::@8: scope:[startProcessing] from startProcessing::@4 - [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [110] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 + [111] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [112] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 to:startProcessing::@9 startProcessing::@9: scope:[startProcessing] from startProcessing::@3 - [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [113] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 getCharToProcess: scope:[getCharToProcess] from main::@4 - [107] phi() + [114] phi() to:getCharToProcess::@1 getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 - [108] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) - [108] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) - [108] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) - [108] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) - [108] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + [115] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [115] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [115] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) + [115] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [115] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) to:getCharToProcess::@2 getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 - [109] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) - [109] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) - [109] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) - [109] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) - [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + [116] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [116] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [116] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) + [116] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 to:getCharToProcess::@4 getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 - [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 - [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 - [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) - [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [118] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [119] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [120] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [121] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [122] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [123] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [117] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) - [117] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) - [117] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) - [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [124] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [124] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [124] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [125] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [126] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [127] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [128] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [129] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [131] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [132] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [133] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [134] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [135] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [130] return + [137] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [144] return + [151] return to:@return initSprites: scope:[initSprites] from main::@3 - [145] phi() + [152] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [146] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [147] *((byte*) initSprites::sp#2) ← (byte) 0 - [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [153] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [154] *((byte*) initSprites::sp#2) ← (byte) 0 + [155] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [150] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [157] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [159] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [160] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [157] return + [164] return to:@return initSquareTables: scope:[initSquareTables] from main - [158] phi() + [165] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [159] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [166] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [167] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [162] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [165] call mul8u - [166] (word) mul8u::return#2 ← (word) mul8u::res#2 + [169] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [170] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [171] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [172] call mul8u + [173] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [177] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [178] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [172] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [179] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [180] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [175] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [178] call mul8u - [179] (word) mul8u::return#3 ← (word) mul8u::res#2 + [182] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [183] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [184] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [185] call mul8u + [186] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [190] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [191] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [185] return + [192] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [194] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [188] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [188] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [195] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [195] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [189] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [189] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [189] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [196] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [196] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [196] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [197] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [191] return + [198] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [199] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [200] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [201] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [195] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [202] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [203] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [204] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [198] phi() + [205] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom - [199] phi() - [200] call processChars + [206] phi() + [207] call processChars to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [208] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@2 - [204] return + [211] return to:@return processChars: scope:[processChars] from irqBottom::@1 - [205] phi() + [212] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [206] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [206] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 - [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 - [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 - [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 - [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 - [212] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [213] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [213] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [213] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 + [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 + [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 + [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 + [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 + [219] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 + [220] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [221] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 to:processChars::@10 processChars::@10: scope:[processChars] from processChars::@1 - [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [222] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 to:processChars::@11 processChars::@11: scope:[processChars] from processChars::@10 - [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [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) - [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 + [223] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [224] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) + [226] *((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) + [227] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 to:processChars::@3 processChars::@3: scope:[processChars] from processChars::@10 processChars::@11 - [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 + [228] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [229] (byte~) processChars::$11 ← > (word) processChars::xpos#0 + [230] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 + [231] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [232] *((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 - [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 + [233] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 + [234] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 + [235] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 + [236] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [237] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 + [238] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 + [239] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@14 processChars::@14: scope:[processChars] from processChars::@5 - [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + [240] 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 - [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + [241] 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 + [242] 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::@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) + [243] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 + [244] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 + [245] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 + [247] *((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) + [248] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 + [250] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 + [252] *((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) + [253] *((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 - [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [254] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [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 + [255] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [256] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [257] 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::@2 - [249] return + [258] return to:@return 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 + [259] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [261] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [262] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [254] phi() + [263] phi() to:irqTop::@1 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 + [264] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@1 - [258] return + [267] return to:@return @@ -3630,6 +3693,7 @@ VARIABLE REGISTER WEIGHTS (word) ProcessingChar::dist (byte) ProcessingChar::x (byte) ProcessingChar::y +(byte) ProcessingSprite::col (byte) ProcessingSprite::id (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr @@ -3742,10 +3806,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$16 12.375 -(byte) main::$25 22.0 +(byte~) main::$16 12.222222222222221 (byte) main::$26 22.0 (byte) main::$27 22.0 +(byte) main::$28 22.0 +(byte) main::$29 22.0 (struct ProcessingChar~) main::$9 (word) main::center_dist (word) main::center_dist#0 22.0 @@ -3758,7 +3823,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::dst#2 11.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 4.230769230769231 +(byte) main::i#2 3.6666666666666665 (byte*) main::src (byte*) main::src#1 11.0 (byte*) main::src#2 16.5 @@ -3797,20 +3862,21 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) processChars::$37 22.0 (byte~) processChars::$38 22.0 (byte~) processChars::$39 22.0 -(byte) processChars::$65 22.0 -(byte) processChars::$66 22.0 (byte) processChars::$67 22.0 +(byte) processChars::$68 22.0 +(byte) processChars::$69 22.0 +(byte) processChars::$70 22.0 (byte) processChars::bitmask -(byte) processChars::bitmask#0 2.2916666666666665 +(byte) processChars::bitmask#0 2.2 (byte) processChars::i (byte) processChars::i#1 16.5 -(byte) processChars::i#10 1.4666666666666666 +(byte) processChars::i#10 1.4042553191489362 (byte) processChars::numActive (byte) processChars::numActive#1 22.0 -(byte) processChars::numActive#10 0.7674418604651163 +(byte) processChars::numActive#10 0.7333333333333333 (byte) processChars::numActive#3 11.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 0.3235294117647059 +(struct ProcessingSprite*) processChars::processing#0 0.3142857142857143 (byte) processChars::xchar (byte) processChars::xchar#0 22.0 (word) processChars::xpos @@ -3825,65 +3891,72 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) (word~) startProcessing::$0 3.0 (word~) startProcessing::$1 4.0 -(word~) startProcessing::$10 4.0 (word~) startProcessing::$11 4.0 (word~) startProcessing::$12 4.0 -(word~) startProcessing::$14 4.0 +(word~) startProcessing::$13 4.0 (word~) startProcessing::$15 4.0 (word~) startProcessing::$16 4.0 -(byte*~) startProcessing::$2 1.2000000000000002 -(byte~) startProcessing::$21 2.0 -(word~) startProcessing::$22 0.5714285714285714 -(byte~) startProcessing::$29 2002.0 -(byte~) startProcessing::$30 2.25 -(word~) startProcessing::$4 4.0 -(byte) startProcessing::$40 2002.0 -(byte) startProcessing::$41 2002.0 +(word~) startProcessing::$17 4.0 +(byte~) startProcessing::$22 2.0 +(word~) startProcessing::$23 0.5 +(byte~) startProcessing::$30 2002.0 +(byte~) startProcessing::$31 2.2222222222222228 (byte) startProcessing::$42 2002.0 -(word) startProcessing::$44 4.0 -(word) startProcessing::$45 4.0 -(byte) startProcessing::$47 4.0 -(byte) startProcessing::$48 4.0 -(byte) startProcessing::$49 4.0 +(byte) startProcessing::$43 2002.0 +(byte) startProcessing::$44 2002.0 +(byte) startProcessing::$45 2002.0 +(word) startProcessing::$47 4.0 +(word) startProcessing::$48 4.0 (word~) startProcessing::$5 4.0 -(word~) startProcessing::$7 4.0 +(byte) startProcessing::$50 4.0 +(byte) startProcessing::$51 4.0 +(byte) startProcessing::$52 4.0 +(byte) startProcessing::$53 4.0 +(word~) startProcessing::$6 4.0 (word~) startProcessing::$8 4.0 +(word~) startProcessing::$9 4.0 (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 0.3846153846153846 +(byte) startProcessing::center_x#0 0.30952380952380953 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 0.2619047619047619 +(byte) startProcessing::center_y#0 0.24444444444444444 (byte) startProcessing::ch (byte) startProcessing::ch#0 2.0 (byte*) startProcessing::chargenData (byte*) startProcessing::chargenData#0 1.3333333333333333 (byte*) startProcessing::chargenData#1 67.33333333333333 (byte*) startProcessing::chargenData#2 101.66666666666666 +(byte*) startProcessing::colPtr +(byte*) startProcessing::colPtr#0 4.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 29.90909090909092 -(byte) startProcessing::freeIdx#6 22.444444444444443 +(byte) startProcessing::freeIdx#2 28.0 +(byte) startProcessing::freeIdx#6 20.2 (byte~) startProcessing::freeIdx#7 202.0 (byte~) startProcessing::freeIdx#8 202.0 (byte) startProcessing::i (byte) startProcessing::i#1 1501.5 -(byte) startProcessing::i#2 1001.0000000000001 +(byte) startProcessing::i#2 858.0 (byte) startProcessing::i1 (byte) startProcessing::i1#1 151.5 (byte) startProcessing::i1#2 50.5 +(word) startProcessing::offset +(word) startProcessing::offset#0 2.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 0.1 +(byte*) startProcessing::screenPtr#0 0.14285714285714285 +(byte) startProcessing::spriteCol +(byte) startProcessing::spriteCol#0 0.0975609756097561 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 0.5714285714285714 (byte*) startProcessing::spriteData#1 50.5 (byte*) startProcessing::spriteData#2 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 0.3333333333333333 +(byte) startProcessing::spritePtr#0 0.3076923076923077 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 0.3333333333333333 +(word) startProcessing::spriteX#0 0.3076923076923077 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 0.4444444444444444 +(word) startProcessing::spriteY#0 0.4 Not consolidating phi with different size mul8u::mb#0 mul8u::b#1 Not consolidating phi with different size mul8u::mb#0 mul8u::b#0 @@ -3916,9 +3989,10 @@ Initial phi equivalence classes [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] [ processChars::i#10 processChars::i#1 ] [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#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 ] +Added variable main::$28 to zero page equivalence class [ main::$28 ] +Added variable main::$29 to zero page equivalence class [ main::$29 ] Added variable main::$16 to zero page equivalence class [ main::$16 ] Added variable getCharToProcess::return_x#0 to zero page equivalence class [ getCharToProcess::return_x#0 ] Added variable getCharToProcess::return_y#0 to zero page equivalence class [ getCharToProcess::return_y#0 ] @@ -3928,36 +4002,40 @@ Added variable main::center_y#0 to zero page equivalence class [ main::center_y# Added variable main::center_dist#0 to zero page equivalence class [ main::center_dist#0 ] Added variable startProcessing::center_x#0 to zero page equivalence class [ startProcessing::center_x#0 ] Added variable startProcessing::center_y#0 to zero page equivalence class [ startProcessing::center_y#0 ] -Added variable startProcessing::$40 to zero page equivalence class [ startProcessing::$40 ] -Added variable startProcessing::$41 to zero page equivalence class [ startProcessing::$41 ] Added variable startProcessing::$42 to zero page equivalence class [ startProcessing::$42 ] -Added variable startProcessing::$29 to zero page equivalence class [ startProcessing::$29 ] -Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ] +Added variable startProcessing::$43 to zero page equivalence class [ startProcessing::$43 ] Added variable startProcessing::$44 to zero page equivalence class [ startProcessing::$44 ] Added variable startProcessing::$45 to zero page equivalence class [ startProcessing::$45 ] -Added variable startProcessing::$1 to zero page equivalence class [ startProcessing::$1 ] -Added variable startProcessing::$2 to zero page equivalence class [ startProcessing::$2 ] -Added variable startProcessing::screenPtr#0 to zero page equivalence class [ startProcessing::screenPtr#0 ] -Added variable startProcessing::$4 to zero page equivalence class [ startProcessing::$4 ] -Added variable startProcessing::$5 to zero page equivalence class [ startProcessing::$5 ] -Added variable startProcessing::ch#0 to zero page equivalence class [ startProcessing::ch#0 ] -Added variable startProcessing::$7 to zero page equivalence class [ startProcessing::$7 ] -Added variable startProcessing::$8 to zero page equivalence class [ startProcessing::$8 ] -Added variable startProcessing::$10 to zero page equivalence class [ startProcessing::$10 ] -Added variable startProcessing::$11 to zero page equivalence class [ startProcessing::$11 ] -Added variable startProcessing::$12 to zero page equivalence class [ startProcessing::$12 ] -Added variable startProcessing::spriteX#0 to zero page equivalence class [ startProcessing::spriteX#0 ] -Added variable startProcessing::$14 to zero page equivalence class [ startProcessing::$14 ] -Added variable startProcessing::$15 to zero page equivalence class [ startProcessing::$15 ] -Added variable startProcessing::$16 to zero page equivalence class [ startProcessing::$16 ] -Added variable startProcessing::spriteY#0 to zero page equivalence class [ startProcessing::spriteY#0 ] -Added variable startProcessing::spritePtr#0 to zero page equivalence class [ startProcessing::spritePtr#0 ] -Added variable startProcessing::$21 to zero page equivalence class [ startProcessing::$21 ] -Added variable startProcessing::$22 to zero page equivalence class [ startProcessing::$22 ] +Added variable startProcessing::$30 to zero page equivalence class [ startProcessing::$30 ] +Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ] Added variable startProcessing::$47 to zero page equivalence class [ startProcessing::$47 ] Added variable startProcessing::$48 to zero page equivalence class [ startProcessing::$48 ] -Added variable startProcessing::$49 to zero page equivalence class [ startProcessing::$49 ] -Added variable startProcessing::$30 to zero page equivalence class [ startProcessing::$30 ] +Added variable startProcessing::$1 to zero page equivalence class [ startProcessing::$1 ] +Added variable startProcessing::offset#0 to zero page equivalence class [ startProcessing::offset#0 ] +Added variable startProcessing::colPtr#0 to zero page equivalence class [ startProcessing::colPtr#0 ] +Added variable startProcessing::spriteCol#0 to zero page equivalence class [ startProcessing::spriteCol#0 ] +Added variable startProcessing::screenPtr#0 to zero page equivalence class [ startProcessing::screenPtr#0 ] +Added variable startProcessing::$5 to zero page equivalence class [ startProcessing::$5 ] +Added variable startProcessing::$6 to zero page equivalence class [ startProcessing::$6 ] +Added variable startProcessing::ch#0 to zero page equivalence class [ startProcessing::ch#0 ] +Added variable startProcessing::$8 to zero page equivalence class [ startProcessing::$8 ] +Added variable startProcessing::$9 to zero page equivalence class [ startProcessing::$9 ] +Added variable startProcessing::$11 to zero page equivalence class [ startProcessing::$11 ] +Added variable startProcessing::$12 to zero page equivalence class [ startProcessing::$12 ] +Added variable startProcessing::$13 to zero page equivalence class [ startProcessing::$13 ] +Added variable startProcessing::spriteX#0 to zero page equivalence class [ startProcessing::spriteX#0 ] +Added variable startProcessing::$15 to zero page equivalence class [ startProcessing::$15 ] +Added variable startProcessing::$16 to zero page equivalence class [ startProcessing::$16 ] +Added variable startProcessing::$17 to zero page equivalence class [ startProcessing::$17 ] +Added variable startProcessing::spriteY#0 to zero page equivalence class [ startProcessing::spriteY#0 ] +Added variable startProcessing::spritePtr#0 to zero page equivalence class [ startProcessing::spritePtr#0 ] +Added variable startProcessing::$22 to zero page equivalence class [ startProcessing::$22 ] +Added variable startProcessing::$23 to zero page equivalence class [ startProcessing::$23 ] +Added variable startProcessing::$50 to zero page equivalence class [ startProcessing::$50 ] +Added variable startProcessing::$51 to zero page equivalence class [ startProcessing::$51 ] +Added variable startProcessing::$52 to zero page equivalence class [ startProcessing::$52 ] +Added variable startProcessing::$53 to zero page equivalence class [ startProcessing::$53 ] +Added variable startProcessing::$31 to zero page equivalence class [ startProcessing::$31 ] Added variable getCharToProcess::$13 to zero page equivalence class [ getCharToProcess::$13 ] Added variable getCharToProcess::$14 to zero page equivalence class [ getCharToProcess::$14 ] Added variable getCharToProcess::$9 to zero page equivalence class [ getCharToProcess::$9 ] @@ -3972,9 +4050,10 @@ 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::$65 to zero page equivalence class [ processChars::$65 ] -Added variable processChars::$66 to zero page equivalence class [ processChars::$66 ] Added variable processChars::$67 to zero page equivalence class [ processChars::$67 ] +Added variable processChars::$68 to zero page equivalence class [ processChars::$68 ] +Added variable processChars::$69 to zero page equivalence class [ processChars::$69 ] +Added variable processChars::$70 to zero page equivalence class [ processChars::$70 ] 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 ] @@ -4022,9 +4101,10 @@ Complete equivalence classes [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] [ processChars::i#10 processChars::i#1 ] [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -[ main::$25 ] [ main::$26 ] [ main::$27 ] +[ main::$28 ] +[ main::$29 ] [ main::$16 ] [ getCharToProcess::return_x#0 ] [ getCharToProcess::return_y#0 ] @@ -4034,36 +4114,40 @@ Complete equivalence classes [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] -[ startProcessing::$40 ] -[ startProcessing::$41 ] [ startProcessing::$42 ] -[ startProcessing::$29 ] -[ startProcessing::$0 ] +[ startProcessing::$43 ] [ startProcessing::$44 ] [ startProcessing::$45 ] -[ startProcessing::$1 ] -[ startProcessing::$2 ] -[ startProcessing::screenPtr#0 ] -[ startProcessing::$4 ] -[ startProcessing::$5 ] -[ startProcessing::ch#0 ] -[ startProcessing::$7 ] -[ startProcessing::$8 ] -[ startProcessing::$10 ] -[ startProcessing::$11 ] -[ startProcessing::$12 ] -[ startProcessing::spriteX#0 ] -[ startProcessing::$14 ] -[ startProcessing::$15 ] -[ startProcessing::$16 ] -[ startProcessing::spriteY#0 ] -[ startProcessing::spritePtr#0 ] -[ startProcessing::$21 ] -[ startProcessing::$22 ] +[ startProcessing::$30 ] +[ startProcessing::$0 ] [ startProcessing::$47 ] [ startProcessing::$48 ] -[ startProcessing::$49 ] -[ startProcessing::$30 ] +[ startProcessing::$1 ] +[ startProcessing::offset#0 ] +[ startProcessing::colPtr#0 ] +[ startProcessing::spriteCol#0 ] +[ startProcessing::screenPtr#0 ] +[ startProcessing::$5 ] +[ startProcessing::$6 ] +[ startProcessing::ch#0 ] +[ startProcessing::$8 ] +[ startProcessing::$9 ] +[ startProcessing::$11 ] +[ startProcessing::$12 ] +[ startProcessing::$13 ] +[ startProcessing::spriteX#0 ] +[ startProcessing::$15 ] +[ startProcessing::$16 ] +[ startProcessing::$17 ] +[ startProcessing::spriteY#0 ] +[ startProcessing::spritePtr#0 ] +[ startProcessing::$22 ] +[ startProcessing::$23 ] +[ startProcessing::$50 ] +[ startProcessing::$51 ] +[ startProcessing::$52 ] +[ startProcessing::$53 ] +[ startProcessing::$31 ] [ getCharToProcess::$13 ] [ getCharToProcess::$14 ] [ getCharToProcess::$9 ] @@ -4078,9 +4162,10 @@ Complete equivalence classes [ initSquareTables::$14 ] [ initSquareTables::$17 ] [ mul8u::$1 ] -[ processChars::$65 ] -[ processChars::$66 ] [ processChars::$67 ] +[ processChars::$68 ] +[ processChars::$69 ] +[ processChars::$70 ] [ processChars::$37 ] [ processChars::processing#0 ] [ processChars::bitmask#0 ] @@ -4127,83 +4212,89 @@ 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 [ 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 ] +Allocated zp ZP_BYTE:40 [ main::$26 ] +Allocated zp ZP_BYTE:41 [ main::$27 ] +Allocated zp ZP_BYTE:42 [ main::$28 ] +Allocated zp ZP_BYTE:43 [ main::$29 ] +Allocated zp ZP_BYTE:44 [ main::$16 ] +Allocated zp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] +Allocated zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] +Allocated zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] +Allocated zp ZP_BYTE:49 [ main::center_x#0 ] +Allocated zp ZP_BYTE:50 [ main::center_y#0 ] +Allocated zp ZP_WORD:51 [ main::center_dist#0 ] +Allocated zp ZP_BYTE:53 [ startProcessing::center_x#0 ] +Allocated zp ZP_BYTE:54 [ startProcessing::center_y#0 ] +Allocated zp ZP_BYTE:55 [ startProcessing::$42 ] +Allocated zp ZP_BYTE:56 [ startProcessing::$43 ] +Allocated zp ZP_BYTE:57 [ startProcessing::$44 ] +Allocated zp ZP_BYTE:58 [ startProcessing::$45 ] +Allocated zp ZP_BYTE:59 [ startProcessing::$30 ] +Allocated zp ZP_WORD:60 [ startProcessing::$0 ] +Allocated zp ZP_WORD:62 [ startProcessing::$47 ] +Allocated zp ZP_WORD:64 [ startProcessing::$48 ] +Allocated zp ZP_WORD:66 [ startProcessing::$1 ] +Allocated zp ZP_WORD:68 [ startProcessing::offset#0 ] +Allocated zp ZP_WORD:70 [ startProcessing::colPtr#0 ] +Allocated zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ] +Allocated zp ZP_WORD:73 [ startProcessing::screenPtr#0 ] +Allocated zp ZP_WORD:75 [ startProcessing::$5 ] +Allocated zp ZP_WORD:77 [ startProcessing::$6 ] +Allocated zp ZP_BYTE:79 [ startProcessing::ch#0 ] +Allocated zp ZP_WORD:80 [ startProcessing::$8 ] +Allocated zp ZP_WORD:82 [ startProcessing::$9 ] +Allocated zp ZP_WORD:84 [ startProcessing::$11 ] +Allocated zp ZP_WORD:86 [ startProcessing::$12 ] +Allocated zp ZP_WORD:88 [ startProcessing::$13 ] +Allocated zp ZP_WORD:90 [ startProcessing::spriteX#0 ] +Allocated zp ZP_WORD:92 [ startProcessing::$15 ] +Allocated zp ZP_WORD:94 [ startProcessing::$16 ] +Allocated zp ZP_WORD:96 [ startProcessing::$17 ] +Allocated zp ZP_WORD:98 [ startProcessing::spriteY#0 ] +Allocated zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] +Allocated zp ZP_BYTE:101 [ startProcessing::$22 ] +Allocated zp ZP_WORD:102 [ startProcessing::$23 ] +Allocated zp ZP_BYTE:104 [ startProcessing::$50 ] +Allocated zp ZP_BYTE:105 [ startProcessing::$51 ] +Allocated zp ZP_BYTE:106 [ startProcessing::$52 ] +Allocated zp ZP_BYTE:107 [ startProcessing::$53 ] +Allocated zp ZP_BYTE:108 [ startProcessing::$31 ] +Allocated zp ZP_BYTE:109 [ getCharToProcess::$13 ] +Allocated zp ZP_BYTE:110 [ getCharToProcess::$14 ] +Allocated zp ZP_WORD:111 [ getCharToProcess::$9 ] +Allocated zp ZP_WORD:113 [ getCharToProcess::$15 ] +Allocated zp ZP_WORD:115 [ getCharToProcess::$16 ] +Allocated zp ZP_WORD:117 [ getCharToProcess::$10 ] +Allocated zp ZP_WORD:119 [ getCharToProcess::$11 ] +Allocated zp ZP_WORD:121 [ mul8u::return#2 ] +Allocated zp ZP_WORD:123 [ initSquareTables::$6 ] +Allocated zp ZP_BYTE:125 [ initSquareTables::$16 ] +Allocated zp ZP_WORD:126 [ mul8u::return#3 ] +Allocated zp ZP_WORD:128 [ initSquareTables::$14 ] +Allocated zp ZP_BYTE:130 [ initSquareTables::$17 ] +Allocated zp ZP_BYTE:131 [ mul8u::$1 ] +Allocated zp ZP_BYTE:132 [ processChars::$67 ] +Allocated zp ZP_BYTE:133 [ processChars::$68 ] +Allocated zp ZP_BYTE:134 [ processChars::$69 ] +Allocated zp ZP_BYTE:135 [ processChars::$70 ] +Allocated zp ZP_BYTE:136 [ processChars::$37 ] +Allocated zp ZP_WORD:137 [ processChars::processing#0 ] +Allocated zp ZP_BYTE:139 [ processChars::bitmask#0 ] +Allocated zp ZP_WORD:140 [ processChars::xpos#0 ] +Allocated zp ZP_BYTE:142 [ processChars::$11 ] +Allocated zp ZP_BYTE:143 [ processChars::$12 ] +Allocated zp ZP_BYTE:144 [ processChars::$17 ] +Allocated zp ZP_BYTE:145 [ processChars::$14 ] +Allocated zp ZP_WORD:146 [ processChars::$15 ] +Allocated zp ZP_BYTE:148 [ processChars::ypos#0 ] +Allocated zp ZP_WORD:149 [ processChars::$25 ] +Allocated zp ZP_BYTE:151 [ processChars::$26 ] +Allocated zp ZP_BYTE:152 [ processChars::xchar#0 ] +Allocated zp ZP_BYTE:153 [ processChars::$38 ] +Allocated zp ZP_BYTE:154 [ processChars::$30 ] +Allocated zp ZP_BYTE:155 [ processChars::ychar#0 ] +Allocated zp ZP_BYTE:156 [ processChars::$39 ] +Allocated zp ZP_BYTE:157 [ processChars::$33 ] INITIAL ASM //SEG0 File Comments @@ -4218,8 +4309,9 @@ INITIAL ASM .const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6 .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8 .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_COL = $a + .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -4309,18 +4401,19 @@ bend_from_b2: bend: //SEG13 main main: { - .label _16 = $2b + .label _16 = $2c .label src = 2 .label dst = 4 .label i = 6 - .label center_x = $30 - .label center_y = $31 - .label center_dist = $32 - .label _25 = $28 - .label _26 = $29 - .label _27 = $2a + .label center_x = $31 + .label center_y = $32 + .label center_dist = $33 + .label _26 = $28 + .label _27 = $29 + .label _28 = $2a + .label _29 = $2b //SEG14 [7] call initSquareTables - //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [165] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] @@ -4379,126 +4472,133 @@ main: { jmp b2 //SEG31 main::@2 b2: - //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG32 [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _25 - //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _25 - clc - adc i sta _26 - //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG33 [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda _26 - asl - asl - sta _27 - //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _27 clc adc i + sta _27 + //SEG34 [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _27 + asl + sta _28 + //SEG35 [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _28 + clc + adc i + sta _29 + //SEG36 [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _29 + asl sta _16 - //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _16 ldx #0 tay txa sta PROCESSING,y - //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y - //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y - //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG40 [22] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y - //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG43 [25] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + lda #0 + ldy _16 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,y + //SEG44 [26] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_FREE ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 + //SEG45 [27] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 ldy _16 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda #>0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y - //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG46 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG47 [29] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b2 - //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG48 [30] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG47 main::@3 + //SEG49 main::@3 b3: - //SEG48 [29] call initSprites - //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG50 [31] call initSprites + //SEG51 [152] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + //SEG52 [32] phi from main::@3 to main::@8 [phi:main::@3->main::@8] b8_from_b3: jmp b8 - //SEG51 main::@8 + //SEG53 main::@8 b8: - //SEG52 [31] call setupRasterIrq + //SEG54 [33] call setupRasterIrq jsr setupRasterIrq - //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] + //SEG55 [34] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b4_from_b5: b4_from_b8: jmp b4 // Main loop - //SEG54 main::@4 + //SEG56 main::@4 b4: - //SEG55 [33] call getCharToProcess - //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG57 [35] call getCharToProcess + //SEG58 [114] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 + //SEG59 [36] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 lda getCharToProcess.return_x_1 sta getCharToProcess.return_x - //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 + //SEG60 [37] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 lda getCharToProcess.return_y_1 sta getCharToProcess.return_y - //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG61 [38] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda getCharToProcess.return_dist_1 sta getCharToProcess.return_dist lda getCharToProcess.return_dist_1+1 sta getCharToProcess.return_dist+1 jmp b9 - //SEG60 main::@9 + //SEG62 main::@9 b9: - //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 + //SEG63 [39] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 lda getCharToProcess.return_x sta center_x - //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 + //SEG64 [40] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 lda getCharToProcess.return_y sta center_y - //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 + //SEG65 [41] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 lda getCharToProcess.return_dist sta center_dist lda getCharToProcess.return_dist+1 sta center_dist+1 - //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG66 [42] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 @@ -4506,266 +4606,285 @@ main: { cmp #startProcessing] + //SEG74 [47] call startProcessing + //SEG75 [48] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG74 startProcessing +//SEG76 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($34) center_x, byte zeropage($35) center_y) +// startProcessing(byte zeropage($35) center_x, byte zeropage($36) center_y) startProcessing: { - .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 _0 = $3c + .label _1 = $42 + .label _5 = $4b + .label _6 = $4d + .label _8 = $50 + .label _9 = $52 + .label _11 = $54 + .label _12 = $56 + .label _13 = $58 + .label _15 = $5c + .label _16 = $5e + .label _17 = $60 + .label _22 = $65 + .label _23 = $66 + .label _30 = $3b + .label _31 = $6c + .label center_x = $35 + .label center_y = $36 .label i = 8 - .label screenPtr = $44 + .label offset = $44 + .label colPtr = $46 + .label spriteCol = $48 + .label screenPtr = $49 .label spriteData = $b - .label ch = $4a + .label ch = $4f .label chargenData = 9 .label i1 = $d - .label spriteX = $55 - .label spriteY = $5d - .label spritePtr = $5f + .label spriteX = $5a + .label spriteY = $62 + .label spritePtr = $64 .label freeIdx = 8 .label freeIdx_6 = 7 - .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 _42 = $37 + .label _43 = $38 + .label _44 = $39 + .label _45 = $3a + .label _47 = $3e + .label _48 = $40 + .label _50 = $68 + .label _51 = $69 + .label _52 = $6a + .label _53 = $6b .label freeIdx_7 = 7 - //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG77 [49] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + //SEG78 [49] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx_6 jmp b1 - //SEG77 startProcessing::@1 + //SEG79 startProcessing::@1 b1: - //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG80 [50] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG81 [50] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG82 [50] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG83 [50] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG82 startProcessing::@2 + //SEG84 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _40 - //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _40 - clc - adc i - sta _41 - //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _41 - asl - asl sta _42 - //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG86 [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda _42 clc adc i - sta _29 - //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + sta _43 + //SEG87 [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _43 + asl + sta _44 + //SEG88 [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _44 + clc + adc i + sta _45 + //SEG89 [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _45 + asl + sta _30 + //SEG90 [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 lda #STATUS_FREE - ldy _29 + ldy _30 cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 - //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG91 [57] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG92 [57] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG90 startProcessing::@4 + //SEG93 startProcessing::@4 b4: - //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG94 [58] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG92 startProcessing::@5 + //SEG95 startProcessing::@5 b5: - //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG96 [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG97 [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _44 + sta _47 lda _0+1 rol - sta _44+1 - asl _44 - rol _44+1 - //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 - lda _44 + sta _47+1 + asl _47 + rol _47+1 + //SEG98 [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 + lda _47 clc adc _0 - sta _45 - lda _44+1 + sta _48 + lda _47+1 adc _0+1 - sta _45+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _45 + sta _48+1 + //SEG99 [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _48 asl sta _1 - lda _45+1 + lda _48+1 rol sta _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2 - lda _1 - clc - adc #SCREEN - sta _2+1 - //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG100 [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz2_plus_vbuz3 lda center_x clc - adc _2 + adc _1 + sta offset + lda #0 + adc _1+1 + sta offset+1 + //SEG101 [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + lda offset + clc + adc #COLS + sta colPtr+1 + //SEG102 [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (colPtr),y + sta spriteCol + //SEG103 [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + lda offset + clc + adc #SCREEN sta screenPtr+1 - //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG104 [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx - sta _4 - lda #0 - sta _4+1 - //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6 - lda _4 - asl sta _5 - lda _4+1 - rol + lda #0 sta _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2 + //SEG105 [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 -- vwuz1=vwuz2_rol_6 lda _5 + asl + sta _6 + lda _5+1 + rol + sta _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG106 [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz2 + lda _6 clc adc #SPRITE_DATA sta spriteData+1 - //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3 - ldy center_x - lda (_2),y + //SEG107 [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (screenPtr),y sta ch - //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 + //SEG108 [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 lda ch - sta _7 - lda #0 - sta _7+1 - //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _7 - asl sta _8 - lda _7+1 - rol + lda #0 sta _8+1 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2 + //SEG109 [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _8 + asl + sta _9 + lda _8+1 + rol + sta _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG110 [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 -- pbuz1=pbuc1_plus_vwuz2 + lda _9 clc adc #CHARGEN sta chargenData+1 - //SEG106 asm { sei } + //SEG111 asm { sei } sei - //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG112 [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG113 [76] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 + //SEG114 [76] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG115 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG116 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG117 [76] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG118 [76] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG119 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG120 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG116 startProcessing::@6 + //SEG121 startProcessing::@6 b6: - //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG122 [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG123 [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -4773,54 +4892,54 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG124 [79] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 + //SEG125 [80] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG126 [81] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 bne b6_from_b6 jmp b7 - //SEG122 startProcessing::@7 + //SEG127 startProcessing::@7 b7: - //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG128 [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG124 asm { cli } + //SEG129 asm { cli } cli - //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG130 [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x - sta _10 - lda #0 - sta _10+1 - //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _10 - asl sta _11 - lda _10+1 - rol + lda #0 sta _11+1 - asl _11 - rol _11+1 - asl _11 - rol _11+1 - //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 + //SEG131 [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _11 + asl + sta _12 + lda _11+1 + rol + sta _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + //SEG132 [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_XPOS_LEFT clc - adc _11 - sta _12 + adc _12 + sta _13 lda #0 - adc _11+1 - sta _12+1 - //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 - lda _12 + adc _12+1 + sta _13+1 + //SEG133 [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 -- vwuz1=vwuz2_rol_4 + lda _13 asl sta spriteX - lda _12+1 + lda _13+1 rol sta spriteX+1 asl spriteX @@ -4829,35 +4948,35 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG134 [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y - sta _14 - lda #0 - sta _14+1 - //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _14 - asl sta _15 - lda _14+1 - rol + lda #0 sta _15+1 - asl _15 - rol _15+1 - asl _15 - rol _15+1 - //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2 + //SEG135 [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _15 + asl + sta _16 + lda _15+1 + rol + sta _16+1 + asl _16 + rol _16+1 + asl _16 + rol _16+1 + //SEG136 [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_YPOS_TOP clc - adc _15 - sta _16 + adc _16 + sta _17 lda #0 - adc _15+1 - sta _16+1 - //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4 - lda _16 + adc _16+1 + sta _17+1 + //SEG137 [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 -- vwuz1=vwuz2_rol_4 + lda _17 asl sta spriteY - lda _16+1 + lda _17+1 rol sta spriteY+1 asl spriteY @@ -4866,124 +4985,131 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG138 [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 + //SEG139 [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda freeIdx asl asl asl - sta _21 - //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuz2 - lda _21 sta _22 + //SEG140 [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 -- vwuz1=_word_vbuz2 + lda _22 + sta _23 lda #0 - sta _22+1 - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + sta _23+1 + //SEG141 [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda freeIdx asl - sta _47 - //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _47 + sta _50 + //SEG142 [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _50 clc adc freeIdx - sta _48 - //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _48 + sta _51 + //SEG143 [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _51 asl - asl - sta _49 - //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _49 + sta _52 + //SEG144 [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _52 clc adc freeIdx - sta _30 - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _30 + sta _53 + //SEG145 [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _53 + asl + sta _31 + //SEG146 [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _31 lda spriteX sta PROCESSING,y lda spriteX+1 sta PROCESSING+1,y - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _30 + //SEG147 [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _31 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y - //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _30 - lda _22 + //SEG148 [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _31 + lda _23 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y - lda _22+1 + lda _23+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y - //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2 - lda _30 + //SEG149 [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2 + lda _31 ldx #$3c tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y - //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG150 [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda freeIdx - ldy _30 + ldy _31 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG151 [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda spritePtr - ldy _30 + ldy _31 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG152 [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda spriteCol + ldy _31 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,y + //SEG153 [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_NEW - ldy _30 + ldy _31 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _30 + //SEG154 [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _31 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y jmp breturn - //SEG148 startProcessing::@return + //SEG155 startProcessing::@return breturn: - //SEG149 [102] return + //SEG156 [109] return rts - //SEG150 startProcessing::@8 + //SEG157 startProcessing::@8 b8: - //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + //SEG158 [110] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda freeIdx sta freeIdx_7 - //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG159 [49] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG160 [49] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG154 startProcessing::@3 + //SEG161 startProcessing::@3 b3: - //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG162 [111] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG163 [112] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b3 jmp b9 - //SEG157 startProcessing::@9 + //SEG164 startProcessing::@9 b9: - //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + //SEG165 [113] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda freeIdx_6 sta freeIdx jmp b4_from_b9 } -//SEG159 getCharToProcess +//SEG166 getCharToProcess // 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 = $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 _9 = $6f + .label _10 = $75 + .label _11 = $77 + .label _13 = $6d + .label _14 = $6e + .label return_x = $2d + .label return_y = $2e + .label return_dist = $2f .label x = $11 .label dist = $16 .label screen_line = $e @@ -4994,64 +5120,64 @@ getCharToProcess: { .label closest_dist = $12 .label closest_x = $14 .label closest_y = $15 - .label _15 = $6b - .label _16 = $6d + .label _15 = $71 + .label _16 = $73 .label return_dist_5 = $16 .label return_dist_6 = $16 .label return_x_7 = $14 .label return_y_7 = $15 - //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG167 [115] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG168 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG169 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG170 [115] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG171 [115] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG172 [115] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 jmp b1 - //SEG166 getCharToProcess::@1 + //SEG173 getCharToProcess::@1 b1: - //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG174 [116] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG175 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG176 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG177 [116] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG178 [116] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG172 getCharToProcess::@2 + //SEG179 getCharToProcess::@2 b2: - //SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG180 [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' beq b11 jmp b4 - //SEG174 getCharToProcess::@4 + //SEG181 getCharToProcess::@4 b4: - //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG182 [118] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _13 - //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG183 [119] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _14 - //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 + //SEG184 [120] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 ldx _13 ldy _14 lda SQUARES_X,x @@ -5061,7 +5187,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG185 [121] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -5071,34 +5197,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG179 getCharToProcess::@5 + //SEG186 getCharToProcess::@5 b5: - //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG187 [122] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x_7 - //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG188 [123] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y_7 - //SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG189 [124] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] b3_from_b11: b3_from_b12: b3_from_b5: - //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG190 [124] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG191 [124] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG192 [124] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG186 getCharToProcess::@3 + //SEG193 getCharToProcess::@3 b3: - //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG194 [125] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG195 [126] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG189 getCharToProcess::@6 + //SEG196 getCharToProcess::@6 b6: - //SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG197 [127] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -5106,16 +5232,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG198 [128] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG199 [129] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG193 getCharToProcess::@7 + //SEG200 getCharToProcess::@7 b7: - //SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG201 [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist_1 cmp #SCREEN_COPY sta _11+1 - //SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG208 [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x_1 sta (_11),y jmp breturn - //SEG202 getCharToProcess::@return + //SEG209 getCharToProcess::@return breturn: - //SEG203 [130] return + //SEG210 [137] return rts - //SEG204 getCharToProcess::@9 + //SEG211 getCharToProcess::@9 b9: - //SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG212 [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist_1 sta closest_dist lda return_dist_1+1 sta closest_dist+1 - //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG213 [115] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG214 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG215 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG216 [115] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG217 [115] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG218 [115] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG212 getCharToProcess::@10 + //SEG219 getCharToProcess::@10 b10: - //SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG220 [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist_1 sta closest_dist lda return_dist_1+1 sta closest_dist+1 - //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG221 [116] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG222 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG223 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG224 [116] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG225 [116] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG219 getCharToProcess::@12 + //SEG226 getCharToProcess::@12 b12: - //SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG227 [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist_6 lda closest_dist+1 sta return_dist_6+1 jmp b3_from_b12 - //SEG221 getCharToProcess::@11 + //SEG228 getCharToProcess::@11 b11: - //SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG229 [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist_5 lda closest_dist+1 sta return_dist_5+1 jmp b3_from_b11 } -//SEG223 setupRasterIrq +//SEG230 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG224 asm { sei } + //SEG231 asm { sei } sei - //SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG232 [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG233 [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG234 [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT jmp b1 - //SEG228 setupRasterIrq::@1 + //SEG235 setupRasterIrq::@1 b1: - //SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG236 [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp b2 - //SEG230 setupRasterIrq::@2 + //SEG237 setupRasterIrq::@2 b2: - //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG238 [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG239 [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG240 [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG234 asm { cli } + //SEG241 asm { cli } cli jmp breturn - //SEG235 setupRasterIrq::@return + //SEG242 setupRasterIrq::@return breturn: - //SEG236 [144] return + //SEG243 [151] return rts } -//SEG237 initSprites +//SEG244 initSprites // Initialize sprites initSprites: { .label sp = $18 .label i = $1a - //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG245 [153] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG246 [153] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA sta sp+1 jmp b1 // Clear sprite data - //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG247 [153] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG248 [153] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG242 initSprites::@1 + //SEG249 initSprites::@1 b1: - //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG250 [154] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG251 [155] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG252 [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -5309,281 +5435,281 @@ initSprites: { cmp #initSprites::@2] + //SEG253 [157] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 + //SEG254 [157] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Initialize sprite registers - //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG255 [157] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG256 [157] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG250 initSprites::@2 + //SEG257 initSprites::@2 b2: - //SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG258 [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #LIGHT_BLUE ldy i sta SPRITES_COLS,y - //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG259 [159] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG260 [160] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b2_from_b2 jmp b3 - //SEG254 initSprites::@3 + //SEG261 initSprites::@3 b3: - //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG262 [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG263 [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG264 [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG258 initSprites::@return + //SEG265 initSprites::@return breturn: - //SEG259 [157] return + //SEG266 [164] return rts } -//SEG260 initSquareTables +//SEG267 initSquareTables // initialize SQUARES table initSquareTables: { .label _2 = $1c .label _4 = $1c - .label _6 = $75 + .label _6 = $7b .label _10 = $1e .label _12 = $1e - .label _14 = $7a - .label _16 = $77 - .label _17 = $7c + .label _14 = $80 + .label _16 = $7d + .label _17 = $82 .label x_dist = $1c .label x = $1b .label y_dist = $1e .label y = $1d - //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG268 [166] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG269 [166] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG270 [166] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG271 [166] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG265 initSquareTables::@1 + //SEG272 initSquareTables::@1 b1: - //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG273 [167] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG267 initSquareTables::@3 + //SEG274 initSquareTables::@3 b3: - //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 + //SEG275 [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 lax x axs #$14 stx _2 - //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG276 [169] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG277 [169] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG271 initSquareTables::@4 + //SEG278 initSquareTables::@4 b4: - //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG279 [170] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.a - //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG280 [171] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.b - //SEG274 [165] call mul8u - //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG281 [172] call mul8u + //SEG282 [195] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 + //SEG283 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG284 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG285 [173] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b9 - //SEG279 initSquareTables::@9 + //SEG286 initSquareTables::@9 b9: - //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG287 [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _6 lda mul8u.return+1 sta _6+1 - //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG288 [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _16 - //SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG289 [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 ldy _16 lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG290 [177] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG291 [178] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG292 [179] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG293 [179] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG294 [179] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG295 [179] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG289 initSquareTables::@5 + //SEG296 initSquareTables::@5 b5: - //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG297 [180] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG291 initSquareTables::@7 + //SEG298 initSquareTables::@7 b7: - //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 + //SEG299 [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 lax y axs #$c stx _10 - //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG300 [182] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG301 [182] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG295 initSquareTables::@8 + //SEG302 initSquareTables::@8 b8: - //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG303 [183] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.a - //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG304 [184] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.b_1 - //SEG298 [178] call mul8u - //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG305 [185] call mul8u + //SEG306 [195] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 + //SEG307 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG308 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b_1 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG309 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b10 - //SEG303 initSquareTables::@10 + //SEG310 initSquareTables::@10 b10: - //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG311 [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _14 lda mul8u.return_3+1 sta _14+1 - //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG312 [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _17 - //SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG313 [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 ldy _17 lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG314 [190] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [191] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5_from_b10 jmp breturn - //SEG309 initSquareTables::@return + //SEG316 initSquareTables::@return breturn: - //SEG310 [185] return + //SEG317 [192] return rts - //SEG311 initSquareTables::@6 + //SEG318 initSquareTables::@6 b6: - //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG319 [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c sec sbc y sta _12 jmp b8_from_b6 - //SEG313 initSquareTables::@2 + //SEG320 initSquareTables::@2 b2: - //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG321 [194] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$14 sec sbc x sta _4 jmp b4_from_b2 } -//SEG315 mul8u +//SEG322 mul8u // 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 = $7d + .label _1 = $83 .label mb = $24 .label a = $21 .label res = $22 .label b = $20 - .label return = $73 + .label return = $79 .label b_1 = $1f - .label return_3 = $78 - //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label return_3 = $7e + //SEG323 [196] 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 - //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG324 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG325 [196] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG326 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG320 mul8u::@1 + //SEG327 mul8u::@1 b1: - //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG328 [197] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG322 mul8u::@return + //SEG329 mul8u::@return breturn: - //SEG323 [191] return + //SEG330 [198] return rts - //SEG324 mul8u::@2 + //SEG331 mul8u::@2 b2: - //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG332 [199] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG333 [200] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG327 mul8u::@4 + //SEG334 mul8u::@4 b4: - //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG335 [201] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5591,61 +5717,61 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG336 [202] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG337 [202] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG331 mul8u::@3 + //SEG338 mul8u::@3 b3: - //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG339 [203] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [204] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG341 [196] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG342 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG343 [196] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG344 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG338 irqBottom +//SEG345 irqBottom // Raster Interrupt at the bottom of the screen irqBottom: { - //SEG339 entry interrupt(HARDWARE_ALL) + //SEG346 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] + //SEG347 [206] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: jmp b1 - //SEG341 irqBottom::@1 + //SEG348 irqBottom::@1 b1: - //SEG342 [200] call processChars - //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] + //SEG349 [207] call processChars + //SEG350 [212] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] processChars_from_b1: jsr processChars jmp b2 - //SEG344 irqBottom::@2 + //SEG351 irqBottom::@2 b2: - //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [208] *((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 - //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG348 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG349 [204] return - exit interrupt(HARDWARE_ALL) + //SEG356 [211] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5654,68 +5780,72 @@ irqBottom: { ldy #00 rti } -//SEG350 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .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 _11 = $8e + .label _12 = $8f + .label _14 = $91 + .label _15 = $92 + .label _17 = $90 + .label _25 = $95 + .label _26 = $97 + .label _30 = $9a + .label _33 = $9d + .label _37 = $88 + .label _38 = $99 + .label _39 = $9c + .label processing = $89 + .label bitmask = $8b .label i = $26 - .label xpos = $85 - .label ypos = $8d - .label xchar = $91 - .label ychar = $94 + .label xpos = $8c + .label ypos = $94 + .label xchar = $98 + .label ychar = $9b .label numActive = $27 - .label _65 = $7e - .label _66 = $7f - .label _67 = $80 - //SEG351 [206] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _67 = $84 + .label _68 = $85 + .label _69 = $86 + .label _70 = $87 + //SEG358 [213] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG352 [206] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [213] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [213] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG354 [206] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [213] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //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 + //SEG362 [213] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [213] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG357 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG365 [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _65 - //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _65 - clc - adc i - 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 + //SEG366 [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 lda _67 clc adc i + sta _68 + //SEG367 [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _68 + asl + sta _69 + //SEG368 [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _69 + clc + adc i + sta _70 + //SEG369 [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda _70 + asl sta _37 - //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuz2 + //SEG370 [219] (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 - //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 + //SEG371 [220] (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 @@ -5736,23 +5866,23 @@ processChars: { bne !- !e: sta bitmask - //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 + //SEG372 [221] 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 - //SEG365 processChars::@10 + //SEG373 processChars::@10 b10: - //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 + //SEG374 [222] 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 - //SEG367 processChars::@11 + //SEG375 processChars::@11 b11: - //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG376 [223] *(*((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 @@ -5764,12 +5894,22 @@ processChars: { txa !: sta $ffff - //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG377 [224] *((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 - //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 + //SEG378 [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // Set the sprite color + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID + pha + lda (processing),y + tay + pla + sta SPRITES_COLS,y + //SEG379 [226] *((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 @@ -5779,15 +5919,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG380 [227] *((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 - //SEG372 processChars::@3 + //SEG381 processChars::@3 b3: - //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG382 [228] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -5802,40 +5942,40 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 + //SEG383 [229] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 lda xpos+1 sta _11 - //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 + //SEG384 [230] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 // Set sprite position lda #0 cmp _11 bne b4 jmp b8 - //SEG376 processChars::@8 + //SEG385 processChars::@8 b8: - //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG386 [231] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask sta _12 - //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG387 [232] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB and _12 sta SPRITES_XMSB jmp b5 - //SEG379 processChars::@5 + //SEG388 processChars::@5 b5: - //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG389 [233] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _17 - //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 + //SEG390 [234] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 lda xpos sta _14 - //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG391 [235] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuz1=vbuz2 lda _14 ldy _17 sta SPRITES_XPOS,y - //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 + //SEG392 [236] (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 _15 @@ -5850,14 +5990,14 @@ processChars: { ror _15 lsr _15+1 ror _15 - //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + //SEG393 [237] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 lda _15 sta ypos - //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG394 [238] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos ldy _17 sta SPRITES_YPOS,y - //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG395 [239] 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 @@ -5870,9 +6010,9 @@ processChars: { bcc b6 !: jmp b14 - //SEG387 processChars::@14 + //SEG396 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 + //SEG397 [240] 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 @@ -5884,9 +6024,9 @@ processChars: { bcc b6 !: jmp b13 - //SEG389 processChars::@13 + //SEG398 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 + //SEG399 [241] 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 @@ -5899,9 +6039,9 @@ processChars: { bcc b6 !: jmp b12 - //SEG391 processChars::@12 + //SEG400 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 + //SEG401 [242] 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 @@ -5914,9 +6054,9 @@ processChars: { bcc b6 !: jmp b9 - //SEG393 processChars::@9 + //SEG402 processChars::@9 b9: - //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 + //SEG403 [243] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 lda xpos+1 lsr sta _25+1 @@ -5927,18 +6067,18 @@ processChars: { ror _25 lsr _25+1 ror _25 - //SEG395 [235] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 -- vbuz1=_byte_vwuz2 + //SEG404 [244] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 -- vbuz1=_byte_vwuz2 lda _25 sta _26 - //SEG396 [236] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + //SEG405 [245] (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 - //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG406 [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda xchar asl 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 + //SEG407 [247] *((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 @@ -5949,7 +6089,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //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 + //SEG408 [248] *((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 @@ -5963,21 +6103,21 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + //SEG409 [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda ypos lsr lsr lsr sta _30 - //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + //SEG410 [250] (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 - //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG411 [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda ychar asl 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 + //SEG412 [252] *((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 @@ -5988,7 +6128,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //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 + //SEG413 [253] *((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 @@ -6001,80 +6141,80 @@ processChars: { adc (processing),y sta (processing),y jmp b7 - //SEG405 processChars::@7 + //SEG414 processChars::@7 b7: - //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG415 [254] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG407 [246] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG416 [255] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG408 [246] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG417 [255] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG409 processChars::@2 + //SEG418 processChars::@2 b2: - //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG419 [256] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG420 [257] 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 breturn - //SEG412 processChars::@return + //SEG421 processChars::@return breturn: - //SEG413 [249] return + //SEG422 [258] return rts - //SEG414 processChars::@6 + //SEG423 processChars::@6 b6: - //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG424 [259] *((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 - //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG425 [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask sta _33 - //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG426 [261] *((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 _33 sta SPRITES_ENABLE jmp b7 - //SEG418 processChars::@4 + //SEG427 processChars::@4 b4: - //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG428 [262] *((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 } -//SEG420 irqTop +//SEG429 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG421 entry interrupt(HARDWARE_ALL) + //SEG430 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 jmp b1 - //SEG422 irqTop::@1 + //SEG431 irqTop::@1 b1: - //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG432 [264] *((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 - //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG433 [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG434 [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG426 irqTop::@return + //SEG435 irqTop::@return breturn: - //SEG427 [258] return - exit interrupt(HARDWARE_ALL) + //SEG436 [267] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -6090,7 +6230,7 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill $d*NUM_PROCESSING, 0 + PROCESSING: .fill $e*NUM_PROCESSING, 0 .pc = VXSIN "VXSIN" .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 @@ -6105,347 +6245,367 @@ irqTop: { REGISTER UPLIFT POTENTIAL REGISTERS 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 +Statement [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a -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: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 -Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -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: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: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:52 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ startProcessing::center_y#0 ] +Statement [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a +Statement [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 [ main::i#2 main::$28 ] ( main:4 [ main::i#2 main::$28 ] ) always clobbers reg byte a +Statement [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 [ main::i#2 main::$29 ] ( main:4 [ main::i#2 main::$29 ] ) always clobbers reg byte a +Statement [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [19] *((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:44 [ main::$16 ] +Statement [20] *((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 [21] *((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 [22] *((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 +Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 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_COL + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [26] *((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 [27] *((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 [38] (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:45 [ getCharToProcess::return_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] +Statement [41] (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:49 [ main::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ main::center_y#0 ] +Statement [42] 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 [43] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a +Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ 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 -Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a -Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a -Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a -Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a -Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a -Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -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:52 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:53 [ startProcessing::center_y#0 ] +Statement [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$43 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$43 ] ) always clobbers reg byte a +Statement [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a +Statement [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ) always clobbers reg byte a +Statement [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a +Statement [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$47 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$47 ] ) always clobbers reg byte a +Statement [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$48 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$48 ] ) always clobbers reg byte a +Statement [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ) always clobbers reg byte a +Statement [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ) always clobbers reg byte a +Statement [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:53 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ 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 ] +Statement [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ] +Statement [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a +Statement [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ] +Statement [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a +Statement [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ) always clobbers reg byte a +Statement [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 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 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 ] -Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -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: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: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 -Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a -Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( 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 ] ) always clobbers reg byte a +Statement [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a +Statement [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ) always clobbers reg byte a +Statement [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ) always clobbers reg byte a +Statement [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] +Statement [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 ] ) always clobbers reg byte a +Statement [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$50 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$50 ] ) always clobbers reg byte a +Statement [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$51 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$51 ] ) always clobbers reg byte a +Statement [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$52 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$52 ] ) always clobbers reg byte a +Statement [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$53 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$53 ] ) always clobbers reg byte a +Statement [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Statement [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ startProcessing::$31 ] +Statement [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Statement [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:47 [ ] ) always clobbers reg byte a +Statement [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 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: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 -Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [118] (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:35 [ 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 [119] (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:35 [ 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:109 [ getCharToProcess::$13 ] +Statement [120] (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:35 [ 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 [121] 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:35 [ 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 [127] (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:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [131] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [132] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [133] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [134] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [135] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [154] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:31 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:31 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:31 [ initSprites::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] -Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [173] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -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 +Statement [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [194] (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 [201] (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:172 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:185 [ 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 [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] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [211] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ) 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 +Statement [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$68 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$68 ] ) always clobbers reg byte a +Statement [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$69 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$69 ] ) always clobbers reg byte a +Statement [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$70 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$70 ] ) always clobbers reg byte a +Statement [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ) always clobbers reg byte a +Statement [219] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [220] (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:207 [ 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 +Statement [221] 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:207 [ 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:139 [ processChars::bitmask#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:139 [ processChars::bitmask#0 ] +Statement [222] 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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [223] *(*((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:207 [ 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 +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:139 [ processChars::bitmask#0 ] +Statement [224] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [226] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [227] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [228] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [229] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a +Statement [231] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [232] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [233] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ) always clobbers reg byte a +Statement [234] (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:207 [ 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:144 [ processChars::$17 ] +Statement [236] (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:207 [ 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:144 [ processChars::$17 ] +Statement [237] (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:207 [ 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 [239] 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:207 [ 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:148 [ processChars::ypos#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:148 [ processChars::ypos#0 ] +Statement [240] 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:207 [ 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 [241] 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:207 [ 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 [242] 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:207 [ 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 [243] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a +Statement [244] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ) always clobbers reg byte a +Statement [247] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [248] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a +Statement [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ) always clobbers reg byte a +Statement [252] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [253] *((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:207 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [257] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:207 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [259] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ) always clobbers reg byte a +Statement [261] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 [ processChars::i#10 processChars::numActive#10 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [262] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [264] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [267] 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 -Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a -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 -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 -Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -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 -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 -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 -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 -Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a -Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a -Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a -Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a -Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -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 -Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -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 -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 -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 -Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a -Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a -Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( 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 ] ) always clobbers reg byte a -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 -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 -Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a -Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a -Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a -Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -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 [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 +Statement [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a +Statement [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a +Statement [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 [ main::i#2 main::$28 ] ( main:4 [ main::i#2 main::$28 ] ) always clobbers reg byte a +Statement [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 [ main::i#2 main::$29 ] ( main:4 [ main::i#2 main::$29 ] ) always clobbers reg byte a +Statement [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [19] *((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 +Statement [20] *((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 [21] *((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 [22] *((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 +Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 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_COL + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [26] *((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 [27] *((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 [38] (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 +Statement [41] (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 +Statement [42] 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 [43] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a +Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a +Statement [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$43 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$43 ] ) always clobbers reg byte a +Statement [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a +Statement [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ) always clobbers reg byte a +Statement [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a +Statement [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$47 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$47 ] ) always clobbers reg byte a +Statement [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$48 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$48 ] ) always clobbers reg byte a +Statement [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ) always clobbers reg byte a +Statement [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ) always clobbers reg byte a +Statement [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ) always clobbers reg byte a reg byte y +Statement [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a +Statement [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y +Statement [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a +Statement [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ) always clobbers reg byte a +Statement [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a +Statement [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:4::startProcessing:47 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ) always clobbers reg byte a +Statement [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:47 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ) always clobbers reg byte a +Statement [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a +Statement [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 ] ) always clobbers reg byte a +Statement [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$50 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$50 ] ) always clobbers reg byte a +Statement [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$51 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$51 ] ) always clobbers reg byte a +Statement [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$52 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$52 ] ) always clobbers reg byte a +Statement [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$53 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$53 ] ) always clobbers reg byte a +Statement [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Statement [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Statement [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$23 startProcessing::$31 ] ) always clobbers reg byte a +Statement [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$31 ] ( main:4::startProcessing:47 [ startProcessing::screenPtr#0 startProcessing::$31 ] ) always clobbers reg byte a +Statement [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:47 [ ] ) always clobbers reg byte a +Statement [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [118] (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:35 [ 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 [119] (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:35 [ 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 +Statement [120] (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:35 [ 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 [121] 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:35 [ 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 [127] (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:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [131] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [132] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [133] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [134] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [135] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:35 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:35 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:33 [ ] ) always clobbers reg byte a +Statement [154] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:31 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:31 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:31 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:31 [ ] ) always clobbers reg byte a +Statement [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a +Statement [173] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a +Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [194] (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 [199] (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:172 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:4::initSquareTables:7::mul8u:185 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [201] (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:172 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:185 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [208] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [211] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$67 ] ) always clobbers reg byte a +Statement [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$68 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$68 ] ) always clobbers reg byte a +Statement [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$69 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$69 ] ) always clobbers reg byte a +Statement [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$70 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$70 ] ) always clobbers reg byte a +Statement [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$37 ] ) always clobbers reg byte a +Statement [219] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [220] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [221] 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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [222] 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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [223] *(*((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [224] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [226] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [227] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [228] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [229] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a +Statement [231] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [232] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [233] (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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$17 ] ) always clobbers reg byte a +Statement [234] (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:207 [ 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 [236] (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:207 [ 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 [237] (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:207 [ 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 [238] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [239] 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:207 [ 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 [240] 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:207 [ 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 [241] 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:207 [ 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 [242] 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:207 [ 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 [243] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a +Statement [244] (byte~) processChars::$26 ← (byte)(word~) processChars::$25 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$38 ] ) always clobbers reg byte a +Statement [247] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [248] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a +Statement [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$39 ] ) always clobbers reg byte a +Statement [252] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [253] *((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:207 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [257] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:207 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [259] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 processChars::$33 ] ) always clobbers reg byte a +Statement [261] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 [ processChars::i#10 processChars::numActive#10 ] ( processChars:207 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [262] *((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:207 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [264] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [267] 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 , @@ -6474,91 +6634,97 @@ Potential registers zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : z 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 [ 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 , +Potential registers zp ZP_BYTE:40 [ main::$26 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ main::$27 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ main::$28 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ main::$29 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ main::$16 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:47 , +Potential registers zp ZP_BYTE:49 [ main::center_x#0 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ main::center_y#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:51 [ main::center_dist#0 ] : zp ZP_WORD:51 , +Potential registers zp ZP_BYTE:53 [ startProcessing::center_x#0 ] : zp ZP_BYTE:53 , reg byte x , +Potential registers zp ZP_BYTE:54 [ startProcessing::center_y#0 ] : zp ZP_BYTE:54 , reg byte x , +Potential registers zp ZP_BYTE:55 [ startProcessing::$42 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ startProcessing::$43 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ startProcessing::$44 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ startProcessing::$45 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ startProcessing::$30 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:60 [ startProcessing::$0 ] : zp ZP_WORD:60 , +Potential registers zp ZP_WORD:62 [ startProcessing::$47 ] : zp ZP_WORD:62 , +Potential registers zp ZP_WORD:64 [ startProcessing::$48 ] : zp ZP_WORD:64 , +Potential registers zp ZP_WORD:66 [ startProcessing::$1 ] : zp ZP_WORD:66 , +Potential registers zp ZP_WORD:68 [ startProcessing::offset#0 ] : zp ZP_WORD:68 , +Potential registers zp ZP_WORD:70 [ startProcessing::colPtr#0 ] : zp ZP_WORD:70 , +Potential registers zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ] : zp ZP_BYTE:72 , reg byte x , +Potential registers zp ZP_WORD:73 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:73 , +Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 , +Potential registers zp ZP_WORD:77 [ startProcessing::$6 ] : zp ZP_WORD:77 , +Potential registers zp ZP_BYTE:79 [ startProcessing::ch#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ startProcessing::$9 ] : 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::$13 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ startProcessing::spriteX#0 ] : 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::$17 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ startProcessing::spriteY#0 ] : zp ZP_WORD:98 , +Potential registers zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ startProcessing::$22 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:102 [ startProcessing::$23 ] : zp ZP_WORD:102 , +Potential registers zp ZP_BYTE:104 [ startProcessing::$50 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ startProcessing::$51 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ startProcessing::$52 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ startProcessing::$53 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ startProcessing::$31 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ getCharToProcess::$13 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:110 [ getCharToProcess::$14 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:111 [ getCharToProcess::$9 ] : zp ZP_WORD:111 , +Potential registers zp ZP_WORD:113 [ getCharToProcess::$15 ] : zp ZP_WORD:113 , +Potential registers zp ZP_WORD:115 [ getCharToProcess::$16 ] : zp ZP_WORD:115 , +Potential registers zp ZP_WORD:117 [ getCharToProcess::$10 ] : zp ZP_WORD:117 , +Potential registers zp ZP_WORD:119 [ getCharToProcess::$11 ] : zp ZP_WORD:119 , +Potential registers zp ZP_WORD:121 [ mul8u::return#2 ] : zp ZP_WORD:121 , +Potential registers zp ZP_WORD:123 [ initSquareTables::$6 ] : zp ZP_WORD:123 , +Potential registers zp ZP_BYTE:125 [ initSquareTables::$16 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:126 [ mul8u::return#3 ] : zp ZP_WORD:126 , +Potential registers zp ZP_WORD:128 [ initSquareTables::$14 ] : zp ZP_WORD:128 , +Potential registers zp ZP_BYTE:130 [ initSquareTables::$17 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ mul8u::$1 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ processChars::$67 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ processChars::$68 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ processChars::$69 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ processChars::$70 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ processChars::$37 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:137 [ processChars::processing#0 ] : zp ZP_WORD:137 , +Potential registers zp ZP_BYTE:139 [ processChars::bitmask#0 ] : zp ZP_BYTE:139 , +Potential registers zp ZP_WORD:140 [ processChars::xpos#0 ] : zp ZP_WORD:140 , +Potential registers zp ZP_BYTE:142 [ processChars::$11 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:143 [ processChars::$12 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:144 [ processChars::$17 ] : zp ZP_BYTE:144 , reg byte x , +Potential registers zp ZP_BYTE:145 [ processChars::$14 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:146 [ processChars::$15 ] : zp ZP_WORD:146 , +Potential registers zp ZP_BYTE:148 [ processChars::ypos#0 ] : zp ZP_BYTE:148 , reg byte x , +Potential registers zp ZP_WORD:149 [ processChars::$25 ] : zp ZP_WORD:149 , +Potential registers zp ZP_BYTE:151 [ processChars::$26 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:152 [ processChars::xchar#0 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:153 [ processChars::$38 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:154 [ processChars::$30 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:155 [ processChars::ychar#0 ] : zp ZP_BYTE:155 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:156 [ processChars::$39 ] : zp ZP_BYTE:156 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:157 [ processChars::$33 ] : zp ZP_BYTE:157 , 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: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 [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:110 [ 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:109 [ 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:45 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:113 [ getCharToProcess::$15 ] 4: zp ZP_WORD:115 [ getCharToProcess::$16 ] 4: zp ZP_WORD:117 [ getCharToProcess::$10 ] 4: zp ZP_WORD:119 [ getCharToProcess::$11 ] 3: zp ZP_WORD:111 [ getCharToProcess::$9 ] +Uplift Scope [startProcessing] 2,589.5: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:55 [ startProcessing::$42 ] 2,002: zp ZP_BYTE:56 [ startProcessing::$43 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$44 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$45 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$30 ] 222.2: 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:62 [ startProcessing::$47 ] 4: zp ZP_WORD:64 [ startProcessing::$48 ] 4: zp ZP_WORD:66 [ startProcessing::$1 ] 4: zp ZP_WORD:70 [ startProcessing::colPtr#0 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:77 [ startProcessing::$6 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$9 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:88 [ startProcessing::$13 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_WORD:96 [ startProcessing::$17 ] 4: zp ZP_BYTE:104 [ startProcessing::$50 ] 4: zp ZP_BYTE:105 [ startProcessing::$51 ] 4: zp ZP_BYTE:106 [ startProcessing::$52 ] 4: zp ZP_BYTE:107 [ startProcessing::$53 ] 3: zp ZP_WORD:60 [ startProcessing::$0 ] 2.22: zp ZP_BYTE:108 [ startProcessing::$31 ] 2: zp ZP_WORD:68 [ startProcessing::offset#0 ] 2: zp ZP_BYTE:79 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:101 [ startProcessing::$22 ] 0.5: zp ZP_WORD:102 [ startProcessing::$23 ] 0.4: zp ZP_WORD:98 [ startProcessing::spriteY#0 ] 0.31: zp ZP_BYTE:53 [ startProcessing::center_x#0 ] 0.31: zp ZP_WORD:90 [ startProcessing::spriteX#0 ] 0.31: zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] 0.24: zp ZP_BYTE:54 [ startProcessing::center_y#0 ] 0.14: zp ZP_WORD:73 [ startProcessing::screenPtr#0 ] 0.1: zp ZP_BYTE:72 [ startProcessing::spriteCol#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:131 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:121 [ mul8u::return#2 ] 22: zp ZP_WORD:126 [ mul8u::return#3 ] +Uplift Scope [processChars] 33.73: zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:132 [ processChars::$67 ] 22: zp ZP_BYTE:133 [ processChars::$68 ] 22: zp ZP_BYTE:134 [ processChars::$69 ] 22: zp ZP_BYTE:135 [ processChars::$70 ] 22: zp ZP_BYTE:136 [ processChars::$37 ] 22: zp ZP_BYTE:142 [ processChars::$11 ] 22: zp ZP_BYTE:143 [ processChars::$12 ] 22: zp ZP_BYTE:145 [ processChars::$14 ] 22: zp ZP_BYTE:151 [ processChars::$26 ] 22: zp ZP_BYTE:152 [ processChars::xchar#0 ] 22: zp ZP_BYTE:153 [ processChars::$38 ] 22: zp ZP_BYTE:154 [ processChars::$30 ] 22: zp ZP_BYTE:155 [ processChars::ychar#0 ] 22: zp ZP_BYTE:156 [ processChars::$39 ] 22: zp ZP_BYTE:157 [ processChars::$33 ] 17.9: zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:146 [ processChars::$15 ] 11: zp ZP_WORD:149 [ processChars::$25 ] 6.6: zp ZP_BYTE:144 [ processChars::$17 ] 2.75: zp ZP_BYTE:148 [ processChars::ypos#0 ] 2.2: zp ZP_BYTE:139 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:140 [ processChars::xpos#0 ] 0.31: zp ZP_WORD:137 [ 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:125 [ initSquareTables::$16 ] 22: zp ZP_BYTE:130 [ initSquareTables::$17 ] 11: zp ZP_WORD:123 [ initSquareTables::$6 ] 11: zp ZP_WORD:128 [ 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::$26 ] 22: zp ZP_BYTE:41 [ main::$27 ] 22: zp ZP_BYTE:42 [ main::$28 ] 22: zp ZP_BYTE:43 [ main::$29 ] 22: zp ZP_WORD:51 [ main::center_dist#0 ] 20.17: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.22: zp ZP_BYTE:44 [ main::$16 ] 5.5: zp ZP_BYTE:49 [ main::center_x#0 ] 5.5: zp ZP_BYTE:50 [ 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 [ProcessingChar] Uplift Scope [ProcessingSprite] @@ -6567,137 +6733,156 @@ Uplift Scope [irqTop] Uplift Scope [irqBottom] Uplift Scope [] -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 ] +Uplifting [getCharToProcess] best 296666 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:109 [ 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:45 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:113 [ getCharToProcess::$15 ] zp ZP_WORD:115 [ getCharToProcess::$16 ] zp ZP_WORD:117 [ getCharToProcess::$10 ] zp ZP_WORD:119 [ getCharToProcess::$11 ] zp ZP_WORD:111 [ getCharToProcess::$9 ] Limited combination testing to 100 combinations of 8748 possible. -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 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 ] +Uplifting [mul8u] best 295640 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:121 [ mul8u::return#2 ] zp ZP_WORD:126 [ mul8u::return#3 ] Limited combination testing to 100 combinations of 192 possible. -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 ] +Uplifting [initSquareTables] best 295480 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:125 [ initSquareTables::$16 ] zp ZP_BYTE:130 [ initSquareTables::$17 ] zp ZP_WORD:123 [ initSquareTables::$6 ] zp ZP_WORD:128 [ initSquareTables::$14 ] Limited combination testing to 100 combinations of 2304 possible. -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 [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 +Uplifting [main] best 295240 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::$26 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] zp ZP_WORD:51 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:44 [ main::$16 ] zp ZP_BYTE:49 [ main::center_x#0 ] zp ZP_BYTE:50 [ main::center_y#0 ] +Limited combination testing to 100 combinations of 20736 possible. +Uplifting [initSprites] best 295120 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [ProcessingChar] best 295120 combination +Uplifting [ProcessingSprite] best 295120 combination +Uplifting [setupRasterIrq] best 295120 combination +Uplifting [irqTop] best 295120 combination +Uplifting [irqBottom] best 295120 combination +Uplifting [] best 295120 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 270386 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 295120 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 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 ] +Uplifting [startProcessing] best 295120 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:55 [ startProcessing::$42 ] +Uplifting [startProcessing] best 289120 combination reg byte a [ startProcessing::$42 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::$43 ] +Uplifting [startProcessing] best 283120 combination reg byte a [ startProcessing::$43 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ startProcessing::$44 ] +Uplifting [startProcessing] best 277120 combination reg byte a [ startProcessing::$44 ] +Attempting to uplift remaining variables inzp ZP_BYTE:58 [ startProcessing::$45 ] +Uplifting [startProcessing] best 271120 combination reg byte a [ startProcessing::$45 ] +Attempting to uplift remaining variables inzp ZP_BYTE:59 [ startProcessing::$30 ] +Uplifting [startProcessing] best 267120 combination reg byte a [ startProcessing::$30 ] 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 266386 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 267120 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 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 ] +Uplifting [getCharToProcess] best 267120 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:109 [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 263120 combination reg byte x [ getCharToProcess::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 262386 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 263120 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 261486 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 262220 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 260586 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Uplifting [startProcessing] best 261320 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 ] +Uplifting [processChars] best 261320 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 260586 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 261320 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 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 ] +Uplifting [initSquareTables] best 261320 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:125 [ initSquareTables::$16 ] +Uplifting [initSquareTables] best 261280 combination reg byte a [ initSquareTables::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ initSquareTables::$17 ] +Uplifting [initSquareTables] best 261240 combination reg byte a [ initSquareTables::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::$67 ] +Uplifting [processChars] best 261180 combination reg byte a [ processChars::$67 ] +Attempting to uplift remaining variables inzp ZP_BYTE:133 [ processChars::$68 ] +Uplifting [processChars] best 261120 combination reg byte a [ processChars::$68 ] +Attempting to uplift remaining variables inzp ZP_BYTE:134 [ processChars::$69 ] +Uplifting [processChars] best 261060 combination reg byte a [ processChars::$69 ] +Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::$70 ] +Uplifting [processChars] best 261000 combination reg byte a [ processChars::$70 ] +Attempting to uplift remaining variables inzp ZP_BYTE:136 [ processChars::$37 ] +Uplifting [processChars] best 260940 combination reg byte a [ processChars::$37 ] +Attempting to uplift remaining variables inzp ZP_BYTE:142 [ processChars::$11 ] +Uplifting [processChars] best 260880 combination reg byte a [ processChars::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:143 [ processChars::$12 ] +Uplifting [processChars] best 260820 combination reg byte a [ processChars::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:145 [ processChars::$14 ] +Uplifting [processChars] best 260760 combination reg byte a [ processChars::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:151 [ processChars::$26 ] +Uplifting [processChars] best 260720 combination reg byte a [ processChars::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:152 [ processChars::xchar#0 ] +Uplifting [processChars] best 260660 combination reg byte a [ processChars::xchar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$38 ] +Uplifting [processChars] best 260620 combination reg byte a [ processChars::$38 ] +Attempting to uplift remaining variables inzp ZP_BYTE:154 [ processChars::$30 ] +Uplifting [processChars] best 260580 combination reg byte a [ processChars::$30 ] +Attempting to uplift remaining variables inzp ZP_BYTE:155 [ processChars::ychar#0 ] +Uplifting [processChars] best 260520 combination reg byte a [ processChars::ychar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:156 [ processChars::$39 ] +Uplifting [processChars] best 260480 combination reg byte a [ processChars::$39 ] +Attempting to uplift remaining variables inzp ZP_BYTE:157 [ processChars::$33 ] +Uplifting [processChars] best 260420 combination reg byte a [ processChars::$33 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Uplifting [main] best 259986 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 260420 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 +Uplifting [processChars] best 260420 combination zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:44 [ main::$16 ] +Uplifting [main] best 260260 combination reg byte x [ main::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 260200 combination reg byte x [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 260140 combination reg byte y [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::$17 ] +Uplifting [processChars] best 260070 combination reg byte x [ processChars::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ main::center_x#0 ] +Uplifting [main] best 260010 combination reg byte x [ main::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ main::center_y#0 ] +Uplifting [main] best 259950 combination reg byte y [ main::center_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$50 ] +Uplifting [startProcessing] best 259944 combination reg byte a [ startProcessing::$50 ] +Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$51 ] +Uplifting [startProcessing] best 259938 combination reg byte a [ startProcessing::$51 ] +Attempting to uplift remaining variables inzp ZP_BYTE:106 [ startProcessing::$52 ] +Uplifting [startProcessing] best 259932 combination reg byte a [ startProcessing::$52 ] +Attempting to uplift remaining variables inzp ZP_BYTE:107 [ startProcessing::$53 ] +Uplifting [startProcessing] best 259926 combination reg byte a [ startProcessing::$53 ] +Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::ypos#0 ] +Uplifting [processChars] best 259926 combination zp ZP_BYTE:148 [ processChars::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ startProcessing::$31 ] +Uplifting [startProcessing] best 259901 combination reg byte x [ startProcessing::$31 ] +Attempting to uplift remaining variables inzp ZP_BYTE:139 [ processChars::bitmask#0 ] +Uplifting [processChars] best 259901 combination zp ZP_BYTE:139 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 259895 combination reg byte a [ startProcessing::ch#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$22 ] +Uplifting [startProcessing] best 259889 combination reg byte a [ startProcessing::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:53 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] +Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:54 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:54 [ startProcessing::center_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ startProcessing::spriteCol#0 ] +Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:72 [ startProcessing::spriteCol#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:82 [ startProcessing::$9 ] ] - 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:77 [ startProcessing::$6 ] ] - 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:47 [ 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:121 [ 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:126 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ startProcessing::$0 ] ] with [ zp ZP_WORD:64 [ startProcessing::$48 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:66 [ startProcessing::$1 ] ] with [ zp ZP_WORD:68 [ startProcessing::offset#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:84 [ startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:88 [ startProcessing::$13 ] ] with [ zp ZP_WORD:90 [ startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:92 [ startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:96 [ startProcessing::$17 ] ] with [ zp ZP_WORD:98 [ startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:111 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:115 [ getCharToProcess::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:117 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:119 [ getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:140 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:149 [ 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::$9 ] ] 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 startProcessing::$6 ] ] 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 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:51 [ 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:123 [ 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:128 [ initSquareTables::$14 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ startProcessing::$0 startProcessing::$48 ] ] with [ zp ZP_WORD:66 [ startProcessing::$1 startProcessing::offset#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:84 [ startProcessing::$11 startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::$13 startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:92 [ startProcessing::$15 startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::$17 startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:111 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:117 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ startProcessing::$0 startProcessing::$48 startProcessing::$1 startProcessing::offset#0 ] ] with [ zp ZP_WORD:73 [ startProcessing::screenPtr#0 ] ] - 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 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$9 startProcessing::$8 ] +Allocated (was zp ZP_WORD:11) zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$6 startProcessing::$5 ] Allocated (was zp ZP_WORD:14) zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ] @@ -6712,22 +6897,23 @@ Allocated (was zp ZP_WORD:34) zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::r Allocated (was zp ZP_WORD:36) zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 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 ] +Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +Allocated (was zp ZP_WORD:60) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$48 startProcessing::$1 startProcessing::offset#0 startProcessing::screenPtr#0 ] +Allocated (was zp ZP_WORD:62) zp ZP_WORD:36 [ startProcessing::$47 ] +Allocated (was zp ZP_WORD:70) zp ZP_WORD:38 [ startProcessing::colPtr#0 ] +Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:40 [ startProcessing::spriteCol#0 ] +Allocated (was zp ZP_WORD:84) zp ZP_WORD:41 [ startProcessing::$11 startProcessing::$12 startProcessing::$13 startProcessing::spriteX#0 ] +Allocated (was zp ZP_WORD:92) zp ZP_WORD:43 [ startProcessing::$15 startProcessing::$16 startProcessing::$17 startProcessing::spriteY#0 ] +Allocated (was zp ZP_BYTE:100) zp ZP_BYTE:45 [ startProcessing::spritePtr#0 ] +Allocated (was zp ZP_WORD:102) zp ZP_WORD:46 [ startProcessing::$23 ] +Allocated (was zp ZP_WORD:111) zp ZP_WORD:48 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +Allocated (was zp ZP_WORD:113) zp ZP_WORD:50 [ getCharToProcess::$15 ] +Allocated (was zp ZP_WORD:137) zp ZP_WORD:52 [ processChars::processing#0 ] +Allocated (was zp ZP_BYTE:139) zp ZP_BYTE:54 [ processChars::bitmask#0 ] +Allocated (was zp ZP_WORD:140) zp ZP_WORD:55 [ processChars::xpos#0 processChars::$25 ] +Allocated (was zp ZP_WORD:146) zp ZP_WORD:57 [ processChars::$15 ] +Allocated (was zp ZP_BYTE:148) zp ZP_BYTE:59 [ processChars::ypos#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6742,8 +6928,9 @@ ASSEMBLER BEFORE OPTIMIZATION .const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6 .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8 .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_COL = $a + .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -6838,7 +7025,7 @@ main: { .label i = 6 .label center_dist = $14 //SEG14 [7] call initSquareTables - //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [165] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] @@ -6897,98 +7084,102 @@ main: { jmp b2 //SEG31 main::@2 b2: - //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG32 [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG34 [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG35 [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i + //SEG36 [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 -- vbuxx=vbuaa_rol_1 + asl tax - //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x lda #0 sta PROCESSING+1,x - //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG40 [22] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG43 [25] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + lda #0 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x + //SEG44 [26] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG45 [27] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda #>0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG46 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG47 [29] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b2 - //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG48 [30] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG47 main::@3 + //SEG49 main::@3 b3: - //SEG48 [29] call initSprites - //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG50 [31] call initSprites + //SEG51 [152] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + //SEG52 [32] phi from main::@3 to main::@8 [phi:main::@3->main::@8] b8_from_b3: jmp b8 - //SEG51 main::@8 + //SEG53 main::@8 b8: - //SEG52 [31] call setupRasterIrq + //SEG54 [33] call setupRasterIrq jsr setupRasterIrq - //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] + //SEG55 [34] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b4_from_b5: b4_from_b8: jmp b4 // Main loop - //SEG54 main::@4 + //SEG56 main::@4 b4: - //SEG55 [33] call getCharToProcess - //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG57 [35] call getCharToProcess + //SEG58 [114] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG59 [36] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG60 [37] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG61 [38] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 jmp b9 - //SEG60 main::@9 + //SEG62 main::@9 b9: - //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG63 [39] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG64 [40] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG65 [41] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG66 [42] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 @@ -6996,173 +7187,188 @@ main: { cmp #startProcessing] + //SEG74 [47] call startProcessing + //SEG75 [48] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG74 startProcessing +//SEG76 startProcessing // Start processing a char - by inserting it into the PROCESSING array // startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) startProcessing: { .label _0 = $22 .label _1 = $22 - .label _2 = $22 - .label _4 = $a .label _5 = $a - .label _7 = 8 + .label _6 = $a .label _8 = 8 - .label _10 = $28 - .label _11 = $28 - .label _12 = $28 - .label _14 = $2a - .label _15 = $2a - .label _16 = $2a - .label _22 = $2d + .label _9 = 8 + .label _11 = $29 + .label _12 = $29 + .label _13 = $29 + .label _15 = $2b + .label _16 = $2b + .label _17 = $2b + .label _23 = $2e .label center_x = $20 .label center_y = $21 .label i = 7 - .label screenPtr = $26 + .label offset = $22 + .label colPtr = $26 + .label spriteCol = $28 + .label screenPtr = $22 .label spriteData = $a .label chargenData = 8 - .label spriteX = $28 - .label spriteY = $2a - .label spritePtr = $2c + .label spriteX = $29 + .label spriteY = $2b + .label spritePtr = $2d .label freeIdx = 7 - .label _44 = $24 - .label _45 = $22 - //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label _47 = $24 + .label _48 = $22 + //SEG77 [49] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + //SEG78 [49] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff jmp b1 - //SEG77 startProcessing::@1 + //SEG79 startProcessing::@1 b1: - //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG80 [50] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG81 [50] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG82 [50] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG83 [50] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG82 startProcessing::@2 + //SEG84 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG87 [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG88 [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG89 [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG90 [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 - //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG91 [57] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG92 [57] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG90 startProcessing::@4 + //SEG93 startProcessing::@4 b4: - //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG94 [58] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG92 startProcessing::@5 + //SEG95 startProcessing::@5 b5: - //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG96 [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG97 [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _44 + sta _47 lda _0+1 rol - sta _44+1 - asl _44 - rol _44+1 - //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _45 + sta _47+1 + asl _47 + rol _47+1 + //SEG98 [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _48 clc - adc _44 - sta _45 - lda _45+1 - adc _44+1 - sta _45+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _47 + sta _48 + lda _48+1 + adc _47+1 + sta _48+1 + //SEG99 [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 - clc - lda _2 - adc #SCREEN - sta _2+1 - //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG100 [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 lda center_x clc - adc _2 + adc offset + sta offset + bcc !+ + inc offset+1 + !: + //SEG101 [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + lda offset + clc + adc #COLS + sta colPtr+1 + //SEG102 [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (colPtr),y + sta spriteCol + //SEG103 [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 + clc + lda screenPtr + adc #SCREEN sta screenPtr+1 - //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG104 [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx - sta _4 + sta _5 lda #0 - sta _4+1 - //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + sta _5+1 + //SEG105 [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 -- vwuz1=vwuz1_rol_6 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG106 [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 - ldy center_x - lda (_2),y - //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa - sta _7 + //SEG107 [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 + ldy #0 + lda (screenPtr),y + //SEG108 [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + sta _8 lda #0 - sta _7+1 - //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + sta _8+1 + //SEG109 [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG110 [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG106 asm { sei } + //SEG111 asm { sei } sei - //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG112 [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG113 [76] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG114 [76] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG115 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG116 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG117 [76] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG118 [76] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG119 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG120 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG116 startProcessing::@6 + //SEG121 startProcessing::@6 b6: - //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG122 [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG123 [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -7225,45 +7431,45 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG124 [79] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG125 [80] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG126 [81] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b6 jmp b7 - //SEG122 startProcessing::@7 + //SEG127 startProcessing::@7 b7: - //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG128 [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG124 asm { cli } + //SEG129 asm { cli } cli - //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG130 [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x - sta _10 + sta _11 lda #0 - sta _10+1 - //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _11 - rol _11+1 - asl _11 - rol _11+1 - asl _11 - rol _11+1 - //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + sta _11+1 + //SEG131 [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + //SEG132 [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc - adc _12 - sta _12 + adc _13 + sta _13 bcc !+ - inc _12+1 + inc _13+1 !: - //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG133 [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -7272,27 +7478,27 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG134 [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y - sta _14 + sta _15 lda #0 - sta _14+1 - //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _15 - rol _15+1 - asl _15 - rol _15+1 - asl _15 - rol _15+1 - //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + sta _15+1 + //SEG135 [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _16 + rol _16+1 + asl _16 + rol _16+1 + asl _16 + rol _16+1 + //SEG136 [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc - adc _16 - sta _16 + adc _17 + sta _17 bcc !+ - inc _16+1 + inc _17+1 !: - //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG137 [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -7301,101 +7507,105 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG138 [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG139 [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 lda freeIdx asl asl asl - //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa - sta _22 + //SEG140 [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 -- vwuz1=_word_vbuaa + sta _23 lda #0 - sta _22+1 - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + sta _23+1 + //SEG141 [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda freeIdx asl - //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG142 [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG143 [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG144 [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx + //SEG145 [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 -- vbuxx=vbuaa_rol_1 + asl tax - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG146 [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG147 [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1 - lda _22 + //SEG148 [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _23 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda _22+1 + lda _23+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG149 [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG150 [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG151 [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG152 [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 + lda spriteCol + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x + //SEG153 [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG154 [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x jmp breturn - //SEG148 startProcessing::@return + //SEG155 startProcessing::@return breturn: - //SEG149 [102] return + //SEG156 [109] return rts - //SEG150 startProcessing::@8 + //SEG157 startProcessing::@8 b8: - //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG158 [110] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG159 [49] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG160 [49] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG154 startProcessing::@3 + //SEG161 startProcessing::@3 b3: - //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG162 [111] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG163 [112] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b3 jmp b9 - //SEG157 startProcessing::@9 + //SEG164 startProcessing::@9 b9: - //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG165 [113] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4_from_b9 } -//SEG159 getCharToProcess +//SEG166 getCharToProcess // 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 = $2f - .label _10 = $2f - .label _11 = $2f + .label _9 = $30 + .label _10 = $30 + .label _11 = $30 .label return_dist = $14 .label x = $f .label dist = $14 @@ -7406,59 +7616,59 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $31 - .label _16 = $2f - //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + .label _15 = $32 + .label _16 = $30 + //SEG167 [115] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG168 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG169 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG170 [115] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG171 [115] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG172 [115] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 jmp b1 - //SEG166 getCharToProcess::@1 + //SEG173 getCharToProcess::@1 b1: - //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG174 [116] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG175 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG176 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG177 [116] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG178 [116] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG172 getCharToProcess::@2 + //SEG179 getCharToProcess::@2 b2: - //SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG180 [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' beq b11 jmp b4 - //SEG174 getCharToProcess::@4 + //SEG181 getCharToProcess::@4 b4: - //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG182 [118] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda x asl tax - //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG183 [119] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //SEG184 [120] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -7467,7 +7677,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG185 [121] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -7477,34 +7687,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG179 getCharToProcess::@5 + //SEG186 getCharToProcess::@5 b5: - //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG187 [122] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG188 [123] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG189 [124] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] b3_from_b11: b3_from_b12: b3_from_b5: - //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG190 [124] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG191 [124] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG192 [124] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG186 getCharToProcess::@3 + //SEG193 getCharToProcess::@3 b3: - //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG194 [125] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG195 [126] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG189 getCharToProcess::@6 + //SEG196 getCharToProcess::@6 b6: - //SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG197 [127] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -7512,16 +7722,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG198 [128] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG199 [129] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG193 getCharToProcess::@7 + //SEG200 getCharToProcess::@7 b7: - //SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG201 [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist cmp #SCREEN_COPY sta _11+1 - //SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG208 [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x sta (_11),y jmp breturn - //SEG202 getCharToProcess::@return + //SEG209 getCharToProcess::@return breturn: - //SEG203 [130] return + //SEG210 [137] return rts - //SEG204 getCharToProcess::@9 + //SEG211 getCharToProcess::@9 b9: - //SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG212 [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG213 [115] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG214 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG215 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG216 [115] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG217 [115] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG218 [115] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG212 getCharToProcess::@10 + //SEG219 getCharToProcess::@10 b10: - //SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG220 [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG221 [116] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG222 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG223 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG224 [116] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG225 [116] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG219 getCharToProcess::@12 + //SEG226 getCharToProcess::@12 b12: - //SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG227 [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3_from_b12 - //SEG221 getCharToProcess::@11 + //SEG228 getCharToProcess::@11 b11: - //SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG229 [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3_from_b11 } -//SEG223 setupRasterIrq +//SEG230 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG224 asm { sei } + //SEG231 asm { sei } sei - //SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG232 [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG233 [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG234 [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT jmp b1 - //SEG228 setupRasterIrq::@1 + //SEG235 setupRasterIrq::@1 b1: - //SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG236 [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp b2 - //SEG230 setupRasterIrq::@2 + //SEG237 setupRasterIrq::@2 b2: - //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG238 [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG239 [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG240 [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG234 asm { cli } + //SEG241 asm { cli } cli jmp breturn - //SEG235 setupRasterIrq::@return + //SEG242 setupRasterIrq::@return breturn: - //SEG236 [144] return + //SEG243 [151] return rts } -//SEG237 initSprites +//SEG244 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG245 [153] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG246 [153] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA sta sp+1 jmp b1 // Clear sprite data - //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG247 [153] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG248 [153] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG242 initSprites::@1 + //SEG249 initSprites::@1 b1: - //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG250 [154] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG251 [155] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG252 [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -7710,234 +7920,234 @@ initSprites: { cmp #initSprites::@2] + //SEG253 [157] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG254 [157] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 // Initialize sprite registers - //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG255 [157] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG256 [157] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG250 initSprites::@2 + //SEG257 initSprites::@2 b2: - //SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG258 [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #LIGHT_BLUE sta SPRITES_COLS,x - //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG259 [159] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG260 [160] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG254 initSprites::@3 + //SEG261 initSprites::@3 b3: - //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG262 [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG263 [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG264 [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG258 initSprites::@return + //SEG265 initSprites::@return breturn: - //SEG259 [157] return + //SEG266 [164] return rts } -//SEG260 initSquareTables +//SEG267 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG268 [166] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG269 [166] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG270 [166] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG271 [166] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG265 initSquareTables::@1 + //SEG272 initSquareTables::@1 b1: - //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG273 [167] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG267 initSquareTables::@3 + //SEG274 initSquareTables::@3 b3: - //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG275 [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 lda x sec sbc #$14 - //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG276 [169] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG277 [169] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG271 initSquareTables::@4 + //SEG278 initSquareTables::@4 b4: - //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG279 [170] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG274 [165] call mul8u - //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG280 [171] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG281 [172] call mul8u + //SEG282 [195] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG283 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG284 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG285 [173] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG279 initSquareTables::@9 + //SEG286 initSquareTables::@9 b9: - //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG287 [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG288 [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG289 [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG290 [177] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG291 [178] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG292 [179] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG293 [179] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG294 [179] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG295 [179] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG289 initSquareTables::@5 + //SEG296 initSquareTables::@5 b5: - //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG297 [180] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG291 initSquareTables::@7 + //SEG298 initSquareTables::@7 b7: - //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG299 [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 lda y sec sbc #$c - //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG300 [182] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG301 [182] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG295 initSquareTables::@8 + //SEG302 initSquareTables::@8 b8: - //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG303 [183] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG298 [178] call mul8u - //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG304 [184] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG305 [185] call mul8u + //SEG306 [195] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG307 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG308 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG309 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b10 - //SEG303 initSquareTables::@10 + //SEG310 initSquareTables::@10 b10: - //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG311 [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG312 [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG313 [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG314 [190] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [191] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5_from_b10 jmp breturn - //SEG309 initSquareTables::@return + //SEG316 initSquareTables::@return breturn: - //SEG310 [185] return + //SEG317 [192] return rts - //SEG311 initSquareTables::@6 + //SEG318 initSquareTables::@6 b6: - //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG319 [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8_from_b6 - //SEG313 initSquareTables::@2 + //SEG320 initSquareTables::@2 b2: - //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG321 [194] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4_from_b2 } -//SEG315 mul8u +//SEG322 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $1c .label res = $1a .label return = $1a - //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG323 [196] 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 - //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG324 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG325 [196] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG326 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG320 mul8u::@1 + //SEG327 mul8u::@1 b1: - //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG328 [197] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG322 mul8u::@return + //SEG329 mul8u::@return breturn: - //SEG323 [191] return + //SEG330 [198] return rts - //SEG324 mul8u::@2 + //SEG331 mul8u::@2 b2: - //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG332 [199] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG333 [200] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG327 mul8u::@4 + //SEG334 mul8u::@4 b4: - //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG335 [201] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7945,63 +8155,63 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG336 [202] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG337 [202] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG331 mul8u::@3 + //SEG338 mul8u::@3 b3: - //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG339 [203] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [204] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG341 [196] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG342 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG343 [196] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG344 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG338 irqBottom +//SEG345 irqBottom // Raster Interrupt at the bottom of the screen irqBottom: { - //SEG339 entry interrupt(HARDWARE_ALL) + //SEG346 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] + //SEG347 [206] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: jmp b1 - //SEG341 irqBottom::@1 + //SEG348 irqBottom::@1 b1: - //SEG342 [200] call processChars - //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] + //SEG349 [207] call processChars + //SEG350 [212] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] processChars_from_b1: jsr processChars jmp b2 - //SEG344 irqBottom::@2 + //SEG351 irqBottom::@2 b2: - //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [208] *((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 - //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG348 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG349 [204] return - exit interrupt(HARDWARE_ALL) + //SEG356 [211] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8010,53 +8220,54 @@ irqBottom: { ldy #00 rti } -//SEG350 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _15 = $38 - .label _25 = $36 - .label processing = $33 - .label bitmask = $35 + .label _15 = $39 + .label _25 = $37 + .label processing = $34 + .label bitmask = $36 .label i = $1e - .label xpos = $36 - .label ypos = $3a + .label xpos = $37 + .label ypos = $3b .label numActive = $1f - //SEG351 [206] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG358 [213] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG352 [206] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [213] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [213] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG354 [206] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [213] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //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 + //SEG362 [213] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [213] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG357 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG365 [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG360 [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG367 [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG361 [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG368 [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuaa + //SEG369 [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG370 [219] (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 - //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 + //SEG371 [220] (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 @@ -8069,23 +8280,23 @@ processChars: { bne !- !e: sta bitmask - //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 + //SEG372 [221] 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 - //SEG365 processChars::@10 + //SEG373 processChars::@10 b10: - //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 + //SEG374 [222] 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 - //SEG367 processChars::@11 + //SEG375 processChars::@11 b11: - //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG376 [223] *(*((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 @@ -8097,12 +8308,22 @@ processChars: { txa !: sta $ffff - //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG377 [224] *((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 - //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 + //SEG378 [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // Set the sprite color + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID + pha + lda (processing),y + tay + pla + sta SPRITES_COLS,y + //SEG379 [226] *((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 @@ -8112,15 +8333,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG380 [227] *((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 - //SEG372 processChars::@3 + //SEG381 processChars::@3 b3: - //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG382 [228] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -8135,33 +8356,33 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG383 [229] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG384 [230] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 bne b4 jmp b8 - //SEG376 processChars::@8 + //SEG385 processChars::@8 b8: - //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG386 [231] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG387 [232] *((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 - //SEG379 processChars::@5 + //SEG388 processChars::@5 b5: - //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG389 [233] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG390 [234] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG391 [235] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //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 + //SEG392 [236] (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 _15 @@ -8176,13 +8397,13 @@ processChars: { ror _15 lsr _15+1 ror _15 - //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + //SEG393 [237] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 lda _15 sta ypos - //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG394 [238] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG395 [239] 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 @@ -8195,9 +8416,9 @@ processChars: { bcc b6 !: jmp b14 - //SEG387 processChars::@14 + //SEG396 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 + //SEG397 [240] 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 @@ -8209,9 +8430,9 @@ processChars: { bcc b6 !: jmp b13 - //SEG389 processChars::@13 + //SEG398 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 + //SEG399 [241] 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 @@ -8224,9 +8445,9 @@ processChars: { bcc b6 !: jmp b12 - //SEG391 processChars::@12 + //SEG400 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 + //SEG401 [242] 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 @@ -8239,23 +8460,23 @@ processChars: { bcc b6 !: jmp b9 - //SEG393 processChars::@9 + //SEG402 processChars::@9 b9: - //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + //SEG403 [243] (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 + //SEG404 [244] (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 + //SEG405 [245] (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 - //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG406 [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //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 + //SEG407 [247] *((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 @@ -8266,7 +8487,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //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 + //SEG408 [248] *((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 @@ -8280,17 +8501,17 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG409 [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG410 [250] (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 - //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG411 [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //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 + //SEG412 [252] *((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 @@ -8301,7 +8522,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //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 + //SEG413 [253] *((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 @@ -8314,78 +8535,78 @@ processChars: { adc (processing),y sta (processing),y jmp b7 - //SEG405 processChars::@7 + //SEG414 processChars::@7 b7: - //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG415 [254] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG407 [246] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG416 [255] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG408 [246] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG417 [255] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG409 processChars::@2 + //SEG418 processChars::@2 b2: - //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG419 [256] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG420 [257] 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 breturn - //SEG412 processChars::@return + //SEG421 processChars::@return breturn: - //SEG413 [249] return + //SEG422 [258] return rts - //SEG414 processChars::@6 + //SEG423 processChars::@6 b6: - //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG424 [259] *((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 - //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG425 [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG426 [261] *((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 - //SEG418 processChars::@4 + //SEG427 processChars::@4 b4: - //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG428 [262] *((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 } -//SEG420 irqTop +//SEG429 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG421 entry interrupt(HARDWARE_ALL) + //SEG430 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 jmp b1 - //SEG422 irqTop::@1 + //SEG431 irqTop::@1 b1: - //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG432 [264] *((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 - //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG433 [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG434 [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG426 irqTop::@return + //SEG435 irqTop::@return breturn: - //SEG427 [258] return - exit interrupt(HARDWARE_ALL) + //SEG436 [267] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8401,7 +8622,7 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill $d*NUM_PROCESSING, 0 + PROCESSING: .fill $e*NUM_PROCESSING, 0 .pc = VXSIN "VXSIN" .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 @@ -8491,7 +8712,11 @@ Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 +Removing instruction lda #0 Removing instruction lda #>0 +Replacing instruction lda #0 with TYA +Removing instruction ldy #0 +Replacing instruction lda #0 with TYA Removing instruction ldy #0 Removing instruction lda #0 Replacing instruction ldy #0 with TAY @@ -8640,22 +8865,22 @@ Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [425] bne b2 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 [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 +Fixing long branch [440] bne b2 to beq +Fixing long branch [1026] bne b1 to beq +Fixing long branch [216] bne b3 to beq +Fixing long branch [222] beq b8 to bne +Fixing long branch [488] beq b11 to bne +Fixing long branch [509] beq b12 to bne +Fixing long branch [513] bcc b12 to bcs +Fixing long branch [839] beq b2 to bne +Fixing long branch [900] bne b4 to beq +Fixing long branch [934] bcc b6 to bcs +Fixing long branch [941] bcc b6 to bcs +Fixing long branch [948] bcc b6 to bcs +Fixing long branch [955] bcc b6 to bcs +Fixing long branch [963] bcc b6 to bcs +Fixing long branch [970] bcc b6 to bcs +Fixing long branch [978] bcc b6 to bcs FINAL SYMBOL TABLE (label) @1 @@ -8696,10 +8921,11 @@ FINAL SYMBOL TABLE (const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff (byte) NUM_PROCESSING (const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) 8 +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $c +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $b (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2 @@ -8718,6 +8944,7 @@ FINAL SYMBOL TABLE (word) ProcessingChar::dist (byte) ProcessingChar::x (byte) ProcessingChar::y +(byte) ProcessingSprite::col (byte) ProcessingSprite::id (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr @@ -8782,13 +9009,13 @@ FINAL SYMBOL TABLE (word) YPOS_TOPMOST (const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:48 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:48 4.0 (byte~) getCharToProcess::$13 reg byte x 1001.0 (byte~) getCharToProcess::$14 reg byte a 2002.0 -(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:50 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:48 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:48 3.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -8890,10 +9117,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$16 reg byte x 12.375 -(byte) main::$25 reg byte a 22.0 +(byte~) main::$16 reg byte x 12.222222222222221 (byte) main::$26 reg byte a 22.0 (byte) main::$27 reg byte a 22.0 +(byte) main::$28 reg byte a 22.0 +(byte) main::$29 reg byte a 22.0 (struct ProcessingChar~) main::$9 (label) main::@1 (label) main::@2 @@ -8915,7 +9143,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i (byte) main::i#1 i zp ZP_BYTE:6 16.5 -(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231 +(byte) main::i#2 i zp ZP_BYTE:6 3.6666666666666665 (byte*) main::src (byte*) main::src#1 src zp ZP_WORD:2 11.0 (byte*) main::src#2 src zp ZP_WORD:2 16.5 @@ -8950,18 +9178,19 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$14 reg byte a 22.0 -(word~) processChars::$15 $15 zp ZP_WORD:56 11.0 +(word~) processChars::$15 $15 zp ZP_WORD:57 11.0 (byte~) processChars::$17 reg byte x 6.6000000000000005 -(word~) processChars::$25 $25 zp ZP_WORD:54 11.0 +(word~) processChars::$25 $25 zp ZP_WORD:55 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::$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 +(byte) processChars::$68 reg byte a 22.0 +(byte) processChars::$69 reg byte a 22.0 +(byte) processChars::$70 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -8978,24 +9207,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.2916666666666665 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:54 2.2 (byte) processChars::i (byte) processChars::i#1 i zp ZP_BYTE:30 16.5 -(byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.4042553191489362 (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#10 numActive zp ZP_BYTE:31 0.7333333333333333 (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 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:52 0.3142857142857143 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:54 2.0625 +(word) processChars::xpos#0 xpos zp ZP_WORD:55 2.0625 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 22.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp ZP_BYTE:58 2.75 +(byte) processChars::ypos#0 ypos zp ZP_BYTE:59 2.75 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -9006,29 +9235,30 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) (word~) startProcessing::$0 $0 zp ZP_WORD:34 3.0 (word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002 -(byte~) startProcessing::$21 reg byte a 2.0 -(word~) startProcessing::$22 $22 zp ZP_WORD:45 0.5714285714285714 -(byte~) startProcessing::$29 reg byte a 2002.0 -(byte~) startProcessing::$30 reg byte x 2.25 -(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 -(byte) startProcessing::$40 reg byte a 2002.0 -(byte) startProcessing::$41 reg byte a 2002.0 +(word~) startProcessing::$11 $11 zp ZP_WORD:41 4.0 +(word~) startProcessing::$12 $12 zp ZP_WORD:41 4.0 +(word~) startProcessing::$13 $13 zp ZP_WORD:41 4.0 +(word~) startProcessing::$15 $15 zp ZP_WORD:43 4.0 +(word~) startProcessing::$16 $16 zp ZP_WORD:43 4.0 +(word~) startProcessing::$17 $17 zp ZP_WORD:43 4.0 +(byte~) startProcessing::$22 reg byte a 2.0 +(word~) startProcessing::$23 $23 zp ZP_WORD:46 0.5 +(byte~) startProcessing::$30 reg byte a 2002.0 +(byte~) startProcessing::$31 reg byte x 2.2222222222222228 (byte) startProcessing::$42 reg byte a 2002.0 -(word) startProcessing::$44 $44 zp ZP_WORD:36 4.0 -(word) startProcessing::$45 $45 zp ZP_WORD:34 4.0 -(byte) startProcessing::$47 reg byte a 4.0 -(byte) startProcessing::$48 reg byte a 4.0 -(byte) startProcessing::$49 reg byte a 4.0 +(byte) startProcessing::$43 reg byte a 2002.0 +(byte) startProcessing::$44 reg byte a 2002.0 +(byte) startProcessing::$45 reg byte a 2002.0 +(word) startProcessing::$47 $47 zp ZP_WORD:36 4.0 +(word) startProcessing::$48 $48 zp ZP_WORD:34 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 -(word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 +(byte) startProcessing::$50 reg byte a 4.0 +(byte) startProcessing::$51 reg byte a 4.0 +(byte) startProcessing::$52 reg byte a 4.0 +(byte) startProcessing::$53 reg byte a 4.0 +(word~) startProcessing::$6 $6 zp ZP_WORD:10 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 +(word~) startProcessing::$9 $9 zp ZP_WORD:8 4.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -9042,47 +9272,53 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.30952380952380953 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.24444444444444444 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData (byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:8 1.3333333333333333 (byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:8 67.33333333333333 (byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:8 101.66666666666666 +(byte*) startProcessing::colPtr +(byte*) startProcessing::colPtr#0 colPtr zp ZP_WORD:38 4.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 29.90909090909092 -(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 28.0 +(byte) startProcessing::freeIdx#6 reg byte x 20.2 (byte~) startProcessing::freeIdx#7 reg byte x 202.0 (byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0 (byte) startProcessing::i (byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5 -(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001 +(byte) startProcessing::i#2 i zp ZP_BYTE:7 858.0 (byte) startProcessing::i1 (byte) startProcessing::i1#1 reg byte x 151.5 (byte) startProcessing::i1#2 reg byte x 50.5 +(word) startProcessing::offset +(word) startProcessing::offset#0 offset zp ZP_WORD:34 2.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.1 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:34 0.14285714285714285 +(byte) startProcessing::spriteCol +(byte) startProcessing::spriteCol#0 spriteCol zp ZP_BYTE:40 0.0975609756097561 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.3333333333333333 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:45 0.3076923076923077 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.3333333333333333 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:41 0.3076923076923077 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.4444444444444444 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:43 0.4 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] -zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] +zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$9 startProcessing::$8 ] +zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$6 startProcessing::$5 ] reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ] @@ -9104,9 +9340,10 @@ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::re zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#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 a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] +reg byte a [ main::$28 ] +reg byte a [ main::$29 ] reg byte x [ main::$16 ] reg byte x [ getCharToProcess::return_x#0 ] reg byte y [ getCharToProcess::return_y#0 ] @@ -9114,43 +9351,47 @@ reg byte x [ main::center_x#0 ] reg byte y [ main::center_y#0 ] zp ZP_BYTE:32 [ startProcessing::center_x#0 ] zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$40 ] -reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] -reg byte a [ startProcessing::$29 ] -zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:36 [ startProcessing::$44 ] -zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] +reg byte a [ startProcessing::$43 ] +reg byte a [ startProcessing::$44 ] +reg byte a [ startProcessing::$45 ] +reg byte a [ startProcessing::$30 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$48 startProcessing::$1 startProcessing::offset#0 startProcessing::screenPtr#0 ] +zp ZP_WORD:36 [ startProcessing::$47 ] +zp ZP_WORD:38 [ startProcessing::colPtr#0 ] +zp ZP_BYTE:40 [ startProcessing::spriteCol#0 ] reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$21 ] -zp ZP_WORD:45 [ startProcessing::$22 ] -reg byte a [ startProcessing::$47 ] -reg byte a [ startProcessing::$48 ] -reg byte a [ startProcessing::$49 ] -reg byte x [ startProcessing::$30 ] +zp ZP_WORD:41 [ startProcessing::$11 startProcessing::$12 startProcessing::$13 startProcessing::spriteX#0 ] +zp ZP_WORD:43 [ startProcessing::$15 startProcessing::$16 startProcessing::$17 startProcessing::spriteY#0 ] +zp ZP_BYTE:45 [ startProcessing::spritePtr#0 ] +reg byte a [ startProcessing::$22 ] +zp ZP_WORD:46 [ startProcessing::$23 ] +reg byte a [ startProcessing::$50 ] +reg byte a [ startProcessing::$51 ] +reg byte a [ startProcessing::$52 ] +reg byte a [ startProcessing::$53 ] +reg byte x [ startProcessing::$31 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:49 [ getCharToProcess::$15 ] +zp ZP_WORD:48 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:50 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$65 ] -reg byte a [ processChars::$66 ] reg byte a [ processChars::$67 ] +reg byte a [ processChars::$68 ] +reg byte a [ processChars::$69 ] +reg byte a [ processChars::$70 ] 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::$25 ] +zp ZP_WORD:52 [ processChars::processing#0 ] +zp ZP_BYTE:54 [ processChars::bitmask#0 ] +zp ZP_WORD:55 [ processChars::xpos#0 processChars::$25 ] reg byte a [ processChars::$11 ] reg byte a [ processChars::$12 ] reg byte x [ processChars::$17 ] reg byte a [ processChars::$14 ] -zp ZP_WORD:56 [ processChars::$15 ] -zp ZP_BYTE:58 [ processChars::ypos#0 ] +zp ZP_WORD:57 [ processChars::$15 ] +zp ZP_BYTE:59 [ processChars::ypos#0 ] reg byte a [ processChars::$26 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$38 ] @@ -9161,7 +9402,7 @@ reg byte a [ processChars::$33 ] FINAL ASSEMBLER -Score: 243286 +Score: 243658 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in letters @@ -9175,8 +9416,9 @@ Score: 243286 .const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6 .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8 .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_COL = $a + .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b + .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -9260,7 +9502,7 @@ main: { .label i = 6 .label center_dist = $14 //SEG14 [7] call initSquareTables - //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [165] phi from main to initSquareTables [phi:main->initSquareTables] jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] //SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -9309,238 +9551,256 @@ main: { //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy //SEG31 main::@2 b2: - //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG32 [14] (byte) main::$26 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG34 [16] (byte) main::$28 ← (byte) main::$27 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG35 [17] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i + //SEG36 [18] (byte~) main::$16 ← (byte) main::$29 << (byte) 1 -- vbuxx=vbuaa_rol_1 + asl tax - //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x sta PROCESSING+1,x - //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG40 [22] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG43 [25] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x + //SEG44 [26] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG45 [27] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG46 [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG47 [29] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2 - //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG47 main::@3 - //SEG48 [29] call initSprites - //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG48 [30] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG49 main::@3 + //SEG50 [31] call initSprites + //SEG51 [152] phi from main::@3 to initSprites [phi:main::@3->initSprites] jsr initSprites - //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] - //SEG51 main::@8 - //SEG52 [31] call setupRasterIrq + //SEG52 [32] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + //SEG53 main::@8 + //SEG54 [33] call setupRasterIrq jsr setupRasterIrq - //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] + //SEG55 [34] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b3: // Main loop - //SEG54 main::@4 - //SEG55 [33] call getCharToProcess - //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG56 main::@4 + //SEG57 [35] call getCharToProcess + //SEG58 [114] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] jsr getCharToProcess - //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG59 [36] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG60 [37] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 - //SEG60 main::@9 - //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG61 [38] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG62 main::@9 + //SEG63 [39] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG64 [40] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG65 [41] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG66 [42] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 lda center_dist cmp #startProcessing] + //SEG74 [47] call startProcessing + //SEG75 [48] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] jsr startProcessing jmp b3 } -//SEG74 startProcessing +//SEG76 startProcessing // Start processing a char - by inserting it into the PROCESSING array // startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) startProcessing: { .label _0 = $22 .label _1 = $22 - .label _2 = $22 - .label _4 = $a .label _5 = $a - .label _7 = 8 + .label _6 = $a .label _8 = 8 - .label _10 = $28 - .label _11 = $28 - .label _12 = $28 - .label _14 = $2a - .label _15 = $2a - .label _16 = $2a - .label _22 = $2d + .label _9 = 8 + .label _11 = $29 + .label _12 = $29 + .label _13 = $29 + .label _15 = $2b + .label _16 = $2b + .label _17 = $2b + .label _23 = $2e .label center_x = $20 .label center_y = $21 .label i = 7 - .label screenPtr = $26 + .label offset = $22 + .label colPtr = $26 + .label spriteCol = $28 + .label screenPtr = $22 .label spriteData = $a .label chargenData = 8 - .label spriteX = $28 - .label spriteY = $2a - .label spritePtr = $2c + .label spriteX = $29 + .label spriteY = $2b + .label spritePtr = $2d .label freeIdx = 7 - .label _44 = $24 - .label _45 = $22 - //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] - //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + .label _47 = $24 + .label _48 = $22 + //SEG77 [49] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG78 [49] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff - //SEG77 startProcessing::@1 + //SEG79 startProcessing::@1 b1: - //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] - //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG80 [50] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG81 [50] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] - //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy - //SEG82 startProcessing::@2 + //SEG82 [50] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG83 [50] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG84 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG87 [53] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG88 [54] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG89 [55] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG90 [56] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y beq !b3+ jmp b3 !b3: - //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] - //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy - //SEG90 startProcessing::@4 + //SEG91 [57] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG92 [57] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG93 startProcessing::@4 b4: - //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG94 [58] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx bne !b8+ jmp b8 !b8: - //SEG92 startProcessing::@5 - //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG95 startProcessing::@5 + //SEG96 [59] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG97 [60] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _44 + sta _47 lda _0+1 rol - sta _44+1 - asl _44 - rol _44+1 - //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _45 + sta _47+1 + asl _47 + rol _47+1 + //SEG98 [61] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _48 clc - adc _44 - sta _45 - lda _45+1 - adc _44+1 - sta _45+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _47 + sta _48 + lda _48+1 + adc _47+1 + sta _48+1 + //SEG99 [62] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 - clc - lda _2 - adc #SCREEN - sta _2+1 - //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG100 [63] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 lda center_x clc - adc _2 + adc offset + sta offset + bcc !+ + inc offset+1 + !: + //SEG101 [64] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + lda offset + clc + adc #COLS + sta colPtr+1 + //SEG102 [65] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (colPtr),y + sta spriteCol + //SEG103 [66] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 + clc + lda screenPtr + adc #SCREEN sta screenPtr+1 - //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG104 [67] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx - sta _4 - lda #0 - sta _4+1 - //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - asl _5 - rol _5+1 - //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + sta _5 + tya + sta _5+1 + //SEG105 [68] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 -- vwuz1=vwuz1_rol_6 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG106 [69] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 - ldy center_x - lda (_2),y - //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa - sta _7 - lda #0 - sta _7+1 - //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - asl _8 - rol _8+1 - //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG107 [70] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 + lda (screenPtr),y + //SEG108 [71] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + sta _8 + tya + sta _8+1 + //SEG109 [72] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + asl _9 + rol _9+1 + //SEG110 [73] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG106 asm { sei } + //SEG111 asm { sei } sei - //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG112 [75] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] - //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG113 [76] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG114 [76] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy - //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] - //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy - //SEG116 startProcessing::@6 + //SEG115 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG116 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG117 [76] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG118 [76] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG119 [76] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG120 [76] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG121 startProcessing::@6 b6: - //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG122 [77] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y sta (spriteData),y - //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG123 [78] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -9598,43 +9857,43 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG124 [79] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG125 [80] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG126 [81] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6 - //SEG122 startProcessing::@7 - //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG127 startProcessing::@7 + //SEG128 [82] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG124 asm { cli } + //SEG129 asm { cli } cli - //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG130 [84] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x - sta _10 + sta _11 lda #0 - sta _10+1 - //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _11 - rol _11+1 - asl _11 - rol _11+1 - asl _11 - rol _11+1 - //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + sta _11+1 + //SEG131 [85] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + //SEG132 [86] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc - adc _12 - sta _12 + adc _13 + sta _13 bcc !+ - inc _12+1 + inc _13+1 !: - //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG133 [87] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -9643,27 +9902,27 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG134 [88] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y - sta _14 + sta _15 lda #0 - sta _14+1 - //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _15 - rol _15+1 - asl _15 - rol _15+1 - asl _15 - rol _15+1 - //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + sta _15+1 + //SEG135 [89] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _16 + rol _16+1 + asl _16 + rol _16+1 + asl _16 + rol _16+1 + //SEG136 [90] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc - adc _16 - sta _16 + adc _17 + sta _17 bcc !+ - inc _16+1 + inc _17+1 !: - //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG137 [91] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -9672,98 +9931,102 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG138 [92] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG139 [93] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 lda freeIdx asl asl asl - //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa - sta _22 + //SEG140 [94] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22 -- vwuz1=_word_vbuaa + sta _23 lda #0 - sta _22+1 - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + sta _23+1 + //SEG141 [95] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda freeIdx asl - //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG142 [96] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG143 [97] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG144 [98] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx + //SEG145 [99] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1 -- vbuxx=vbuaa_rol_1 + asl tax - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG146 [100] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG147 [101] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1 - lda _22 + //SEG148 [102] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _23 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda _22+1 + lda _23+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG149 [103] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG150 [104] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG151 [105] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG152 [106] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 + lda spriteCol + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x + //SEG153 [107] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG154 [108] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG148 startProcessing::@return - //SEG149 [102] return + //SEG155 startProcessing::@return + //SEG156 [109] return rts - //SEG150 startProcessing::@8 + //SEG157 startProcessing::@8 b8: - //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG158 [110] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] - //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG159 [49] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG160 [49] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG154 startProcessing::@3 + //SEG161 startProcessing::@3 b3: - //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG162 [111] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG163 [112] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i beq !b2+ jmp b2 !b2: - //SEG157 startProcessing::@9 - //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG164 startProcessing::@9 + //SEG165 [113] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4 } -//SEG159 getCharToProcess +//SEG166 getCharToProcess // 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 = $2f - .label _10 = $2f - .label _11 = $2f + .label _9 = $30 + .label _10 = $30 + .label _11 = $30 .label return_dist = $14 .label x = $f .label dist = $14 @@ -9774,54 +10037,54 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $31 - .label _16 = $2f - //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] - //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + .label _15 = $32 + .label _16 = $30 + //SEG167 [115] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG168 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG169 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta closest_x - //SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG170 [115] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG171 [115] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG172 [115] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 - //SEG166 getCharToProcess::@1 + //SEG173 getCharToProcess::@1 b1: - //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] - //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG174 [116] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG175 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG176 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG177 [116] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG178 [116] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x - //SEG172 getCharToProcess::@2 + //SEG179 getCharToProcess::@2 b2: - //SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG180 [117] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' bne !b11+ jmp b11 !b11: - //SEG174 getCharToProcess::@4 - //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG181 getCharToProcess::@4 + //SEG182 [118] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG183 [119] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //SEG184 [120] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -9830,7 +10093,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG185 [121] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -9843,41 +10106,41 @@ getCharToProcess: { bcs !b12+ jmp b12 !b12: - //SEG179 getCharToProcess::@5 - //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG186 getCharToProcess::@5 + //SEG187 [122] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG188 [123] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] - //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy - //SEG186 getCharToProcess::@3 + //SEG189 [124] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG190 [124] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG191 [124] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG192 [124] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG193 getCharToProcess::@3 b3: - //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG194 [125] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG195 [126] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 - //SEG189 getCharToProcess::@6 - //SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG196 getCharToProcess::@6 + //SEG197 [127] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 clc adc screen_line sta screen_line bcc !+ inc screen_line+1 !: - //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG198 [128] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG199 [129] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 - //SEG193 getCharToProcess::@7 - //SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG200 getCharToProcess::@7 + //SEG201 [130] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist cmp #NOT_FOUND beq breturn !: - //SEG195 getCharToProcess::@8 - //SEG196 [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + //SEG202 getCharToProcess::@8 + //SEG203 [131] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda return_y sta _9 lda #0 sta _9+1 - //SEG197 [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG204 [132] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _9 asl sta _15 @@ -9900,7 +10163,7 @@ getCharToProcess: { sta _15+1 asl _15 rol _15+1 - //SEG198 [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 + //SEG205 [133] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 lda _16 clc adc _15 @@ -9908,14 +10171,14 @@ getCharToProcess: { lda _16+1 adc _15+1 sta _16+1 - //SEG199 [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG206 [134] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _10 rol _10+1 asl _10 rol _10+1 asl _10 rol _10+1 - //SEG200 [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 + //SEG207 [135] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 clc lda _11 adc #SCREEN_COPY sta _11+1 - //SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG208 [136] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x sta (_11),y - //SEG202 getCharToProcess::@return + //SEG209 getCharToProcess::@return breturn: - //SEG203 [130] return + //SEG210 [137] return rts - //SEG204 getCharToProcess::@9 + //SEG211 getCharToProcess::@9 b9: - //SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG212 [138] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] - //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG213 [115] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG214 [115] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG215 [115] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG216 [115] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG217 [115] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG218 [115] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG212 getCharToProcess::@10 + //SEG219 getCharToProcess::@10 b10: - //SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG220 [139] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] - //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG221 [116] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG222 [116] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG223 [116] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG224 [116] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG225 [116] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG219 getCharToProcess::@12 + //SEG226 getCharToProcess::@12 b12: - //SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG227 [140] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3 - //SEG221 getCharToProcess::@11 + //SEG228 getCharToProcess::@11 b11: - //SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG229 [141] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3 } -//SEG223 setupRasterIrq +//SEG230 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG224 asm { sei } + //SEG231 asm { sei } sei - //SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG232 [143] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG233 [144] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG234 [145] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG228 setupRasterIrq::@1 - //SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG235 setupRasterIrq::@1 + //SEG236 [146] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG230 setupRasterIrq::@2 - //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG237 setupRasterIrq::@2 + //SEG238 [147] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG239 [148] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG240 [149] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG234 asm { cli } + //SEG241 asm { cli } cli - //SEG235 setupRasterIrq::@return - //SEG236 [144] return + //SEG242 setupRasterIrq::@return + //SEG243 [151] return rts } -//SEG237 initSprites +//SEG244 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] - //SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG245 [153] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG246 [153] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA sta sp+1 // Clear sprite data - //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] - //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy - //SEG242 initSprites::@1 + //SEG247 [153] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG248 [153] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG249 initSprites::@1 b1: - //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG250 [154] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (sp),y - //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG251 [155] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG252 [156] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1 @@ -10051,189 +10314,189 @@ initSprites: { cmp #initSprites::@2] - //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG253 [157] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] + //SEG254 [157] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 // Initialize sprite registers - //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] - //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy - //SEG250 initSprites::@2 + //SEG255 [157] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG256 [157] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG257 initSprites::@2 b2: - //SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG258 [158] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #LIGHT_BLUE sta SPRITES_COLS,x - //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG259 [159] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG260 [160] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG254 initSprites::@3 - //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG261 initSprites::@3 + //SEG262 [161] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG263 [162] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG264 [163] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG258 initSprites::@return - //SEG259 [157] return + //SEG265 initSprites::@return + //SEG266 [164] return rts } -//SEG260 initSquareTables +//SEG267 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] - //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG268 [166] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG269 [166] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] - //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy - //SEG265 initSquareTables::@1 + //SEG270 [166] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG271 [166] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG272 initSquareTables::@1 b1: - //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG273 [167] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 - //SEG267 initSquareTables::@3 - //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG274 initSquareTables::@3 + //SEG275 [168] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$14 - //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] - //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy - //SEG271 initSquareTables::@4 + //SEG276 [169] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG277 [169] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG278 initSquareTables::@4 b4: - //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG279 [170] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG274 [165] call mul8u - //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] - //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG280 [171] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG281 [172] call mul8u + //SEG282 [195] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG283 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG284 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG279 initSquareTables::@9 - //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG285 [173] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG286 initSquareTables::@9 + //SEG287 [174] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG288 [175] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG289 [176] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG290 [177] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG291 [178] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1 - //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] - //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG292 [179] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG293 [179] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] - //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy - //SEG289 initSquareTables::@5 + //SEG294 [179] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG295 [179] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG296 initSquareTables::@5 b5: - //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG297 [180] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 - //SEG291 initSquareTables::@7 - //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG298 initSquareTables::@7 + //SEG299 [181] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$c - //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] - //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy - //SEG295 initSquareTables::@8 + //SEG300 [182] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG301 [182] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG302 initSquareTables::@8 b8: - //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG303 [183] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG298 [178] call mul8u - //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] - //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG304 [184] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG305 [185] call mul8u + //SEG306 [195] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG307 [195] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG308 [195] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG303 initSquareTables::@10 - //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG309 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG310 initSquareTables::@10 + //SEG311 [187] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG312 [188] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG313 [189] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG314 [190] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [191] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5 - //SEG309 initSquareTables::@return - //SEG310 [185] return + //SEG316 initSquareTables::@return + //SEG317 [192] return rts - //SEG311 initSquareTables::@6 + //SEG318 initSquareTables::@6 b6: - //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG319 [193] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8 - //SEG313 initSquareTables::@2 + //SEG320 initSquareTables::@2 b2: - //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG321 [194] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4 } -//SEG315 mul8u +//SEG322 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $1c .label res = $1a .label return = $1a - //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG323 [196] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG324 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG325 [196] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG320 mul8u::@1 + //SEG326 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG327 mul8u::@1 b1: - //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG328 [197] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG322 mul8u::@return - //SEG323 [191] return + //SEG329 mul8u::@return + //SEG330 [198] return rts - //SEG324 mul8u::@2 + //SEG331 mul8u::@2 b2: - //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG332 [199] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG333 [200] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG327 mul8u::@4 - //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG334 mul8u::@4 + //SEG335 [201] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -10241,51 +10504,51 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG331 mul8u::@3 + //SEG336 [202] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG337 [202] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG338 mul8u::@3 b3: - //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG339 [203] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [204] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG341 [196] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG342 [196] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG343 [196] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG344 [196] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG338 irqBottom +//SEG345 irqBottom // Raster Interrupt at the bottom of the screen irqBottom: { - //SEG339 entry interrupt(HARDWARE_ALL) + //SEG346 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 irqBottom::@1 - //SEG342 [200] call processChars - //SEG343 [205] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] + //SEG347 [206] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG348 irqBottom::@1 + //SEG349 [207] call processChars + //SEG350 [212] phi from irqBottom::@1 to processChars [phi:irqBottom::@1->processChars] jsr processChars - //SEG344 irqBottom::@2 - //SEG345 [201] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG351 irqBottom::@2 + //SEG352 [208] *((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 - //SEG346 [202] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [209] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG347 [203] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [210] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG348 irqBottom::@return - //SEG349 [204] return - exit interrupt(HARDWARE_ALL) + //SEG355 irqBottom::@return + //SEG356 [211] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -10294,48 +10557,49 @@ irqBottom: { ldy #00 rti } -//SEG350 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _15 = $38 - .label _25 = $36 - .label processing = $33 - .label bitmask = $35 + .label _15 = $39 + .label _25 = $37 + .label processing = $34 + .label bitmask = $36 .label i = $1e - .label xpos = $36 - .label ypos = $3a + .label xpos = $37 + .label ypos = $3b .label numActive = $1f - //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 + //SEG358 [213] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG359 [213] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG353 [206] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [213] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 sta i - //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 + //SEG361 [213] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG362 [213] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [213] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG364 processChars::@1 b1: - //SEG358 [207] (byte) processChars::$65 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG365 [214] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG359 [208] (byte) processChars::$66 ← (byte) processChars::$65 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [215] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG360 [209] (byte) processChars::$67 ← (byte) processChars::$66 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG367 [216] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - asl - //SEG361 [210] (byte~) processChars::$37 ← (byte) processChars::$67 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG368 [217] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG362 [211] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37 -- pssz1=pssc1_plus_vbuaa + //SEG369 [218] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1 -- vbuaa=vbuaa_rol_1 + asl + //SEG370 [219] (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 - //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 + //SEG371 [220] (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 @@ -10348,20 +10612,20 @@ processChars: { bne !- !e: sta bitmask - //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 + //SEG372 [221] 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: - //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 + //SEG373 processChars::@10 + //SEG374 [222] 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 - //SEG367 processChars::@11 - //SEG368 [215] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG375 processChars::@11 + //SEG376 [223] *(*((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 @@ -10373,12 +10637,22 @@ processChars: { txa !: sta $ffff - //SEG369 [216] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG377 [224] *((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 - //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 + //SEG378 [225] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // Set the sprite color + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID + pha + lda (processing),y + tay + pla + sta SPRITES_COLS,y + //SEG379 [226] *((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 @@ -10388,14 +10662,14 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG371 [218] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG380 [227] *((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 - //SEG372 processChars::@3 + //SEG381 processChars::@3 b3: - //SEG373 [219] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG382 [228] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -10410,32 +10684,32 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG374 [220] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG383 [229] (byte~) processChars::$11 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG375 [221] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG384 [230] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 beq !b4+ jmp b4 !b4: - //SEG376 processChars::@8 - //SEG377 [222] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG385 processChars::@8 + //SEG386 [231] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG378 [223] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG387 [232] *((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 - //SEG379 processChars::@5 + //SEG388 processChars::@5 b5: - //SEG380 [224] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG389 [233] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG381 [225] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG390 [234] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG382 [226] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG391 [235] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //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 + //SEG392 [236] (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 _15 @@ -10450,12 +10724,12 @@ processChars: { ror _15 lsr _15+1 ror _15 - //SEG384 [228] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 + //SEG393 [237] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15 -- vbuz1=_byte_vwuz2 lda _15 sta ypos - //SEG385 [229] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG394 [238] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta SPRITES_YPOS,x - //SEG386 [230] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG395 [239] 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 @@ -10471,8 +10745,8 @@ processChars: { jmp b6 !b6: !: - //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 + //SEG396 processChars::@14 + //SEG397 [240] 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 @@ -10487,8 +10761,8 @@ processChars: { jmp b6 !b6: !: - //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 + //SEG398 processChars::@13 + //SEG399 [241] 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 @@ -10504,8 +10778,8 @@ processChars: { jmp b6 !b6: !: - //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 + //SEG400 processChars::@12 + //SEG401 [242] 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 @@ -10519,22 +10793,22 @@ processChars: { cmp (processing),y bcc b6 !: - //SEG393 processChars::@9 - //SEG394 [234] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + //SEG402 processChars::@9 + //SEG403 [243] (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 + //SEG404 [244] (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 + //SEG405 [245] (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 - //SEG397 [237] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG406 [246] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //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 + //SEG407 [247] *((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 @@ -10545,7 +10819,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - //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 + //SEG408 [248] *((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 @@ -10559,17 +10833,17 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG400 [240] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG409 [249] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG401 [241] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG410 [250] (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 - //SEG402 [242] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG411 [251] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //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 + //SEG412 [252] *((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 @@ -10580,7 +10854,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - //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 + //SEG413 [253] *((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 @@ -10592,71 +10866,71 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - //SEG405 processChars::@7 + //SEG414 processChars::@7 b7: - //SEG406 [245] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG415 [254] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //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 + //SEG416 [255] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG417 [255] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG418 processChars::@2 b2: - //SEG410 [247] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG419 [256] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG411 [248] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG420 [257] 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: - //SEG412 processChars::@return - //SEG413 [249] return + //SEG421 processChars::@return + //SEG422 [258] return rts - //SEG414 processChars::@6 + //SEG423 processChars::@6 b6: - //SEG415 [250] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG424 [259] *((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 - //SEG416 [251] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG425 [260] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG417 [252] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG426 [261] *((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 - //SEG418 processChars::@4 + //SEG427 processChars::@4 b4: - //SEG419 [253] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG428 [262] *((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 } -//SEG420 irqTop +//SEG429 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG421 entry interrupt(HARDWARE_ALL) + //SEG430 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG422 irqTop::@1 - //SEG423 [255] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG431 irqTop::@1 + //SEG432 [264] *((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 - //SEG424 [256] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG433 [265] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [257] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG434 [266] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG426 irqTop::@return - //SEG427 [258] return - exit interrupt(HARDWARE_ALL) + //SEG435 irqTop::@return + //SEG436 [267] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -10672,7 +10946,7 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill $d*NUM_PROCESSING, 0 + PROCESSING: .fill $e*NUM_PROCESSING, 0 .pc = VXSIN "VXSIN" .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 diff --git a/src/test/ref/complex/clearscreen/clearscreen.sym b/src/test/ref/complex/clearscreen/clearscreen.sym index b9cbead98..df3f0738a 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.sym +++ b/src/test/ref/complex/clearscreen/clearscreen.sym @@ -36,10 +36,11 @@ (const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff (byte) NUM_PROCESSING (const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) 8 +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $c +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $b (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2 @@ -58,6 +59,7 @@ (word) ProcessingChar::dist (byte) ProcessingChar::x (byte) ProcessingChar::y +(byte) ProcessingSprite::col (byte) ProcessingSprite::id (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr @@ -122,13 +124,13 @@ (word) YPOS_TOPMOST (const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:48 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:48 4.0 (byte~) getCharToProcess::$13 reg byte x 1001.0 (byte~) getCharToProcess::$14 reg byte a 2002.0 -(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:50 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:48 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:48 3.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -230,10 +232,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$16 reg byte x 12.375 -(byte) main::$25 reg byte a 22.0 +(byte~) main::$16 reg byte x 12.222222222222221 (byte) main::$26 reg byte a 22.0 (byte) main::$27 reg byte a 22.0 +(byte) main::$28 reg byte a 22.0 +(byte) main::$29 reg byte a 22.0 (struct ProcessingChar~) main::$9 (label) main::@1 (label) main::@2 @@ -255,7 +258,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i (byte) main::i#1 i zp ZP_BYTE:6 16.5 -(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231 +(byte) main::i#2 i zp ZP_BYTE:6 3.6666666666666665 (byte*) main::src (byte*) main::src#1 src zp ZP_WORD:2 11.0 (byte*) main::src#2 src zp ZP_WORD:2 16.5 @@ -290,18 +293,19 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$14 reg byte a 22.0 -(word~) processChars::$15 $15 zp ZP_WORD:56 11.0 +(word~) processChars::$15 $15 zp ZP_WORD:57 11.0 (byte~) processChars::$17 reg byte x 6.6000000000000005 -(word~) processChars::$25 $25 zp ZP_WORD:54 11.0 +(word~) processChars::$25 $25 zp ZP_WORD:55 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::$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 +(byte) processChars::$68 reg byte a 22.0 +(byte) processChars::$69 reg byte a 22.0 +(byte) processChars::$70 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -318,24 +322,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.2916666666666665 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:54 2.2 (byte) processChars::i (byte) processChars::i#1 i zp ZP_BYTE:30 16.5 -(byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.4042553191489362 (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#10 numActive zp ZP_BYTE:31 0.7333333333333333 (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 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:52 0.3142857142857143 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:54 2.0625 +(word) processChars::xpos#0 xpos zp ZP_WORD:55 2.0625 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 22.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp ZP_BYTE:58 2.75 +(byte) processChars::ypos#0 ypos zp ZP_BYTE:59 2.75 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -346,29 +350,30 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) (word~) startProcessing::$0 $0 zp ZP_WORD:34 3.0 (word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002 -(byte~) startProcessing::$21 reg byte a 2.0 -(word~) startProcessing::$22 $22 zp ZP_WORD:45 0.5714285714285714 -(byte~) startProcessing::$29 reg byte a 2002.0 -(byte~) startProcessing::$30 reg byte x 2.25 -(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 -(byte) startProcessing::$40 reg byte a 2002.0 -(byte) startProcessing::$41 reg byte a 2002.0 +(word~) startProcessing::$11 $11 zp ZP_WORD:41 4.0 +(word~) startProcessing::$12 $12 zp ZP_WORD:41 4.0 +(word~) startProcessing::$13 $13 zp ZP_WORD:41 4.0 +(word~) startProcessing::$15 $15 zp ZP_WORD:43 4.0 +(word~) startProcessing::$16 $16 zp ZP_WORD:43 4.0 +(word~) startProcessing::$17 $17 zp ZP_WORD:43 4.0 +(byte~) startProcessing::$22 reg byte a 2.0 +(word~) startProcessing::$23 $23 zp ZP_WORD:46 0.5 +(byte~) startProcessing::$30 reg byte a 2002.0 +(byte~) startProcessing::$31 reg byte x 2.2222222222222228 (byte) startProcessing::$42 reg byte a 2002.0 -(word) startProcessing::$44 $44 zp ZP_WORD:36 4.0 -(word) startProcessing::$45 $45 zp ZP_WORD:34 4.0 -(byte) startProcessing::$47 reg byte a 4.0 -(byte) startProcessing::$48 reg byte a 4.0 -(byte) startProcessing::$49 reg byte a 4.0 +(byte) startProcessing::$43 reg byte a 2002.0 +(byte) startProcessing::$44 reg byte a 2002.0 +(byte) startProcessing::$45 reg byte a 2002.0 +(word) startProcessing::$47 $47 zp ZP_WORD:36 4.0 +(word) startProcessing::$48 $48 zp ZP_WORD:34 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 -(word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 +(byte) startProcessing::$50 reg byte a 4.0 +(byte) startProcessing::$51 reg byte a 4.0 +(byte) startProcessing::$52 reg byte a 4.0 +(byte) startProcessing::$53 reg byte a 4.0 +(word~) startProcessing::$6 $6 zp ZP_WORD:10 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 +(word~) startProcessing::$9 $9 zp ZP_WORD:8 4.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -382,47 +387,53 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.30952380952380953 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.24444444444444444 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData (byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:8 1.3333333333333333 (byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:8 67.33333333333333 (byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:8 101.66666666666666 +(byte*) startProcessing::colPtr +(byte*) startProcessing::colPtr#0 colPtr zp ZP_WORD:38 4.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 29.90909090909092 -(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 28.0 +(byte) startProcessing::freeIdx#6 reg byte x 20.2 (byte~) startProcessing::freeIdx#7 reg byte x 202.0 (byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0 (byte) startProcessing::i (byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5 -(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001 +(byte) startProcessing::i#2 i zp ZP_BYTE:7 858.0 (byte) startProcessing::i1 (byte) startProcessing::i1#1 reg byte x 151.5 (byte) startProcessing::i1#2 reg byte x 50.5 +(word) startProcessing::offset +(word) startProcessing::offset#0 offset zp ZP_WORD:34 2.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.1 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:34 0.14285714285714285 +(byte) startProcessing::spriteCol +(byte) startProcessing::spriteCol#0 spriteCol zp ZP_BYTE:40 0.0975609756097561 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.3333333333333333 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:45 0.3076923076923077 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.3333333333333333 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:41 0.3076923076923077 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.4444444444444444 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:43 0.4 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] -zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] +zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$9 startProcessing::$8 ] +zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$6 startProcessing::$5 ] reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ] @@ -444,9 +455,10 @@ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::re zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#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 a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] +reg byte a [ main::$28 ] +reg byte a [ main::$29 ] reg byte x [ main::$16 ] reg byte x [ getCharToProcess::return_x#0 ] reg byte y [ getCharToProcess::return_y#0 ] @@ -454,43 +466,47 @@ reg byte x [ main::center_x#0 ] reg byte y [ main::center_y#0 ] zp ZP_BYTE:32 [ startProcessing::center_x#0 ] zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$40 ] -reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] -reg byte a [ startProcessing::$29 ] -zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:36 [ startProcessing::$44 ] -zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] +reg byte a [ startProcessing::$43 ] +reg byte a [ startProcessing::$44 ] +reg byte a [ startProcessing::$45 ] +reg byte a [ startProcessing::$30 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$48 startProcessing::$1 startProcessing::offset#0 startProcessing::screenPtr#0 ] +zp ZP_WORD:36 [ startProcessing::$47 ] +zp ZP_WORD:38 [ startProcessing::colPtr#0 ] +zp ZP_BYTE:40 [ startProcessing::spriteCol#0 ] reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$21 ] -zp ZP_WORD:45 [ startProcessing::$22 ] -reg byte a [ startProcessing::$47 ] -reg byte a [ startProcessing::$48 ] -reg byte a [ startProcessing::$49 ] -reg byte x [ startProcessing::$30 ] +zp ZP_WORD:41 [ startProcessing::$11 startProcessing::$12 startProcessing::$13 startProcessing::spriteX#0 ] +zp ZP_WORD:43 [ startProcessing::$15 startProcessing::$16 startProcessing::$17 startProcessing::spriteY#0 ] +zp ZP_BYTE:45 [ startProcessing::spritePtr#0 ] +reg byte a [ startProcessing::$22 ] +zp ZP_WORD:46 [ startProcessing::$23 ] +reg byte a [ startProcessing::$50 ] +reg byte a [ startProcessing::$51 ] +reg byte a [ startProcessing::$52 ] +reg byte a [ startProcessing::$53 ] +reg byte x [ startProcessing::$31 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:49 [ getCharToProcess::$15 ] +zp ZP_WORD:48 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:50 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$65 ] -reg byte a [ processChars::$66 ] reg byte a [ processChars::$67 ] +reg byte a [ processChars::$68 ] +reg byte a [ processChars::$69 ] +reg byte a [ processChars::$70 ] 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::$25 ] +zp ZP_WORD:52 [ processChars::processing#0 ] +zp ZP_BYTE:54 [ processChars::bitmask#0 ] +zp ZP_WORD:55 [ processChars::xpos#0 processChars::$25 ] reg byte a [ processChars::$11 ] reg byte a [ processChars::$12 ] reg byte x [ processChars::$17 ] reg byte a [ processChars::$14 ] -zp ZP_WORD:56 [ processChars::$15 ] -zp ZP_BYTE:58 [ processChars::ypos#0 ] +zp ZP_WORD:57 [ processChars::$15 ] +zp ZP_BYTE:59 [ processChars::ypos#0 ] reg byte a [ processChars::$26 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$38 ]