diff --git a/src/main/fragment/_deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuyy.asm b/src/main/fragment/_deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuyy.asm new file mode 100644 index 000000000..b02129674 --- /dev/null +++ b/src/main/fragment/_deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuyy.asm @@ -0,0 +1,12 @@ +sty $ff +clc +lda ({z1}),y +ldy #0 +adc ({z1}),y +sta ({z1}),y +ldy $ff +iny +lda ({z1}),y +ldy #1 +adc ({z1}),y +sta ({z1}),y diff --git a/src/main/fragment/pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2.asm b/src/main/fragment/pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2.asm new file mode 100644 index 000000000..0f778d58d --- /dev/null +++ b/src/main/fragment/pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2.asm @@ -0,0 +1,11 @@ +ldy #{c2} +clc +lda ({z1}),y +ldy #{c1} +adc ({z1}),y +sta ({z1}),y +ldy #{c2}+1 +lda ({z1}),y +ldy #{c1}+1 +adc ({z1}),y +sta ({z1}),y diff --git a/src/main/fragment/unused/vwuz1=_word_vbsz2.asm b/src/main/fragment/unused/vwuz1=_word_vbsz2.asm deleted file mode 100644 index 3437a13c1..000000000 --- a/src/main/fragment/unused/vwuz1=_word_vbsz2.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda {z2} -sta {z1} -lda #0 -sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vbsaa=vbsaa_plus_1.asm b/src/main/fragment/vbsaa=vbsaa_plus_1.asm new file mode 100644 index 000000000..46f7e9c4b --- /dev/null +++ b/src/main/fragment/vbsaa=vbsaa_plus_1.asm @@ -0,0 +1,2 @@ +clc +adc #1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=_word_vbsaa.asm b/src/main/fragment/vwuz1=_word_vbsaa.asm new file mode 100644 index 000000000..3f83f0355 --- /dev/null +++ b/src/main/fragment/vwuz1=_word_vbsaa.asm @@ -0,0 +1,7 @@ +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 \ No newline at end of file diff --git a/src/main/script/kickc.sh b/src/main/script/kickc.sh index d0742f755..7ff62b9cc 100755 --- a/src/main/script/kickc.sh +++ b/src/main/script/kickc.sh @@ -12,5 +12,12 @@ export KICKC_FRAGMENT_HOME="$KICKC_HOME/fragment" # KICKC_JAR export KICKC_JAR=$KICKC_HOME/lib/kickc-*.jar -echo java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME $* -java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $* \ No newline at end of file +# Parse parameters (overriding defaults) +export PARAM=""; +while [[ "$#" -gt 0 ]]; do case $1 in + -F|--fragmentdir) export KICKC_FRAGMENT_HOME="$2"; shift; shift;; + *) export PARAM="$PARAM $1"; shift;; +esac; done + +echo java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $PARAM +java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $PARAM \ No newline at end of file diff --git a/src/test/kc/complex/blackhole/blackhole.kc b/src/test/kc/complex/blackhole/blackhole.kc index 7dc6abad0..5954cb927 100644 --- a/src/test/kc/complex/blackhole/blackhole.kc +++ b/src/test/kc/complex/blackhole/blackhole.kc @@ -34,6 +34,10 @@ struct ProcessingSprite { word x; // sprite y-position. Fixed point [12.4]. Values (30-228) word y; + // sprite x velocity. Fixed point [12.4] + word vx; + // sprite y velocity. Fixed point [12.4] + word vy; // sprite ID (0-7) byte id; // sprite pointer (0-255) @@ -58,7 +62,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, STATUS_FREE, 0}; + for( byte i: 0..NUM_PROCESSING-1 ) PROCESSING[i] = { 0, 0, 0, 0, 0, 0, STATUS_FREE, 0}; // Init sprites initSprites(); // Set-up raster interrupts @@ -132,7 +136,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, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; + PROCESSING[spriteIdx] = { spriteX, spriteY, (word)-((signed byte)spriteIdx*2-8), (word)-16, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; } const word XPOS_LEFTMOST = (word)(BORDER_XPOS_LEFT-8)<<4; @@ -172,8 +176,8 @@ void processChars() { // Disable the sprite *SPRITES_ENABLE &= 0xff ^ bitmask; } else { - processing->y -= 16; - processing->x -= 16; + processing->x += processing->vx; + processing->y += processing->vy; } numActive++; } diff --git a/src/test/ref/complex/blackhole/blackhole.asm b/src/test/ref/complex/blackhole/blackhole.asm index c4400d5d0..8c17f8780 100644 --- a/src/test/ref/complex/blackhole/blackhole.asm +++ b/src/test/ref/complex/blackhole/blackhole.asm @@ -3,10 +3,12 @@ :BasicUpstart(main) .pc = $80d "Program" .const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2 - .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 4 - .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 5 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 6 - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 7 + .const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4 + .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 // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -72,7 +74,8 @@ main: { .label src = 2 .label dst = 4 - .label center_dist = $13 + .label i = 6 + .label center_dist = $14 jsr initSquareTables lda #-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x lda spritePtr @@ -400,21 +436,21 @@ startProcessing: { // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff getCharToProcess: { - .label _9 = $2c - .label _10 = $2c - .label _11 = $2c - .label return_dist = $13 - .label x = $e - .label dist = $13 - .label screen_line = $b - .label y = $d - .label return_x = $11 - .label return_y = $12 - .label closest_dist = $f - .label closest_x = $11 - .label closest_y = $12 - .label _15 = $2e - .label _16 = $2c + .label _9 = $2f + .label _10 = $2f + .label _11 = $2f + .label return_dist = $14 + .label x = $f + .label dist = $14 + .label screen_line = $c + .label y = $e + .label return_x = $12 + .label return_y = $13 + .label closest_dist = $10 + .label closest_x = $12 + .label closest_y = $13 + .label _15 = $31 + .label _16 = $2f lda #0 sta closest_y sta closest_x @@ -582,7 +618,7 @@ setupRasterIrq: { } // Initialize sprites initSprites: { - .label sp = $15 + .label sp = $16 lda #SPRITE_DATA @@ -620,10 +656,10 @@ initSprites: { } // initialize SQUARES table initSquareTables: { - .label _6 = $19 - .label _14 = $19 - .label x = $17 - .label y = $18 + .label _6 = $1a + .label _14 = $1a + .label x = $18 + .label y = $19 lda #0 sta x b1: @@ -689,9 +725,9 @@ initSquareTables: { // 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 = $1b - .label res = $19 - .label return = $19 + .label mb = $1c + .label res = $1a + .label return = $1a lda #0 sta res sta res+1 @@ -757,18 +793,20 @@ irqBottom: { } // Process any chars in the PROCESSING array processChars: { - .label _17 = $35 - .label processing = $30 - .label bitmask = $32 - .label i = $1d - .label xpos = $33 - .label numActive = $1e + .label _17 = $38 + .label processing = $33 + .label bitmask = $35 + .label i = $1e + .label xpos = $36 + .label numActive = $1f lda #0 sta numActive sta i b1: lda i asl + clc + adc i asl asl clc @@ -897,23 +935,29 @@ processChars: { cmp #$10 - sta (processing),y ldy #0 - lda (processing),y - sec - sbc #<$10 + adc (processing),y sta (processing),y + ldy $ff iny lda (processing),y - sbc #>$10 + ldy #1 + adc (processing),y + sta (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY + clc + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + adc (processing),y + sta (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1 + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 + adc (processing),y sta (processing),y b7: inc numActive @@ -992,4 +1036,4 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill 9*NUM_PROCESSING, 0 + PROCESSING: .fill $d*NUM_PROCESSING, 0 diff --git a/src/test/ref/complex/blackhole/blackhole.cfg b/src/test/ref/complex/blackhole/blackhole.cfg index 351832bae..58eddd05a 100644 --- a/src/test/ref/complex/blackhole/blackhole.cfg +++ b/src/test/ref/complex/blackhole/blackhole.cfg @@ -21,424 +21,440 @@ main::@1: scope:[main] from main main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [11] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::i#1 ) - [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 - [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 - [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 - [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 - [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 - [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 - [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 - [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 - [20] (byte) main::i#1 ← ++ (byte) main::i#2 - [21] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 + [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 + [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 + [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 + [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 + [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 + [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 + [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 + [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 + [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 + [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 + [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 + [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 + [24] (byte) main::i#1 ← ++ (byte) main::i#2 + [25] 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 - [22] phi() - [23] call initSprites + [26] phi() + [27] call initSprites to:main::@7 main::@7: scope:[main] from main::@3 - [24] phi() - [25] call setupRasterIrq + [28] phi() + [29] call setupRasterIrq to:main::@4 main::@4: scope:[main] from main::@5 main::@7 - [26] phi() - [27] call getCharToProcess - [28] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 - [29] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 - [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + [30] phi() + [31] call getCharToProcess + [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 + [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 + [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 to:main::@8 main::@8: scope:[main] from main::@4 - [31] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - [32] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 + [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 to:main::@6 main::@6: scope:[main] from main::@6 main::@8 - [35] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) + [39] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) to:main::@6 main::@5: scope:[main] from main::@8 - [36] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 - [37] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 - [38] call startProcessing + [40] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 + [41] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 + [42] call startProcessing to:main::@4 startProcessing: scope:[startProcessing] from main::@5 - [39] phi() + [43] phi() to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8 - [40] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 ) + [44] (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 - [41] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 - [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 - [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 + [45] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) + [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 + [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 + [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 + [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 + [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9 - [45] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) - [46] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 + [51] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) + [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 - [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 - [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 - [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 - [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 - [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 - [52] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 - [53] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 - [54] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 - [55] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 - [56] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) - [57] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 - [58] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 - [59] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 + [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 + [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 + [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 + [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 + [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 + [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 + [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 + [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 + [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 + [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) + [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 + [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 + [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 asm { sei } - [61] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 + [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 to:startProcessing::@6 startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6 - [62] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) - [62] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) - [62] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) - [63] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) - [64] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 - [65] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 - [66] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 - [67] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 + [68] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) + [68] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) + [68] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) + [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) + [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 + [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 + [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 + [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 to:startProcessing::@7 startProcessing::@7: scope:[startProcessing] from startProcessing::@6 - [68] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 asm { cli } - [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 - [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 - [72] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 - [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 - [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 - [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 - [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 - [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 - [78] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 - [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 - [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 - [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 - [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 - [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 - [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 - [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 - [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 + [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 + [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 + [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 + [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 + [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 + [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 + [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 + [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 + [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 + [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 + [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 + [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 + [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 + [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 + [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 + [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 + [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 + [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 + [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 + [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 + [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 + [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 + [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 + [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 + [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@7 - [87] return + [101] return to:@return startProcessing::@8: scope:[startProcessing] from startProcessing::@4 - [88] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [89] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [90] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 + [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [104] 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 - [91] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 getCharToProcess: scope:[getCharToProcess] from main::@4 - [92] phi() + [106] phi() to:getCharToProcess::@1 getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 - [93] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) - [93] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) - [93] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) - [93] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) - [93] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + [107] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [107] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [107] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) + [107] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [107] (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 - [94] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) - [94] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) - [94] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) - [94] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) - [95] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + [108] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [108] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [108] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) + [108] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 to:getCharToProcess::@4 getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 - [96] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 - [97] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 - [98] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) - [99] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [102] (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 ) - [102] (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 ) - [102] (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 ) - [103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [116] (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 ) + [116] (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 ) + [116] (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 ) + [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [110] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [113] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [115] return + [129] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@7 asm { sei } - [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [129] return + [143] return to:@return initSprites: scope:[initSprites] from main::@3 - [130] phi() + [144] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [131] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [132] *((byte*) initSprites::sp#2) ← (byte) 0 - [133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [134] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [145] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [146] *((byte*) initSprites::sp#2) ← (byte) 0 + [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [148] 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 - [135] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [149] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [142] return + [156] return to:@return initSquareTables: scope:[initSquareTables] from main - [143] phi() + [157] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [144] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [158] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [147] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [150] call mul8u - [151] (word) mul8u::return#2 ← (word) mul8u::res#2 + [161] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [164] call mul8u + [165] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [157] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [171] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [160] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [163] call mul8u - [164] (word) mul8u::return#3 ← (word) mul8u::res#2 + [174] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [177] call mul8u + [178] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [170] return + [184] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [173] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [173] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [187] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [187] (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 - [174] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [174] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [174] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [188] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [188] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [188] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [176] return + [190] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [180] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [194] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [183] phi() + [197] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [184] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [198] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [189] call processChars + [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [203] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [195] return + [209] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [196] phi() + [210] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [197] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [197] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 - [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 - [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 - [201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [202] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [211] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [211] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 + [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 + [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 + [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 + [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 + [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [218] 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 - [203] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [219] 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 - [204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [206] *((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) - [207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 + [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [222] *((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) + [223] *((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 - [208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 + [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 + [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 - [216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 - [218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 - [219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 + [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 + [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 + [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 + [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 + [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 + [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@5 - [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 + [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 to:processChars::@9 processChars::@9: scope:[processChars] from processChars::@13 - [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 - [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 + [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [238] *((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 - [223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [224] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + [240] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@12 processChars::@12: scope:[processChars] from processChars::@2 - [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 + [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 + [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@12 - [229] return + [245] return to:@return processChars::@6: scope:[processChars] from processChars::@13 processChars::@5 - [230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 + [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [234] phi() + [250] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [235] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [251] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 - [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [240] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 + [256] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) + [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@4 - [248] return + [264] return to:@return diff --git a/src/test/ref/complex/blackhole/blackhole.log b/src/test/ref/complex/blackhole/blackhole.log index 869513e54..b506fcd99 100644 --- a/src/test/ref/complex/blackhole/blackhole.log +++ b/src/test/ref/complex/blackhole/blackhole.log @@ -35,10 +35,12 @@ Converted struct value to member variables (struct ProcessingChar) startProcessi Converted procedure struct value parameter to member variables (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) Adding struct value list initializer *((word*) main::$16 + (byte~) main::$15) ← (number) 0 Adding struct value list initializer *((word*) main::$17 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$18 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$19 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$20 + (byte~) main::$15) ← (byte) STATUS_FREE -Adding struct value list initializer *((byte**) main::$21 + (byte~) main::$15) ← (number) 0 +Adding struct value list initializer *((word*) main::$18 + (byte~) main::$15) ← (number) 0 +Adding struct value list initializer *((word*) main::$19 + (byte~) main::$15) ← (number) 0 +Adding struct value list initializer *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 +Adding struct value list initializer *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 +Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$15) ← (byte) STATUS_FREE +Adding struct value list initializer *((byte**) main::$23 + (byte~) main::$15) ← (number) 0 Converted procedure call LValue to member variables { (byte) main::$8_x, (byte) main::$8_y, (word) main::$8_dist } ← call getCharToProcess Adding struct value member variable copy (byte) main::center_x ← (byte) main::$8_x Adding struct value member variable copy (byte) main::center_y ← (byte) main::$8_y @@ -57,12 +59,14 @@ 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::$29 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX -Adding struct value list initializer *((word*) startProcessing::$30 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY -Adding struct value list initializer *((byte*) startProcessing::$31 + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteIdx -Adding struct value list initializer *((byte*) startProcessing::$32 + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr -Adding struct value list initializer *((byte*) startProcessing::$33 + (byte~) startProcessing::$28) ← (byte) STATUS_NEW -Adding struct value list initializer *((byte**) startProcessing::$34 + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr +Adding struct value list initializer *((word*) startProcessing::$35 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX +Adding struct value list initializer *((word*) startProcessing::$36 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY +Adding struct value list initializer *((word*) startProcessing::$37 + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 +Adding struct value list initializer *((word*) startProcessing::$38 + (byte~) startProcessing::$34) ← (word~) startProcessing::$26 +Adding struct value list initializer *((byte*) startProcessing::$39 + (byte~) startProcessing::$34) ← (byte) startProcessing::spriteIdx +Adding struct value list initializer *((byte*) startProcessing::$40 + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr +Adding struct value list initializer *((byte*) startProcessing::$41 + (byte~) startProcessing::$34) ← (byte) STATUS_NEW +Adding struct value list initializer *((byte**) startProcessing::$42 + (byte~) startProcessing::$34) ← (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 @@ -72,7 +76,7 @@ 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::$27).status +Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$33).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 @@ -85,10 +89,12 @@ Rewriting struct pointer member access *((struct ProcessingSprite*) processChars Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status -Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y -Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$12 Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0 Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1 @@ -136,7 +142,7 @@ Adding pointer type conversion cast (void()**) KERNEL_IRQ in (void()**) KERNEL_I Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWARE_IRQ ← (number) $fffe Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 Adding pointer type conversion cast (byte*) SPRITE_DATA in (byte*) SPRITE_DATA ← (number) $2000 -Adding pointer type conversion cast (byte*) *(main::$21 + main::$15) in *((byte**) main::$21 + (byte~) main::$15) ← (number) 0 +Adding pointer type conversion cast (byte*) *(main::$23 + main::$15) in *((byte**) main::$23 + (byte~) main::$15) ← (number) 0 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Culled Empty Block (label) @1 Culled Empty Block (label) @2 @@ -294,14 +300,18 @@ main::@3: scope:[main] from main::@2 main::@3 *((word*) main::$16 + (byte~) main::$15) ← (number) 0 (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y *((word*) main::$17 + (byte~) main::$15) ← (number) 0 - (byte*) main::$18 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) main::$18 + (byte~) main::$15) ← (number) 0 - (byte*) main::$19 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) main::$19 + (byte~) main::$15) ← (number) 0 - (byte*) main::$20 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) main::$20 + (byte~) main::$15) ← (byte) STATUS_FREE#0 - (byte**) main::$21 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) main::$21 + (byte~) main::$15) ← ((byte*)) (number) 0 + (word*) main::$18 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) main::$18 + (byte~) main::$15) ← (number) 0 + (word*) main::$19 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) main::$19 + (byte~) main::$15) ← (number) 0 + (byte*) main::$20 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 + (byte*) main::$21 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 + (byte*) main::$22 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) main::$22 + (byte~) main::$15) ← (byte) STATUS_FREE#0 + (byte**) main::$23 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) main::$23 + (byte~) main::$15) ← ((byte*)) (number) 0 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$6) (bool~) main::$7 ← (byte) main::i#1 != rangelast(0,main::$6) if((bool~) main::$7) goto main::@3 @@ -473,7 +483,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::$21 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) startProcessing::$27 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) startProcessing::i#0 ← (byte) 0 to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 @@ -481,20 +491,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::$27 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (byte*) startProcessing::$35 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) startProcessing::$22 ← *((byte*) startProcessing::$35 + (byte~) startProcessing::$27) == (byte) STATUS_FREE#0 - (bool~) startProcessing::$23 ← ! (bool~) startProcessing::$22 - if((bool~) startProcessing::$23) goto startProcessing::@3 + (byte~) startProcessing::$33 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (byte*) startProcessing::$43 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (bool~) startProcessing::$28 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) == (byte) STATUS_FREE#0 + (bool~) startProcessing::$29 ← ! (bool~) startProcessing::$28 + if((bool~) startProcessing::$29) 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::$21) - (bool~) startProcessing::$24 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$21) - if((bool~) startProcessing::$24) goto startProcessing::@2 + (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,startProcessing::$27) + (bool~) startProcessing::$30 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$27) + if((bool~) startProcessing::$30) 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 ) @@ -506,8 +516,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::$25 ← (byte) startProcessing::freeIdx#2 == (number) $ff - if((bool~) startProcessing::$25) goto startProcessing::@1 + (bool~) startProcessing::$31 ← (byte) startProcessing::freeIdx#2 == (number) $ff + if((bool~) startProcessing::$31) 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 ) @@ -544,8 +554,8 @@ 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::$26 ← (byte) startProcessing::i1#1 != rangelast(0,7) - if((bool~) startProcessing::$26) goto startProcessing::@9 + (bool~) startProcessing::$32 ← (byte) startProcessing::i1#1 != rangelast(0,7) + if((bool~) startProcessing::$32) goto startProcessing::@9 to:startProcessing::@10 startProcessing::@10: scope:[startProcessing] from startProcessing::@9 (byte*) startProcessing::screenPtr#1 ← phi( startProcessing::@9/(byte*) startProcessing::screenPtr#2 ) @@ -568,19 +578,29 @@ startProcessing::@10: scope:[startProcessing] from startProcessing::@9 (byte~) startProcessing::$19 ← ((byte)) (byte*~) startProcessing::$18 (byte~) startProcessing::$20 ← (byte~) startProcessing::$19 + (byte) startProcessing::spriteIdx#1 (byte) startProcessing::spritePtr#0 ← (byte~) startProcessing::$20 - (byte~) startProcessing::$28 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (word*) startProcessing::$29 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) startProcessing::$29 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 - (word*) startProcessing::$30 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) startProcessing::$30 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 - (byte*) startProcessing::$31 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) startProcessing::$31 + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteIdx#1 - (byte*) startProcessing::$32 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) startProcessing::$32 + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 - (byte*) startProcessing::$33 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) startProcessing::$33 + (byte~) startProcessing::$28) ← (byte) STATUS_NEW#0 - (byte**) startProcessing::$34 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) startProcessing::$34 + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#1 + (signed byte~) startProcessing::$21 ← ((signed byte)) (byte) startProcessing::spriteIdx#1 + (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (number) 2 + (number~) startProcessing::$23 ← (number~) startProcessing::$22 - (number) 8 + (number~) startProcessing::$24 ← - (number~) startProcessing::$23 + (word~) startProcessing::$25 ← ((word)) (number~) startProcessing::$24 + (word~) startProcessing::$26 ← ((word)) (number) -$10 + (byte~) startProcessing::$34 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (word*) startProcessing::$35 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) startProcessing::$35 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 + (word*) startProcessing::$36 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) startProcessing::$36 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 + (word*) startProcessing::$37 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) startProcessing::$37 + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 + (word*) startProcessing::$38 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) startProcessing::$38 + (byte~) startProcessing::$34) ← (word~) startProcessing::$26 + (byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) startProcessing::$39 + (byte~) startProcessing::$34) ← (byte) startProcessing::spriteIdx#1 + (byte*) startProcessing::$40 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*) startProcessing::$40 + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 + (byte*) startProcessing::$41 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) startProcessing::$41 + (byte~) startProcessing::$34) ← (byte) STATUS_NEW#0 + (byte**) startProcessing::$42 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) startProcessing::$42 + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#1 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@10 return @@ -640,8 +660,8 @@ processChars::@3: scope:[processChars] from processChars::@12 processChars::@13 (word~) processChars::$11 ← *((word*) processChars::$28) >> (number) 4 (word) processChars::xpos#0 ← (word~) processChars::$11 (byte~) processChars::$12 ← > (word) processChars::xpos#0 - (bool~) processChars::$41 ← (number) 0 != (byte~) processChars::$12 - if((bool~) processChars::$41) goto processChars::@4 + (bool~) processChars::$43 ← (number) 0 != (byte~) processChars::$12 + if((bool~) processChars::$43) goto processChars::@4 to:processChars::@8 processChars::@13: scope:[processChars] from processChars::@12 (byte) processChars::numActive#13 ← phi( processChars::@12/(byte) processChars::numActive#12 ) @@ -711,12 +731,14 @@ processChars::@10: scope:[processChars] from processChars::@5 (byte) processChars::i#9 ← phi( processChars::@5/(byte) processChars::i#4 ) (byte) processChars::numActive#4 ← phi( processChars::@5/(byte) processChars::numActive#8 ) (struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) - (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) processChars::$38) ← *((word*) processChars::$37) - (number) $10 + (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) processChars::$40) ← *((word*) processChars::$39) - (number) $10 + *((word*) processChars::$39) ← *((word*) processChars::$37) + *((word*) processChars::$38) + (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (word*) processChars::$41 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) processChars::$42) ← *((word*) processChars::$40) + *((word*) processChars::$41) to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@10 processChars::@6 (byte) processChars::i#5 ← phi( processChars::@10/(byte) processChars::i#9 processChars::@6/(byte) processChars::i#10 ) @@ -992,10 +1014,12 @@ SYMBOL TABLE SSA (word) NOT_FOUND#0 (byte) NUM_PROCESSING (byte) NUM_PROCESSING#0 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 4 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 5 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) 7 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) 6 +(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_VX = (byte) 4 +(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X = (byte) 0 (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2 (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING @@ -1017,6 +1041,8 @@ SYMBOL TABLE SSA (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr (byte) ProcessingSprite::status +(word) ProcessingSprite::vx +(word) ProcessingSprite::vy (word) ProcessingSprite::x (word) ProcessingSprite::y (byte*) RASTER @@ -1029,7 +1055,7 @@ SYMBOL TABLE SSA (byte*) SCREEN#0 (byte[$3e8]) SCREEN_COPY (byte[$3e8]) SCREEN_COPY#0 -(const byte) SIZEOF_STRUCT_PROCESSINGSPRITE = (byte) 9 +(const byte) SIZEOF_STRUCT_PROCESSINGSPRITE = (byte) $d (const byte) SIZEOF_WORD = (byte) 2 (byte*) SPRITES_COLS (byte*) SPRITES_COLS#0 @@ -1279,11 +1305,13 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) main::$15 (word*) main::$16 (word*) main::$17 -(byte*) main::$18 -(byte*) main::$19 +(word*) main::$18 +(word*) main::$19 (void()*~) main::$2 (byte*) main::$20 -(byte**) main::$21 +(byte*) main::$21 +(byte*) main::$22 +(byte**) main::$23 (byte*~) main::$4 (bool~) main::$5 (number~) main::$6 @@ -1415,7 +1443,9 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word*) processChars::$39 (number~) processChars::$4 (word*) processChars::$40 -(bool~) processChars::$41 +(word*) processChars::$41 +(word*) processChars::$42 +(bool~) processChars::$43 (bool~) processChars::$5 (bool~) processChars::$6 (bool~) processChars::$7 @@ -1521,23 +1551,31 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) startProcessing::$19 (byte*~) startProcessing::$2 (byte~) startProcessing::$20 -(number~) startProcessing::$21 -(bool~) startProcessing::$22 -(bool~) startProcessing::$23 -(bool~) startProcessing::$24 -(bool~) startProcessing::$25 -(bool~) startProcessing::$26 -(byte~) startProcessing::$27 -(byte~) startProcessing::$28 -(word*) startProcessing::$29 +(signed byte~) startProcessing::$21 +(number~) startProcessing::$22 +(number~) startProcessing::$23 +(number~) startProcessing::$24 +(word~) startProcessing::$25 +(word~) startProcessing::$26 +(number~) startProcessing::$27 +(bool~) startProcessing::$28 +(bool~) startProcessing::$29 (byte*~) startProcessing::$3 -(word*) startProcessing::$30 -(byte*) startProcessing::$31 -(byte*) startProcessing::$32 -(byte*) startProcessing::$33 -(byte**) startProcessing::$34 -(byte*) startProcessing::$35 +(bool~) startProcessing::$30 +(bool~) startProcessing::$31 +(bool~) startProcessing::$32 +(byte~) startProcessing::$33 +(byte~) startProcessing::$34 +(word*) startProcessing::$35 +(word*) startProcessing::$36 +(word*) startProcessing::$37 +(word*) startProcessing::$38 +(byte*) startProcessing::$39 (word~) startProcessing::$4 +(byte*) startProcessing::$40 +(byte*) startProcessing::$41 +(byte**) startProcessing::$42 +(byte*) startProcessing::$43 (number~) startProcessing::$5 (byte*~) startProcessing::$6 (word~) startProcessing::$7 @@ -1648,8 +1686,10 @@ Adding number conversion cast (unumber) 1 in (number~) main::$6 ← (byte) NUM_P Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 Adding number conversion cast (unumber) 0 in *((word*) main::$16 + (byte~) main::$15) ← (number) 0 Adding number conversion cast (unumber) 0 in *((word*) main::$17 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte*) main::$18 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte*) main::$19 + (byte~) main::$15) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((word*) main::$18 + (byte~) main::$15) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((word*) main::$19 + (byte~) main::$15) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 Adding number conversion cast (unumber) $3e7 in (byte*~) main::$14 ← (byte*) COLS#0 + (number) $3e7 Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_x#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_y#0 ← (number) 0 @@ -1657,9 +1697,9 @@ 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::$21 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) startProcessing::$21 in (number~) startProcessing::$21 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$25 ← (byte) startProcessing::freeIdx#2 == (number) $ff +Adding number conversion cast (unumber) 1 in (number~) startProcessing::$27 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) startProcessing::$27 in (number~) startProcessing::$27 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$31 ← (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 @@ -1678,6 +1718,11 @@ Adding number conversion cast (unumber) startProcessing::$16 in (number~) startP 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 (snumber) 2 in (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (number) 2 +Adding number conversion cast (snumber) startProcessing::$22 in (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (snumber)(number) 2 +Adding number conversion cast (snumber) 8 in (number~) startProcessing::$23 ← (snumber~) startProcessing::$22 - (number) 8 +Adding number conversion cast (snumber) startProcessing::$23 in (number~) startProcessing::$23 ← (snumber~) startProcessing::$22 - (snumber)(number) 8 +Adding number conversion cast (snumber) startProcessing::$24 in (number~) startProcessing::$24 ← - (snumber~) startProcessing::$23 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 @@ -1690,7 +1735,7 @@ Adding number conversion cast (unumber) processChars::$2 in (number~) processCha Adding number conversion cast (unumber) 1 in (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$25) Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (unumber)(number) 1 << *((byte*) processChars::$25) Adding number conversion cast (unumber) 4 in (word~) processChars::$11 ← *((word*) processChars::$28) >> (number) 4 -Adding number conversion cast (unumber) 0 in (bool~) processChars::$41 ← (number) 0 != (byte~) processChars::$12 +Adding number conversion cast (unumber) 0 in (bool~) processChars::$43 ← (number) 0 != (byte~) processChars::$12 Adding number conversion cast (unumber) $ff in (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 Adding number conversion cast (unumber) 2 in (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 @@ -1700,8 +1745,6 @@ Adding number conversion cast (unumber) processChars::$16 in (number~) processCh Adding number conversion cast (unumber) 4 in (word~) processChars::$17 ← *((word*) processChars::$33) >> (number) 4 Adding number conversion cast (unumber) $ff in (number~) processChars::$22 ← (number) $ff ^ (byte) processChars::bitmask#4 Adding number conversion cast (unumber) processChars::$22 in (number~) processChars::$22 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) $10 in *((word*) processChars::$38) ← *((word*) processChars::$37) - (number) $10 -Adding number conversion cast (unumber) $10 in *((word*) processChars::$40) ← *((word*) processChars::$39) - (number) $10 Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 Adding number conversion cast (unumber) $14 in (bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14 Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3 @@ -1774,9 +1817,11 @@ Inlining cast (byte) STATUS_NEW#0 ← (unumber)(number) 1 Inlining cast (byte) STATUS_PROCESSING#0 ← (unumber)(number) 2 Inlining cast *((word*) main::$16 + (byte~) main::$15) ← (unumber)(number) 0 Inlining cast *((word*) main::$17 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte*) main::$18 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte*) main::$19 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte**) main::$21 + (byte~) main::$15) ← (byte*)(number) 0 +Inlining cast *((word*) main::$18 + (byte~) main::$15) ← (unumber)(number) 0 +Inlining cast *((word*) main::$19 + (byte~) main::$15) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$20 + (byte~) main::$15) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$21 + (byte~) main::$15) ← (unumber)(number) 0 +Inlining cast *((byte**) main::$23 + (byte~) main::$15) ← (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 @@ -1787,6 +1832,9 @@ 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 (signed byte~) startProcessing::$21 ← (signed byte)(byte) startProcessing::spriteIdx#1 +Inlining cast (word~) startProcessing::$25 ← (word)(snumber~) startProcessing::$24 +Inlining cast (word~) startProcessing::$26 ← (word)(number) -$10 Inlining cast (word~) $1 ← (word)(unumber~) $0 Inlining cast (word~) $4 ← (word)(unumber~) $3 Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0 @@ -1849,6 +1897,8 @@ 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 integer cast 0 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast $3e7 Simplifying constant integer cast 0 @@ -1867,6 +1917,9 @@ Simplifying constant integer cast 4 Simplifying constant integer cast 8 Simplifying constant integer cast 4 Simplifying constant integer cast $40 +Simplifying constant integer cast 2 +Simplifying constant integer cast 8 +Simplifying constant integer cast -$10 Simplifying constant integer cast 8 Simplifying constant integer cast 4 Simplifying constant integer cast 8 @@ -1881,8 +1934,6 @@ Simplifying constant integer cast 2 Simplifying constant integer cast 2 Simplifying constant integer cast 4 Simplifying constant integer cast $ff -Simplifying constant integer cast $10 -Simplifying constant integer cast $10 Simplifying constant integer cast $3e7 Simplifying constant integer cast $14 Simplifying constant integer cast $14 @@ -1929,6 +1980,8 @@ 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 (byte) 0 Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -1946,6 +1999,8 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $40 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 8 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 @@ -1960,8 +2015,6 @@ Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $ff -Finalized unsigned number type (byte) $10 -Finalized unsigned number type (byte) $10 Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $14 @@ -1983,7 +2036,7 @@ 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::$6 ← (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::$21 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) startProcessing::$27 ← (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 @@ -1993,6 +2046,9 @@ Inferred type updated to word in (unumber~) startProcessing::$13 ← (word~) sta 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 signed byte in (snumber~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (signed byte) 2 +Inferred type updated to signed byte in (snumber~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 +Inferred type updated to signed byte in (snumber~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 Inferred type updated to byte in (unumber~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (byte) 8 Inferred type updated to byte in (unumber~) $3 ← (byte) BORDER_YPOS_TOP#0 - (byte) 8 Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (byte) 1 @@ -2013,13 +2069,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 [40] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [39] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [110] (bool~) main::$10 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [109] (bool~) main::$9 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 -Inversing boolean not [131] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [130] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' -Inversing boolean not [143] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [142] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 -Inversing boolean not [156] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [155] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 -Inversing boolean not [182] (bool~) startProcessing::$23 ← *((byte*) startProcessing::$35 + (byte~) startProcessing::$27) != (byte) STATUS_FREE#0 from [181] (bool~) startProcessing::$22 ← *((byte*) startProcessing::$35 + (byte~) startProcessing::$27) == (byte) STATUS_FREE#0 -Inversing boolean not [270] (bool~) processChars::$6 ← *((byte*) processChars::$26) == (byte) STATUS_FREE#0 from [269] (bool~) processChars::$5 ← *((byte*) processChars::$26) != (byte) STATUS_FREE#0 -Inversing boolean not [279] (bool~) processChars::$8 ← *((byte*) processChars::$27) != (byte) STATUS_NEW#0 from [278] (bool~) processChars::$7 ← *((byte*) processChars::$27) == (byte) STATUS_NEW#0 +Inversing boolean not [114] (bool~) main::$10 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [113] (bool~) main::$9 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 +Inversing boolean not [135] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [134] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' +Inversing boolean not [147] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [146] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 +Inversing boolean not [160] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [159] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 +Inversing boolean not [186] (bool~) startProcessing::$29 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) != (byte) STATUS_FREE#0 from [185] (bool~) startProcessing::$28 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) == (byte) STATUS_FREE#0 +Inversing boolean not [284] (bool~) processChars::$6 ← *((byte*) processChars::$26) == (byte) STATUS_FREE#0 from [283] (bool~) processChars::$5 ← *((byte*) processChars::$26) != (byte) STATUS_FREE#0 +Inversing boolean not [293] (bool~) processChars::$8 ← *((byte*) processChars::$27) != (byte) STATUS_NEW#0 from [292] (bool~) processChars::$7 ← *((byte*) processChars::$27) == (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 @@ -2154,45 +2210,45 @@ Identical Phi Values (byte*) startProcessing::screenPtr#1 (byte*) startProcessin Identical Phi Values (word) setupRasterIrq::raster#1 (word) setupRasterIrq::raster#0 Identical Phi Values (void()*) setupRasterIrq::irqRoutine#1 (void()*) setupRasterIrq::irqRoutine#0 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [308] (byte~) processChars::$16 ← (byte) processChars::i#10 * (byte) 2 +Identified duplicate assignment right side [322] (byte~) processChars::$16 ← (byte) processChars::i#10 * (byte) 2 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) mul8u::$0 [36] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [41] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 Simple Condition (bool~) main::$5 [73] if((byte*) main::src#1!=(byte*~) main::$4) goto main::@1 -Simple Condition (bool~) main::$7 [92] if((byte) main::i#1!=rangelast(0,main::$6)) goto main::@3 -Simple Condition (bool~) main::$10 [111] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 -Simple Condition (bool~) getCharToProcess::$3 [132] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$7 [136] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 -Simple Condition (bool~) getCharToProcess::$6 [144] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$8 [153] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 -Simple Condition (bool~) getCharToProcess::$1 [157] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 -Simple Condition (bool~) startProcessing::$23 [183] if(*((byte*) startProcessing::$35 + (byte~) startProcessing::$27)!=(byte) STATUS_FREE#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$24 [187] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$21)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$25 [192] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) startProcessing::$26 [218] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 -Simple Condition (bool~) processChars::$6 [271] if(*((byte*) processChars::$26)==(byte) STATUS_FREE#0) goto processChars::@2 -Simple Condition (bool~) processChars::$23 [275] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 -Simple Condition (bool~) processChars::$8 [280] if(*((byte*) processChars::$27)!=(byte) STATUS_NEW#0) goto processChars::@3 -Simple Condition (bool~) processChars::$41 [287] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -Simple Condition (bool~) initSquareTables::$0 [343] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [362] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [366] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [385] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) initSprites::$2 [394] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 -Simple Condition (bool~) initSprites::$3 [400] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 -Simple Condition (bool~) setupRasterIrq::$0 [411] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$1 [428] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 -Simple Condition (bool~) irqTop::$2 [435] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 -Simple Condition (bool~) irqBottom::$2 [448] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 +Simple Condition (bool~) main::$7 [96] if((byte) main::i#1!=rangelast(0,main::$6)) goto main::@3 +Simple Condition (bool~) main::$10 [115] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 +Simple Condition (bool~) getCharToProcess::$3 [136] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$7 [140] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 +Simple Condition (bool~) getCharToProcess::$6 [148] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$8 [157] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 +Simple Condition (bool~) getCharToProcess::$1 [161] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 +Simple Condition (bool~) startProcessing::$29 [187] if(*((byte*) startProcessing::$43 + (byte~) startProcessing::$33)!=(byte) STATUS_FREE#0) goto startProcessing::@3 +Simple Condition (bool~) startProcessing::$30 [191] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$27)) goto startProcessing::@2 +Simple Condition (bool~) startProcessing::$31 [196] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 +Simple Condition (bool~) startProcessing::$32 [222] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 +Simple Condition (bool~) processChars::$6 [285] if(*((byte*) processChars::$26)==(byte) STATUS_FREE#0) goto processChars::@2 +Simple Condition (bool~) processChars::$23 [289] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 +Simple Condition (bool~) processChars::$8 [294] if(*((byte*) processChars::$27)!=(byte) STATUS_NEW#0) goto processChars::@3 +Simple Condition (bool~) processChars::$43 [301] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 +Simple Condition (bool~) initSquareTables::$0 [359] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 +Simple Condition (bool~) initSquareTables::$7 [378] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 +Simple Condition (bool~) initSquareTables::$8 [382] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 +Simple Condition (bool~) initSquareTables::$15 [401] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 +Simple Condition (bool~) initSprites::$2 [410] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 +Simple Condition (bool~) initSprites::$3 [416] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 +Simple Condition (bool~) setupRasterIrq::$0 [427] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +Simple Condition (bool~) irqTop::$1 [444] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 +Simple Condition (bool~) irqTop::$2 [451] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 +Simple Condition (bool~) irqBottom::$2 [464] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting || if()-condition to two if()s [317] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 +Rewriting || if()-condition to two if()s [331] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 Successful SSA optimization Pass2ConditionalAndOrRewriting Constant right-side identified [57] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } -Constant right-side identified [94] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() -Constant right-side identified [338] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [339] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [439] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [455] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [98] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [354] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } +Constant right-side identified [355] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } +Constant right-side identified [455] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() +Constant right-side identified [471] (void()*~) irqBottom::$1 ← & 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 @@ -2243,6 +2299,7 @@ Constant (const byte) getCharToProcess::x#0 = 0 Constant (const byte) startProcessing::freeIdx#0 = $ff Constant (const byte) startProcessing::i#0 = 0 Constant (const byte) startProcessing::i1#0 = 0 +Constant (const word) startProcessing::$26 = -$10 Constant (const byte) processChars::numActive#0 = 0 Constant (const byte) processChars::i#0 = 0 Constant (const word[$28]) SQUARES_X#0 = { fill( $28, 0) } @@ -2267,78 +2324,82 @@ Constant (const byte*) initSprites::sp#0 = SPRITE_DATA#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified { fill( NUM_PROCESSING#0, 0) } in [63] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [117] if(true) goto main::@5 -if() condition always true - replacing block destination [120] if(true) goto main::@11 -if() condition always true - replacing block destination [411] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always true - replacing block destination [121] if(true) goto main::@5 +if() condition always true - replacing block destination [124] if(true) goto main::@11 +if() condition always true - replacing block destination [427] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [134] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ -Resolved ranged comparison value [136] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 -Resolved ranged next value [151] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ -Resolved ranged comparison value [153] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 -Resolved ranged next value [216] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ -Resolved ranged comparison value [218] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 -Resolved ranged next value [360] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [362] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [383] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [385] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [398] initSprites::i#1 ← ++ initSprites::i#2 to ++ -Resolved ranged comparison value [400] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 -Resolved ranged next value [426] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [428] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 -Resolved ranged next value [433] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [435] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 -Resolved ranged next value [446] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [448] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 -Converting *(pointer+n) to pointer[n] [167] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) -Converting *(pointer+n) to pointer[n] [204] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) -Converting *(pointer+n) to pointer[n] [266] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$25) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [271] if(*((byte*) processChars::$26)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [280] if(*((byte*) processChars::$27)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [283] (word) processChars::xpos#0 ← *((word*) processChars::$28) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [290] *(*((byte**) processChars::$29)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) -Converting *(pointer+n) to pointer[n] [294] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$30) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [296] *((byte*~) processChars::$10) ← *((byte*) processChars::$31) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -Converting *(pointer+n) to pointer[n] [296] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) -Converting *(pointer+n) to pointer[n] [298] *((byte*) processChars::$32) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [310] (word~) processChars::$17 ← *((word*) processChars::$33) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [314] (bool~) processChars::$19 ← *((word*) processChars::$34) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [316] (bool~) processChars::$20 ← *((word*) processChars::$35) < (word) YPOS_UPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [321] *((byte*) processChars::$36) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [327] *((word*) processChars::$38) ← *((word*) processChars::$37) - (byte) $10 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [327] *((word*) processChars::$38) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [330] *((word*) processChars::$40) ← *((word*) processChars::$39) - (byte) $10 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [330] *((word*) processChars::$40) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) - (byte) $10 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Resolved ranged next value [138] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ +Resolved ranged comparison value [140] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 +Resolved ranged next value [155] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ +Resolved ranged comparison value [157] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 +Resolved ranged next value [220] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ +Resolved ranged comparison value [222] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 +Resolved ranged next value [376] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ +Resolved ranged comparison value [378] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 +Resolved ranged next value [399] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ +Resolved ranged comparison value [401] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 +Resolved ranged next value [414] initSprites::i#1 ← ++ initSprites::i#2 to ++ +Resolved ranged comparison value [416] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 +Resolved ranged next value [442] irqTop::i#1 ← ++ irqTop::i#2 to ++ +Resolved ranged comparison value [444] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 +Resolved ranged next value [449] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ +Resolved ranged comparison value [451] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 +Resolved ranged next value [462] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ +Resolved ranged comparison value [464] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 +Converting *(pointer+n) to pointer[n] [171] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) +Converting *(pointer+n) to pointer[n] [208] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) +Converting *(pointer+n) to pointer[n] [280] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$25) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [285] if(*((byte*) processChars::$26)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [294] if(*((byte*) processChars::$27)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [297] (word) processChars::xpos#0 ← *((word*) processChars::$28) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [304] *(*((byte**) processChars::$29)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) +Converting *(pointer+n) to pointer[n] [308] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$30) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [310] *((byte*~) processChars::$10) ← *((byte*) processChars::$31) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) +Converting *(pointer+n) to pointer[n] [310] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) +Converting *(pointer+n) to pointer[n] [312] *((byte*) processChars::$32) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [324] (word~) processChars::$17 ← *((word*) processChars::$33) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [328] (bool~) processChars::$19 ← *((word*) processChars::$34) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [330] (bool~) processChars::$20 ← *((word*) processChars::$35) < (word) YPOS_UPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [335] *((byte*) processChars::$36) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((word*) processChars::$37) + *((word*) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((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] [346] *((word*) processChars::$42) ← *((word*) processChars::$40) + *((word*) processChars::$41) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [346] *((word*) processChars::$42) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$41) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [346] *((word*) processChars::$42) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) Successful SSA optimization Pass2InlineDerefIdx Simplifying expression containing zero (word*)PROCESSING#0 in [78] (word*) main::$16 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)PROCESSING#0 in [237] (word*) startProcessing::$29 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [282] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [283] (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 [313] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [314] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 -Simplifying expression containing zero (word*)processChars::processing#0 in [328] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [329] (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [330] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) - (byte) $10 -Simplifying expression containing zero (word*)processChars::processing#0 in [330] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 +Simplifying expression containing zero (word*)PROCESSING#0 in [247] (word*) startProcessing::$35 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [296] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [297] (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 [327] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [328] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 +Simplifying expression containing zero (word*)processChars::processing#0 in [339] (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [341] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [342] *((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 [342] *((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 [47] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 -Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [69] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 -Eliminating unused variable (byte*) processChars::$25 and assignment [138] (byte*) processChars::$25 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*) processChars::$26 and assignment [140] (byte*) processChars::$26 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (byte*) processChars::$27 and assignment [145] (byte*) processChars::$27 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$28 and assignment [147] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (byte**) processChars::$29 and assignment [151] (byte**) processChars::$29 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Eliminating unused variable (byte*) processChars::$30 and assignment [155] (byte*) processChars::$30 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*~) processChars::$10 and assignment [156] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Eliminating unused variable (byte*) processChars::$31 and assignment [157] (byte*) processChars::$31 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Eliminating unused variable (byte*) processChars::$32 and assignment [159] (byte*) processChars::$32 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$33 and assignment [168] (word*) processChars::$33 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$34 and assignment [172] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$35 and assignment [174] (word*) processChars::$35 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (byte*) processChars::$36 and assignment [177] (byte*) processChars::$36 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$37 and assignment [181] (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$38 and assignment [182] (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$39 and assignment [184] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$40 and assignment [185] (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word) startProcessing::center_dist#0 and assignment [51] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 +Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [73] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 +Eliminating unused variable (byte*) processChars::$25 and assignment [151] (byte*) processChars::$25 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*) processChars::$26 and assignment [153] (byte*) processChars::$26 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (byte*) processChars::$27 and assignment [158] (byte*) processChars::$27 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$28 and assignment [160] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (byte**) processChars::$29 and assignment [164] (byte**) processChars::$29 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Eliminating unused variable (byte*) processChars::$30 and assignment [168] (byte*) processChars::$30 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*~) processChars::$10 and assignment [169] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Eliminating unused variable (byte*) processChars::$31 and assignment [170] (byte*) processChars::$31 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Eliminating unused variable (byte*) processChars::$32 and assignment [172] (byte*) processChars::$32 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$33 and assignment [181] (word*) processChars::$33 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$34 and assignment [185] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$35 and assignment [187] (word*) processChars::$35 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$36 and assignment [190] (byte*) processChars::$36 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$37 and assignment [194] (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$38 and assignment [195] (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$39 and assignment [196] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$40 and assignment [198] (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$41 and assignment [199] (word*) processChars::$41 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$42 and assignment [200] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y Eliminating unused constant (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -2384,27 +2445,27 @@ Identical Phi Values (byte) getCharToProcess::y#2 (byte) getCharToProcess::y#7 Identical Phi Values (byte) startProcessing::center_y#8 (byte) startProcessing::center_y#0 Identical Phi Values (byte) startProcessing::center_x#8 (byte) startProcessing::center_x#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) processChars::$19 [161] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$20 [253] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_UPMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$19 [174] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$20 [266] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_UPMOST#0) goto processChars::@6 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [16] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e8 Constant right-side identified [18] (byte~) main::$6 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [48] (byte*~) main::$14 ← (const byte*) COLS#0 + (word) $3e7 -Constant right-side identified [70] (byte~) startProcessing::$21 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [108] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40 -Constant right-side identified [125] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 -Constant right-side identified [128] (byte~) $3 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 -Constant right-side identified [131] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [146] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 -Constant right-side identified [168] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [204] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 -Constant right-side identified [220] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 +Constant right-side identified [52] (byte*~) main::$14 ← (const byte*) COLS#0 + (word) $3e7 +Constant right-side identified [74] (byte~) startProcessing::$27 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [112] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40 +Constant right-side identified [138] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 +Constant right-side identified [141] (byte~) $3 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 +Constant right-side identified [144] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 +Constant right-side identified [181] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [217] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 +Constant right-side identified [233] (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::$4 = SCREEN#0+$3e8 Constant (const byte) main::$6 = NUM_PROCESSING#0-1 Constant (const byte*) main::$14 = COLS#0+$3e7 -Constant (const byte) startProcessing::$21 = NUM_PROCESSING#0-1 +Constant (const byte) startProcessing::$27 = NUM_PROCESSING#0-1 Constant (const byte*) startProcessing::$18 = SPRITE_DATA#0/$40 Constant (const byte) $0 = BORDER_XPOS_LEFT#0-8 Constant (const byte) $3 = BORDER_YPOS_TOP#0-8 @@ -2416,37 +2477,41 @@ Constant (const byte) setupRasterIrq::$1 = =(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [102] (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 ) - [102] (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 ) - [102] (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 ) - [103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [116] (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 ) + [116] (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 ) + [116] (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 ) + [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [110] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [113] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [115] return + [129] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@7 asm { sei } - [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [129] return + [143] return to:@return initSprites: scope:[initSprites] from main::@3 - [130] phi() + [144] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [131] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [132] *((byte*) initSprites::sp#2) ← (byte) 0 - [133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [134] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [145] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [146] *((byte*) initSprites::sp#2) ← (byte) 0 + [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [148] 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 - [135] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [149] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [142] return + [156] return to:@return initSquareTables: scope:[initSquareTables] from main - [143] phi() + [157] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [144] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [158] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [147] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [150] call mul8u - [151] (word) mul8u::return#2 ← (word) mul8u::res#2 + [161] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [164] call mul8u + [165] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [157] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [171] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [160] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [163] call mul8u - [164] (word) mul8u::return#3 ← (word) mul8u::res#2 + [174] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [177] call mul8u + [178] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [170] return + [184] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [173] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [173] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [187] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [187] (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 - [174] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [174] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [174] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [188] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [188] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [188] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [176] return + [190] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [180] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [194] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [183] phi() + [197] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [184] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [198] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [189] call processChars + [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [203] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [195] return + [209] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [196] phi() + [210] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [197] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [197] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 - [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 - [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 - [201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [202] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [211] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [211] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 + [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 + [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 + [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 + [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 + [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [218] 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 - [203] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [219] 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 - [204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [206] *((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) - [207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 + [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [222] *((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) + [223] *((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 - [208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 + [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 + [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 to:processChars::@8 processChars::@8: scope:[processChars] from processChars::@3 - [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 - [216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 - [218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 - [219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 + [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 + [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 + [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 + [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 + [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 + [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@5 - [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 + [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 to:processChars::@9 processChars::@9: scope:[processChars] from processChars::@13 - [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 - [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 + [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [238] *((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 - [223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [224] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + [240] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@12 processChars::@12: scope:[processChars] from processChars::@2 - [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 + [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 + [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@12 - [229] return + [245] return to:@return processChars::@6: scope:[processChars] from processChars::@13 processChars::@5 - [230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 + [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [234] phi() + [250] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [235] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [251] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 - [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [240] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 + [256] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) + [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@4 - [248] return + [264] return to:@return @@ -3271,6 +3368,8 @@ VARIABLE REGISTER WEIGHTS (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr (byte) ProcessingSprite::status +(word) ProcessingSprite::vx +(word) ProcessingSprite::vy (word) ProcessingSprite::x (word) ProcessingSprite::y (byte*) RASTER @@ -3380,8 +3479,10 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 16.5 (byte) irqTop::i1#2 22.0 (void()) main() -(byte~) main::$15 12.833333333333334 -(byte) main::$22 22.0 +(byte~) main::$15 12.375 +(byte) main::$24 22.0 +(byte) main::$25 22.0 +(byte) main::$26 22.0 (struct ProcessingChar~) main::$8 (struct ProcessingChar) main::center (word) main::center_dist @@ -3395,7 +3496,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.888888888888889 +(byte) main::i#2 4.230769230769231 (byte*) main::src (byte*) main::src#1 11.0 (byte*) main::src#2 16.5 @@ -3431,15 +3532,17 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) processChars::$18 22.0 (byte~) processChars::$22 22.0 (byte~) processChars::$24 22.0 -(byte) processChars::$42 22.0 +(byte) processChars::$44 22.0 +(byte) processChars::$45 22.0 +(byte) processChars::$46 22.0 (byte) processChars::bitmask (byte) processChars::bitmask#0 2.5 (byte) processChars::i (byte) processChars::i#1 16.5 -(byte) processChars::i#10 1.71875 +(byte) processChars::i#10 1.9411764705882353 (byte) processChars::numActive (byte) processChars::numActive#1 22.0 -(byte) processChars::numActive#10 1.0999999999999999 +(byte) processChars::numActive#10 1.03125 (byte) processChars::numActive#3 11.666666666666666 (struct ProcessingSprite*) processChars::processing (struct ProcessingSprite*) processChars::processing#0 0.4782608695652174 @@ -3458,22 +3561,30 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word~) startProcessing::$15 4.0 (word~) startProcessing::$16 4.0 (byte*~) startProcessing::$2 1.2000000000000002 -(byte~) startProcessing::$27 2002.0 -(byte~) startProcessing::$28 2.333333333333333 -(byte) startProcessing::$36 2002.0 -(word) startProcessing::$38 4.0 -(word) startProcessing::$39 4.0 +(signed byte~) startProcessing::$22 4.0 +(signed byte~) startProcessing::$23 4.0 +(signed byte~) startProcessing::$24 2.0 +(word~) startProcessing::$25 0.5714285714285714 +(byte~) startProcessing::$33 2002.0 +(byte~) startProcessing::$34 2.25 (word~) startProcessing::$4 4.0 -(byte) startProcessing::$41 4.0 +(byte) startProcessing::$44 2002.0 +(byte) startProcessing::$45 2002.0 +(byte) startProcessing::$46 2002.0 +(word) startProcessing::$48 4.0 +(word) startProcessing::$49 4.0 (word~) startProcessing::$5 4.0 +(byte) startProcessing::$51 4.0 +(byte) startProcessing::$52 4.0 +(byte) startProcessing::$53 4.0 (word~) startProcessing::$7 4.0 (word~) startProcessing::$8 4.0 (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 0.40540540540540543 +(byte) startProcessing::center_x#0 0.3846153846153846 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 0.275 +(byte) startProcessing::center_y#0 0.2619047619047619 (byte) startProcessing::ch (byte) startProcessing::ch#0 2.0 (byte*) startProcessing::chargenData @@ -3481,29 +3592,29 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) startProcessing::chargenData#1 67.33333333333333 (byte*) startProcessing::chargenData#2 101.66666666666666 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 34.52631578947369 -(byte) startProcessing::freeIdx#6 28.857142857142858 +(byte) startProcessing::freeIdx#2 28.56521739130435 +(byte) startProcessing::freeIdx#6 22.444444444444443 (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 1251.25 +(byte) startProcessing::i#2 1001.0000000000001 (byte) startProcessing::i1 (byte) startProcessing::i1#1 151.5 (byte) startProcessing::i1#2 50.5 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 0.11764705882352941 +(byte*) startProcessing::screenPtr#0 0.09523809523809523 (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.6666666666666666 +(byte) startProcessing::spritePtr#0 0.2857142857142857 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 0.5 +(word) startProcessing::spriteX#0 0.2857142857142857 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 0.8 +(word) startProcessing::spriteY#0 0.36363636363636365 Not consolidating phi with different size mul8u::mb#0 mul8u::b#1 Not consolidating phi with different size mul8u::mb#0 mul8u::b#0 @@ -3539,7 +3650,9 @@ Initial phi equivalence classes [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] -Added variable main::$22 to zero page equivalence class [ main::$22 ] +Added variable main::$24 to zero page equivalence class [ main::$24 ] +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::$15 to zero page equivalence class [ main::$15 ] 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 ] @@ -3549,11 +3662,13 @@ 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::$36 to zero page equivalence class [ startProcessing::$36 ] -Added variable startProcessing::$27 to zero page equivalence class [ startProcessing::$27 ] +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::$46 to zero page equivalence class [ startProcessing::$46 ] +Added variable startProcessing::$33 to zero page equivalence class [ startProcessing::$33 ] Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ] -Added variable startProcessing::$38 to zero page equivalence class [ startProcessing::$38 ] -Added variable startProcessing::$39 to zero page equivalence class [ startProcessing::$39 ] +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::$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 ] @@ -3571,8 +3686,14 @@ Added variable startProcessing::$15 to zero page equivalence class [ startProces 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::$41 to zero page equivalence class [ startProcessing::$41 ] -Added variable startProcessing::$28 to zero page equivalence class [ startProcessing::$28 ] +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::$24 to zero page equivalence class [ startProcessing::$24 ] +Added variable startProcessing::$25 to zero page equivalence class [ startProcessing::$25 ] +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::$34 to zero page equivalence class [ startProcessing::$34 ] 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 ] @@ -3587,7 +3708,9 @@ 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::$42 to zero page equivalence class [ processChars::$42 ] +Added variable processChars::$44 to zero page equivalence class [ processChars::$44 ] +Added variable processChars::$45 to zero page equivalence class [ processChars::$45 ] +Added variable processChars::$46 to zero page equivalence class [ processChars::$46 ] Added variable processChars::$24 to zero page equivalence class [ processChars::$24 ] 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 ] @@ -3632,7 +3755,9 @@ Complete equivalence classes [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] -[ main::$22 ] +[ main::$24 ] +[ main::$25 ] +[ main::$26 ] [ main::$15 ] [ getCharToProcess::return_x#0 ] [ getCharToProcess::return_y#0 ] @@ -3642,11 +3767,13 @@ Complete equivalence classes [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] -[ startProcessing::$36 ] -[ startProcessing::$27 ] +[ startProcessing::$44 ] +[ startProcessing::$45 ] +[ startProcessing::$46 ] +[ startProcessing::$33 ] [ startProcessing::$0 ] -[ startProcessing::$38 ] -[ startProcessing::$39 ] +[ startProcessing::$48 ] +[ startProcessing::$49 ] [ startProcessing::$1 ] [ startProcessing::$2 ] [ startProcessing::screenPtr#0 ] @@ -3664,8 +3791,14 @@ Complete equivalence classes [ startProcessing::$16 ] [ startProcessing::spriteY#0 ] [ startProcessing::spritePtr#0 ] -[ startProcessing::$41 ] -[ startProcessing::$28 ] +[ startProcessing::$22 ] +[ startProcessing::$23 ] +[ startProcessing::$24 ] +[ startProcessing::$25 ] +[ startProcessing::$51 ] +[ startProcessing::$52 ] +[ startProcessing::$53 ] +[ startProcessing::$34 ] [ getCharToProcess::$13 ] [ getCharToProcess::$14 ] [ getCharToProcess::$9 ] @@ -3680,7 +3813,9 @@ Complete equivalence classes [ initSquareTables::$14 ] [ initSquareTables::$17 ] [ mul8u::$1 ] -[ processChars::$42 ] +[ processChars::$44 ] +[ processChars::$45 ] +[ processChars::$46 ] [ processChars::$24 ] [ processChars::processing#0 ] [ processChars::bitmask#0 ] @@ -3724,67 +3859,79 @@ Allocated zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] Allocated zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] Allocated zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] Allocated zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] -Allocated zp ZP_BYTE:43 [ main::$22 ] -Allocated zp ZP_BYTE:44 [ main::$15 ] -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::$36 ] -Allocated zp ZP_BYTE:56 [ startProcessing::$27 ] -Allocated zp ZP_WORD:57 [ startProcessing::$0 ] -Allocated zp ZP_WORD:59 [ startProcessing::$38 ] -Allocated zp ZP_WORD:61 [ startProcessing::$39 ] -Allocated zp ZP_WORD:63 [ startProcessing::$1 ] -Allocated zp ZP_WORD:65 [ startProcessing::$2 ] -Allocated zp ZP_WORD:67 [ startProcessing::screenPtr#0 ] -Allocated zp ZP_WORD:69 [ startProcessing::$4 ] -Allocated zp ZP_WORD:71 [ startProcessing::$5 ] -Allocated zp ZP_BYTE:73 [ startProcessing::ch#0 ] -Allocated zp ZP_WORD:74 [ startProcessing::$7 ] -Allocated zp ZP_WORD:76 [ startProcessing::$8 ] -Allocated zp ZP_WORD:78 [ startProcessing::$10 ] -Allocated zp ZP_WORD:80 [ startProcessing::$11 ] -Allocated zp ZP_WORD:82 [ startProcessing::$12 ] -Allocated zp ZP_WORD:84 [ startProcessing::spriteX#0 ] -Allocated zp ZP_WORD:86 [ startProcessing::$14 ] -Allocated zp ZP_WORD:88 [ startProcessing::$15 ] -Allocated zp ZP_WORD:90 [ startProcessing::$16 ] -Allocated zp ZP_WORD:92 [ startProcessing::spriteY#0 ] -Allocated zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] -Allocated zp ZP_BYTE:95 [ startProcessing::$41 ] -Allocated zp ZP_BYTE:96 [ startProcessing::$28 ] -Allocated zp ZP_BYTE:97 [ getCharToProcess::$13 ] -Allocated zp ZP_BYTE:98 [ getCharToProcess::$14 ] -Allocated zp ZP_WORD:99 [ getCharToProcess::$9 ] -Allocated zp ZP_WORD:101 [ getCharToProcess::$15 ] -Allocated zp ZP_WORD:103 [ getCharToProcess::$16 ] -Allocated zp ZP_WORD:105 [ getCharToProcess::$10 ] -Allocated zp ZP_WORD:107 [ getCharToProcess::$11 ] -Allocated zp ZP_WORD:109 [ mul8u::return#2 ] -Allocated zp ZP_WORD:111 [ initSquareTables::$6 ] -Allocated zp ZP_BYTE:113 [ initSquareTables::$16 ] -Allocated zp ZP_WORD:114 [ mul8u::return#3 ] -Allocated zp ZP_WORD:116 [ initSquareTables::$14 ] -Allocated zp ZP_BYTE:118 [ initSquareTables::$17 ] -Allocated zp ZP_BYTE:119 [ mul8u::$1 ] -Allocated zp ZP_BYTE:120 [ processChars::$42 ] -Allocated zp ZP_BYTE:121 [ processChars::$24 ] -Allocated zp ZP_WORD:122 [ processChars::processing#0 ] -Allocated zp ZP_BYTE:124 [ processChars::bitmask#0 ] -Allocated zp ZP_WORD:125 [ processChars::xpos#0 ] -Allocated zp ZP_BYTE:127 [ processChars::$12 ] -Allocated zp ZP_BYTE:128 [ processChars::$13 ] -Allocated zp ZP_BYTE:129 [ processChars::$16 ] -Allocated zp ZP_BYTE:130 [ processChars::$15 ] -Allocated zp ZP_WORD:131 [ processChars::$17 ] -Allocated zp ZP_BYTE:133 [ processChars::$18 ] -Allocated zp ZP_BYTE:134 [ processChars::$1 ] -Allocated zp ZP_BYTE:135 [ processChars::$22 ] +Allocated zp ZP_BYTE:43 [ main::$24 ] +Allocated zp ZP_BYTE:44 [ main::$25 ] +Allocated zp ZP_BYTE:45 [ main::$26 ] +Allocated zp ZP_BYTE:46 [ main::$15 ] +Allocated zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] +Allocated zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Allocated zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] +Allocated zp ZP_BYTE:51 [ main::center_x#0 ] +Allocated zp ZP_BYTE:52 [ main::center_y#0 ] +Allocated zp ZP_WORD:53 [ main::center_dist#0 ] +Allocated zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Allocated zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Allocated zp ZP_BYTE:57 [ startProcessing::$44 ] +Allocated zp ZP_BYTE:58 [ startProcessing::$45 ] +Allocated zp ZP_BYTE:59 [ startProcessing::$46 ] +Allocated zp ZP_BYTE:60 [ startProcessing::$33 ] +Allocated zp ZP_WORD:61 [ startProcessing::$0 ] +Allocated zp ZP_WORD:63 [ startProcessing::$48 ] +Allocated zp ZP_WORD:65 [ startProcessing::$49 ] +Allocated zp ZP_WORD:67 [ startProcessing::$1 ] +Allocated zp ZP_WORD:69 [ startProcessing::$2 ] +Allocated zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Allocated zp ZP_WORD:73 [ startProcessing::$4 ] +Allocated zp ZP_WORD:75 [ startProcessing::$5 ] +Allocated zp ZP_BYTE:77 [ startProcessing::ch#0 ] +Allocated zp ZP_WORD:78 [ startProcessing::$7 ] +Allocated zp ZP_WORD:80 [ startProcessing::$8 ] +Allocated zp ZP_WORD:82 [ startProcessing::$10 ] +Allocated zp ZP_WORD:84 [ startProcessing::$11 ] +Allocated zp ZP_WORD:86 [ startProcessing::$12 ] +Allocated zp ZP_WORD:88 [ startProcessing::spriteX#0 ] +Allocated zp ZP_WORD:90 [ startProcessing::$14 ] +Allocated zp ZP_WORD:92 [ startProcessing::$15 ] +Allocated zp ZP_WORD:94 [ startProcessing::$16 ] +Allocated zp ZP_WORD:96 [ startProcessing::spriteY#0 ] +Allocated zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Allocated zp ZP_BYTE:99 [ startProcessing::$22 ] +Allocated zp ZP_BYTE:100 [ startProcessing::$23 ] +Allocated zp ZP_BYTE:101 [ startProcessing::$24 ] +Allocated zp ZP_WORD:102 [ startProcessing::$25 ] +Allocated zp ZP_BYTE:104 [ startProcessing::$51 ] +Allocated zp ZP_BYTE:105 [ startProcessing::$52 ] +Allocated zp ZP_BYTE:106 [ startProcessing::$53 ] +Allocated zp ZP_BYTE:107 [ startProcessing::$34 ] +Allocated zp ZP_BYTE:108 [ getCharToProcess::$13 ] +Allocated zp ZP_BYTE:109 [ getCharToProcess::$14 ] +Allocated zp ZP_WORD:110 [ getCharToProcess::$9 ] +Allocated zp ZP_WORD:112 [ getCharToProcess::$15 ] +Allocated zp ZP_WORD:114 [ getCharToProcess::$16 ] +Allocated zp ZP_WORD:116 [ getCharToProcess::$10 ] +Allocated zp ZP_WORD:118 [ getCharToProcess::$11 ] +Allocated zp ZP_WORD:120 [ mul8u::return#2 ] +Allocated zp ZP_WORD:122 [ initSquareTables::$6 ] +Allocated zp ZP_BYTE:124 [ initSquareTables::$16 ] +Allocated zp ZP_WORD:125 [ mul8u::return#3 ] +Allocated zp ZP_WORD:127 [ initSquareTables::$14 ] +Allocated zp ZP_BYTE:129 [ initSquareTables::$17 ] +Allocated zp ZP_BYTE:130 [ mul8u::$1 ] +Allocated zp ZP_BYTE:131 [ processChars::$44 ] +Allocated zp ZP_BYTE:132 [ processChars::$45 ] +Allocated zp ZP_BYTE:133 [ processChars::$46 ] +Allocated zp ZP_BYTE:134 [ processChars::$24 ] +Allocated zp ZP_WORD:135 [ processChars::processing#0 ] +Allocated zp ZP_BYTE:137 [ processChars::bitmask#0 ] +Allocated zp ZP_WORD:138 [ processChars::xpos#0 ] +Allocated zp ZP_BYTE:140 [ processChars::$12 ] +Allocated zp ZP_BYTE:141 [ processChars::$13 ] +Allocated zp ZP_BYTE:142 [ processChars::$16 ] +Allocated zp ZP_BYTE:143 [ processChars::$15 ] +Allocated zp ZP_WORD:144 [ processChars::$17 ] +Allocated zp ZP_BYTE:146 [ processChars::$18 ] +Allocated zp ZP_BYTE:147 [ processChars::$1 ] +Allocated zp ZP_BYTE:148 [ processChars::$22 ] INITIAL ASM //SEG0 File Comments @@ -3795,10 +3942,12 @@ INITIAL ASM .pc = $80d "Program" //SEG2 Global Constants & labels .const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2 - .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 4 - .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 5 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 6 - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 7 + .const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4 + .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 // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -3879,16 +4028,18 @@ bend_from_b1: bend: //SEG10 main main: { - .label _15 = $2c + .label _15 = $2e .label src = 2 .label dst = 4 .label i = 6 - .label center_x = $31 - .label center_y = $32 - .label center_dist = $33 - .label _22 = $2b + .label center_x = $33 + .label center_y = $34 + .label center_dist = $35 + .label _24 = $2b + .label _25 = $2c + .label _26 = $2d //SEG11 [5] call initSquareTables - //SEG12 [143] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3947,106 +4098,126 @@ main: { jmp b2 //SEG28 main::@2 b2: - //SEG29 [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 + //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl + sta _24 + //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _24 + clc + adc i + sta _25 + //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _25 asl asl - sta _22 - //SEG30 [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _22 + sta _26 + //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _26 clc adc i sta _15 - //SEG31 [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _15 ldx #0 tay txa sta PROCESSING,y - //SEG32 [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda _15 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y - //SEG33 [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _15 + ldx #0 + tay + txa + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y + //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _15 + ldx #0 + tay + txa + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y + //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy _15 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG34 [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy _15 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG35 [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_FREE ldy _15 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG36 [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 + //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 ldy _15 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda #>0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y - //SEG37 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG38 [21] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG42 [25] 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 - //SEG39 [22] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG40 main::@3 + //SEG44 main::@3 b3: - //SEG41 [23] call initSprites - //SEG42 [130] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG45 [27] call initSprites + //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG43 [24] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] b7_from_b3: jmp b7 - //SEG44 main::@7 + //SEG48 main::@7 b7: - //SEG45 [25] call setupRasterIrq + //SEG49 [29] call setupRasterIrq jsr setupRasterIrq - //SEG46 [26] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] b4_from_b5: b4_from_b7: jmp b4 // Main loop - //SEG47 main::@4 + //SEG51 main::@4 b4: - //SEG48 [27] call getCharToProcess - //SEG49 [92] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG52 [31] call getCharToProcess + //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG50 [28] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 + //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 lda getCharToProcess.return_x_1 sta getCharToProcess.return_x - //SEG51 [29] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 + //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 lda getCharToProcess.return_y_1 sta getCharToProcess.return_y - //SEG52 [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG56 [34] (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 b8 - //SEG53 main::@8 + //SEG57 main::@8 b8: - //SEG54 [31] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 + //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 lda getCharToProcess.return_x sta center_x - //SEG55 [32] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 + //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 lda getCharToProcess.return_y sta center_y - //SEG56 [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 + //SEG60 [37] (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 - //SEG57 [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG61 [38] 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 @@ -4054,146 +4225,162 @@ main: { cmp #startProcessing] + //SEG67 [42] call startProcessing + //SEG68 [43] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG65 startProcessing +//SEG69 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($35) center_x, byte zeropage($36) center_y) +// startProcessing(byte zeropage($37) center_x, byte zeropage($38) center_y) startProcessing: { - .label _0 = $39 - .label _1 = $3f - .label _2 = $41 - .label _4 = $45 - .label _5 = $47 - .label _7 = $4a - .label _8 = $4c - .label _10 = $4e - .label _11 = $50 - .label _12 = $52 - .label _14 = $56 - .label _15 = $58 - .label _16 = $5a - .label _27 = $38 - .label _28 = $60 - .label center_x = $35 - .label center_y = $36 + .label _0 = $3d + .label _1 = $43 + .label _2 = $45 + .label _4 = $49 + .label _5 = $4b + .label _7 = $4e + .label _8 = $50 + .label _10 = $52 + .label _11 = $54 + .label _12 = $56 + .label _14 = $5a + .label _15 = $5c + .label _16 = $5e + .label _22 = $63 + .label _23 = $64 + .label _24 = $65 + .label _25 = $66 + .label _33 = $3c + .label _34 = $6b + .label center_x = $37 + .label center_y = $38 .label i = 8 - .label screenPtr = $43 + .label screenPtr = $47 .label spriteData = $b - .label ch = $49 + .label ch = $4d .label chargenData = 9 .label i1 = $d - .label spriteX = $54 - .label spriteY = $5c - .label spritePtr = $5e + .label spriteX = $58 + .label spriteY = $60 + .label spritePtr = $62 .label freeIdx = 8 .label freeIdx_6 = 7 - .label _36 = $37 - .label _38 = $3b - .label _39 = $3d - .label _41 = $5f + .label _44 = $39 + .label _45 = $3a + .label _46 = $3b + .label _48 = $3f + .label _49 = $41 + .label _51 = $68 + .label _52 = $69 + .label _53 = $6a .label freeIdx_7 = 7 - //SEG66 [40] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG67 [40] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx_6 jmp b1 - //SEG68 startProcessing::@1 + //SEG72 startProcessing::@1 b1: - //SEG69 [41] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG70 [41] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG71 [41] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG72 [41] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG73 startProcessing::@2 + //SEG77 startProcessing::@2 b2: - //SEG74 [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 + //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - asl - asl - sta _36 - //SEG75 [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _36 + sta _44 + //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _44 clc adc i - sta _27 - //SEG76 [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + sta _45 + //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _45 + asl + asl + sta _46 + //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _46 + clc + adc i + sta _33 + //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 lda #STATUS_FREE - ldy _27 + ldy _33 cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 - //SEG77 [45] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG78 [45] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG79 startProcessing::@4 + //SEG85 startProcessing::@4 b4: - //SEG80 [46] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG81 startProcessing::@5 + //SEG87 startProcessing::@5 b5: - //SEG82 [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG83 [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _38 + sta _48 lda _0+1 rol - sta _38+1 - asl _38 - rol _38+1 - //SEG84 [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 - lda _38 + sta _48+1 + asl _48 + rol _48+1 + //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 + lda _48 clc adc _0 - sta _39 - lda _38+1 + sta _49 + lda _48+1 adc _0+1 - sta _39+1 - //SEG85 [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _39 + sta _49+1 + //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _49 asl sta _1 - lda _39+1 + lda _49+1 rol sta _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG86 [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2 + //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2 lda _1 clc adc #SCREEN sta _2+1 - //SEG87 [52] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -4209,12 +4396,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG88 [53] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG89 [54] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6 + //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6 lda _4 asl sta _5 @@ -4231,7 +4418,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG90 [55] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2 + //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2 lda _5 clc adc #SPRITE_DATA sta spriteData+1 - //SEG91 [56] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3 ldy center_x lda (_2),y sta ch - //SEG92 [57] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 + //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 lda ch sta _7 lda #0 sta _7+1 - //SEG93 [58] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG99 [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _7 asl sta _8 @@ -4259,7 +4446,7 @@ startProcessing: { rol _8+1 asl _8 rol _8+1 - //SEG94 [59] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2 + //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2 lda _8 clc adc #CHARGEN sta chargenData+1 - //SEG95 asm { sei } + //SEG101 asm { sei } sei - //SEG96 [61] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG97 [62] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG98 [62] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 + //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG99 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG100 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG101 [62] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG102 [62] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG103 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG104 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG105 startProcessing::@6 + //SEG111 startProcessing::@6 b6: - //SEG106 [63] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG107 [64] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -4301,31 +4488,31 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG108 [65] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG109 [66] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 + //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG110 [67] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG116 [73] 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 - //SEG111 startProcessing::@7 + //SEG117 startProcessing::@7 b7: - //SEG112 [68] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG113 asm { cli } + //SEG119 asm { cli } cli - //SEG114 [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG115 [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG121 [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _10 asl sta _11 @@ -4336,7 +4523,7 @@ startProcessing: { rol _11+1 asl _11 rol _11+1 - //SEG116 [72] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 + //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_XPOS_LEFT clc adc _11 @@ -4344,7 +4531,7 @@ startProcessing: { lda #0 adc _11+1 sta _12+1 - //SEG117 [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 + //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda _12 asl sta spriteX @@ -4357,12 +4544,12 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG118 [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG119 [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG125 [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _14 asl sta _15 @@ -4373,7 +4560,7 @@ startProcessing: { rol _15+1 asl _15 rol _15+1 - //SEG120 [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2 + //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_YPOS_TOP clc adc _15 @@ -4381,7 +4568,7 @@ startProcessing: { lda #0 adc _15+1 sta _16+1 - //SEG121 [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4 + //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda _16 asl sta spriteY @@ -4394,93 +4581,135 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG122 [78] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG128 [84] (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 - //SEG123 [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 + //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsz1=vbsz2_rol_1 lda freeIdx asl + sta _22 + //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsz1=vbsz2_minus_vbsc1 + lax _22 + axs #8 + stx _23 + //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsz1=_neg_vbsz2 + lda _23 + eor #$ff + clc + adc #1 + sta _24 + //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsz2 + lda _24 + sta _25 + ora #$7f + bmi !+ + lda #0 + !: + sta _25+1 + //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda freeIdx asl - asl - sta _41 - //SEG124 [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _41 + sta _51 + //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _51 clc adc freeIdx - sta _28 - //SEG125 [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _28 + sta _52 + //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _52 + asl + asl + sta _53 + //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _53 + clc + adc freeIdx + sta _34 + //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _34 lda spriteX sta PROCESSING,y lda spriteX+1 sta PROCESSING+1,y - //SEG126 [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _28 + //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _34 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y - //SEG127 [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _34 + lda _25 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y + lda _25+1 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y + //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuz1=vwuc2 + ldy _34 + lda #<-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y + lda #>-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,y + //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda freeIdx - ldy _28 + ldy _34 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG128 [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda spritePtr - ldy _28 + ldy _34 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG129 [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_NEW - ldy _28 + ldy _34 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG130 [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _28 + //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _34 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y jmp breturn - //SEG131 startProcessing::@return + //SEG145 startProcessing::@return breturn: - //SEG132 [87] return + //SEG146 [101] return rts - //SEG133 startProcessing::@8 + //SEG147 startProcessing::@8 b8: - //SEG134 [88] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda freeIdx sta freeIdx_7 - //SEG135 [40] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG136 [40] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG137 startProcessing::@3 + //SEG151 startProcessing::@3 b3: - //SEG138 [89] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG139 [90] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG153 [104] 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 - //SEG140 startProcessing::@9 + //SEG154 startProcessing::@9 b9: - //SEG141 [91] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda freeIdx_6 sta freeIdx jmp b4_from_b9 } -//SEG142 getCharToProcess +//SEG156 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 = $63 - .label _10 = $69 - .label _11 = $6b - .label _13 = $61 - .label _14 = $62 - .label return_x = $2d - .label return_y = $2e - .label return_dist = $2f + .label _9 = $6e + .label _10 = $74 + .label _11 = $76 + .label _13 = $6c + .label _14 = $6d + .label return_x = $2f + .label return_y = $30 + .label return_dist = $31 .label x = $11 .label dist = $16 .label screen_line = $e @@ -4491,64 +4720,64 @@ getCharToProcess: { .label closest_dist = $12 .label closest_x = $14 .label closest_y = $15 - .label _15 = $65 - .label _16 = $67 + .label _15 = $70 + .label _16 = $72 .label return_dist_5 = $16 .label return_dist_6 = $16 .label return_x_7 = $14 .label return_y_7 = $15 - //SEG143 [93] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG144 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG145 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG146 [93] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG160 [107] 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 - //SEG147 [93] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG148 [93] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG162 [107] 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 - //SEG149 getCharToProcess::@1 + //SEG163 getCharToProcess::@1 b1: - //SEG150 [94] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG151 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG152 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG153 [94] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG154 [94] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG155 getCharToProcess::@2 + //SEG169 getCharToProcess::@2 b2: - //SEG156 [95] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG170 [109] 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 - //SEG157 getCharToProcess::@4 + //SEG171 getCharToProcess::@4 b4: - //SEG158 [96] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _13 - //SEG159 [97] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _14 - //SEG160 [98] (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 + //SEG174 [112] (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 @@ -4558,7 +4787,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG161 [99] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG175 [113] 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 !+ @@ -4568,34 +4797,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG162 getCharToProcess::@5 + //SEG176 getCharToProcess::@5 b5: - //SEG163 [100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x_7 - //SEG164 [101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y_7 - //SEG165 [102] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG179 [116] 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: - //SEG166 [102] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG167 [102] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG168 [102] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG182 [116] 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 - //SEG169 getCharToProcess::@3 + //SEG183 getCharToProcess::@3 b3: - //SEG170 [103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG171 [104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG172 getCharToProcess::@6 + //SEG186 getCharToProcess::@6 b6: - //SEG173 [105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG187 [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -4603,16 +4832,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG174 [106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG175 [107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG176 getCharToProcess::@7 + //SEG190 getCharToProcess::@7 b7: - //SEG177 [108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG191 [122] 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 - //SEG184 [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG198 [128] *((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 - //SEG185 getCharToProcess::@return + //SEG199 getCharToProcess::@return breturn: - //SEG186 [115] return + //SEG200 [129] return rts - //SEG187 getCharToProcess::@9 + //SEG201 getCharToProcess::@9 b9: - //SEG188 [116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG202 [130] (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 - //SEG189 [93] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG190 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG191 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG192 [93] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG193 [93] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG194 [93] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG195 getCharToProcess::@10 + //SEG209 getCharToProcess::@10 b10: - //SEG196 [117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG210 [131] (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 - //SEG197 [94] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG198 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG199 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG200 [94] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG201 [94] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG202 getCharToProcess::@12 + //SEG216 getCharToProcess::@12 b12: - //SEG203 [118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG217 [132] (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 - //SEG204 getCharToProcess::@11 + //SEG218 getCharToProcess::@11 b11: - //SEG205 [119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG219 [133] (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 } -//SEG206 setupRasterIrq +//SEG220 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG207 asm { sei } + //SEG221 asm { sei } sei - //SEG208 [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG222 [135] *((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 - //SEG209 [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG210 [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG224 [137] *((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 - //SEG211 setupRasterIrq::@1 + //SEG225 setupRasterIrq::@1 b1: - //SEG212 [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG226 [138] *((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 - //SEG213 setupRasterIrq::@2 + //SEG227 setupRasterIrq::@2 b2: - //SEG214 [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG215 [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG216 [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG217 asm { cli } + //SEG231 asm { cli } cli jmp breturn - //SEG218 setupRasterIrq::@return + //SEG232 setupRasterIrq::@return breturn: - //SEG219 [129] return + //SEG233 [143] return rts } -//SEG220 initSprites +//SEG234 initSprites // Initialize sprites initSprites: { .label sp = $18 .label i = $1a - //SEG221 [131] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG222 [131] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG236 [145] 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 - //SEG223 [131] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG224 [131] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG225 initSprites::@1 + //SEG239 initSprites::@1 b1: - //SEG226 [132] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG227 [133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG228 [134] 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 + //SEG242 [148] 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 @@ -4806,281 +5035,281 @@ initSprites: { cmp #initSprites::@2] + //SEG243 [149] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG230 [135] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 + //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Initialize sprite registers - //SEG231 [135] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG232 [135] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG233 initSprites::@2 + //SEG247 initSprites::@2 b2: - //SEG234 [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG248 [150] *((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 - //SEG235 [137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG236 [138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG250 [152] 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 - //SEG237 initSprites::@3 + //SEG251 initSprites::@3 b3: - //SEG238 [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG239 [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG240 [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG241 initSprites::@return + //SEG255 initSprites::@return breturn: - //SEG242 [142] return + //SEG256 [156] return rts } -//SEG243 initSquareTables +//SEG257 initSquareTables // initialize SQUARES table initSquareTables: { .label _2 = $1c .label _4 = $1c - .label _6 = $6f + .label _6 = $7a .label _10 = $1e .label _12 = $1e - .label _14 = $74 - .label _16 = $71 - .label _17 = $76 + .label _14 = $7f + .label _16 = $7c + .label _17 = $81 .label x_dist = $1c .label x = $1b .label y_dist = $1e .label y = $1d - //SEG244 [144] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG245 [144] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG246 [144] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG247 [144] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG248 initSquareTables::@1 + //SEG262 initSquareTables::@1 b1: - //SEG249 [145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG250 initSquareTables::@3 + //SEG264 initSquareTables::@3 b3: - //SEG251 [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 + //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 lax x axs #$14 stx _2 - //SEG252 [147] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG253 [147] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG254 initSquareTables::@4 + //SEG268 initSquareTables::@4 b4: - //SEG255 [148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.a - //SEG256 [149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.b - //SEG257 [150] call mul8u - //SEG258 [173] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG271 [164] call mul8u + //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG259 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG260 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 + //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG274 [187] 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 - //SEG261 [151] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG275 [165] (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 - //SEG262 initSquareTables::@9 + //SEG276 initSquareTables::@9 b9: - //SEG263 [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _6 lda mul8u.return+1 sta _6+1 - //SEG264 [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _16 - //SEG265 [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG279 [168] *((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 - //SEG266 [155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG267 [156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG268 [157] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG269 [157] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG270 [157] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG271 [157] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG272 initSquareTables::@5 + //SEG286 initSquareTables::@5 b5: - //SEG273 [158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG274 initSquareTables::@7 + //SEG288 initSquareTables::@7 b7: - //SEG275 [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 + //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 lax y axs #$c stx _10 - //SEG276 [160] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG277 [160] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG278 initSquareTables::@8 + //SEG292 initSquareTables::@8 b8: - //SEG279 [161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.a - //SEG280 [162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.b_1 - //SEG281 [163] call mul8u - //SEG282 [173] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG295 [177] call mul8u + //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG283 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG284 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 + //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG298 [187] 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 - //SEG285 [164] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG299 [178] (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 - //SEG286 initSquareTables::@10 + //SEG300 initSquareTables::@10 b10: - //SEG287 [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _14 lda mul8u.return_3+1 sta _14+1 - //SEG288 [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _17 - //SEG289 [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG303 [181] *((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 - //SEG290 [168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG291 [169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG305 [183] 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 - //SEG292 initSquareTables::@return + //SEG306 initSquareTables::@return breturn: - //SEG293 [170] return + //SEG307 [184] return rts - //SEG294 initSquareTables::@6 + //SEG308 initSquareTables::@6 b6: - //SEG295 [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c sec sbc y sta _12 jmp b8_from_b6 - //SEG296 initSquareTables::@2 + //SEG310 initSquareTables::@2 b2: - //SEG297 [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$14 sec sbc x sta _4 jmp b4_from_b2 } -//SEG298 mul8u +//SEG312 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 = $77 + .label _1 = $82 .label mb = $24 .label a = $21 .label res = $22 .label b = $20 - .label return = $6d + .label return = $78 .label b_1 = $1f - .label return_3 = $72 - //SEG299 [174] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label return_3 = $7d + //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG300 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG301 [174] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG302 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG303 mul8u::@1 + //SEG317 mul8u::@1 b1: - //SEG304 [175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG305 mul8u::@return + //SEG319 mul8u::@return breturn: - //SEG306 [176] return + //SEG320 [190] return rts - //SEG307 mul8u::@2 + //SEG321 mul8u::@2 b2: - //SEG308 [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG309 [178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG310 mul8u::@4 + //SEG324 mul8u::@4 b4: - //SEG311 [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5088,90 +5317,90 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG312 [180] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG313 [180] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG314 mul8u::@3 + //SEG328 mul8u::@3 b3: - //SEG315 [181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG316 [182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG317 [174] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG318 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG319 [174] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG320 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG321 irqBottom +//SEG335 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { .label i = $26 - //SEG322 entry interrupt(HARDWARE_ALL) + //SEG336 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG323 [184] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG324 [184] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 + //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG325 [184] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG326 [184] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG327 irqBottom::@1 + //SEG341 irqBottom::@1 b1: - //SEG328 [185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 + //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG329 [186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 jmp b2 - //SEG330 irqBottom::@2 + //SEG344 irqBottom::@2 b2: - //SEG331 [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG332 [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG333 [189] call processChars - //SEG334 [196] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [203] call processChars + //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG335 irqBottom::@3 + //SEG349 irqBottom::@3 b3: - //SEG336 [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG337 [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG338 [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [206] *((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 - //SEG339 [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG340 [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG341 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG342 [195] return - exit interrupt(HARDWARE_ALL) + //SEG356 [209] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5180,52 +5409,62 @@ irqBottom: { ldy #00 rti } -//SEG343 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _1 = $86 - .label _12 = $7f - .label _13 = $80 - .label _15 = $82 - .label _16 = $81 - .label _17 = $83 - .label _18 = $85 - .label _22 = $87 - .label _24 = $79 - .label processing = $7a - .label bitmask = $7c + .label _1 = $93 + .label _12 = $8c + .label _13 = $8d + .label _15 = $8f + .label _16 = $8e + .label _17 = $90 + .label _18 = $92 + .label _22 = $94 + .label _24 = $86 + .label processing = $87 + .label bitmask = $89 .label i = $27 - .label xpos = $7d + .label xpos = $8a .label numActive = $28 - .label _42 = $78 - //SEG344 [197] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _44 = $83 + .label _45 = $84 + .label _46 = $85 + //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG345 [197] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG346 [197] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG347 [197] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG348 [197] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG349 [197] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG350 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG351 [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 + //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl + sta _44 + //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _44 + clc + adc i + sta _45 + //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _45 asl asl - sta _42 - //SEG352 [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _42 + sta _46 + //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _46 clc adc i sta _24 - //SEG353 [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuz2 + //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuz2 lda _24 clc adc #PROCESSING adc #0 sta processing+1 - //SEG354 [201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG370 [217] (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 @@ -5246,23 +5485,23 @@ processChars: { bne !- !e: sta bitmask - //SEG355 [202] 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 + //SEG371 [218] 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 - //SEG356 processChars::@10 + //SEG372 processChars::@10 b10: - //SEG357 [203] 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 [219] 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 - //SEG358 processChars::@11 + //SEG374 processChars::@11 b11: - //SEG359 [204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG375 [220] *(*((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 @@ -5274,12 +5513,12 @@ processChars: { txa !: sta $ffff - //SEG360 [205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [221] *((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 - //SEG361 [206] *((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 + //SEG377 [222] *((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 @@ -5289,15 +5528,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG362 [207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [223] *((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 - //SEG363 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG364 [208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -5312,40 +5551,40 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG365 [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 + //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 lda xpos+1 sta _12 - //SEG366 [210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 + //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 // Set sprite position lda #0 cmp _12 bne b4 jmp b8 - //SEG367 processChars::@8 + //SEG383 processChars::@8 b8: - //SEG368 [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask sta _13 - //SEG369 [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB and _13 sta SPRITES_XMSB jmp b5 - //SEG370 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG371 [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _16 - //SEG372 [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 + //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 lda xpos sta _15 - //SEG373 [215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2 lda _15 ldy _16 sta SPRITES_XPOS,y - //SEG374 [216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [232] (word~) processChars::$17 ← *((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 _17 @@ -5360,14 +5599,14 @@ processChars: { ror _17 lsr _17+1 ror _17 - //SEG375 [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuz1=_byte_vwuz2 + //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuz1=_byte_vwuz2 lda _17 sta _18 - //SEG376 [218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuz1=vbuz2 lda _18 ldy _16 sta SPRITES_YPOS,y - //SEG377 [219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [235] 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 @@ -5380,9 +5619,9 @@ processChars: { bcc b6 !: jmp b13 - //SEG378 processChars::@13 + //SEG394 processChars::@13 b13: - //SEG379 [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG395 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -5395,166 +5634,172 @@ processChars: { bcc b6 !: jmp b9 - //SEG380 processChars::@9 + //SEG396 processChars::@9 b9: - //SEG381 [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_minus_vwuc2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + //SEG397 [237] *((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 lda (processing),y - sec - sbc #<$10 - sta (processing),y - iny - lda (processing),y - sbc #>$10 - sta (processing),y - //SEG382 [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 -- _deref_pwuz1=_deref_pwuz1_minus_vwuc1 ldy #0 - lda (processing),y - sec - sbc #<$10 + adc (processing),y sta (processing),y + ldy $ff iny lda (processing),y - sbc #>$10 + ldy #1 + adc (processing),y + sta (processing),y + //SEG398 [238] *((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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + adc (processing),y + sta (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1 + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 + adc (processing),y sta (processing),y jmp b7 - //SEG383 processChars::@7 + //SEG399 processChars::@7 b7: - //SEG384 [223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG385 [224] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG386 [224] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG387 processChars::@2 + //SEG403 processChars::@2 b2: - //SEG388 [225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG405 [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 jmp b12 - //SEG390 processChars::@12 + //SEG406 processChars::@12 b12: - //SEG391 [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2 + //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2 lax numActive axs #-['0'] stx _1 - //SEG392 [228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1 + //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1 lda _1 sta SCREEN+$3e7 jmp breturn - //SEG393 processChars::@return + //SEG409 processChars::@return breturn: - //SEG394 [229] return + //SEG410 [245] return rts - //SEG395 processChars::@6 + //SEG411 processChars::@6 b6: - //SEG396 [230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG412 [246] *((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 - //SEG397 [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask sta _22 - //SEG398 [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 // Disable the sprite lda SPRITES_ENABLE and _22 sta SPRITES_ENABLE jmp b7 - //SEG399 processChars::@4 + //SEG415 processChars::@4 b4: - //SEG400 [233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG416 [249] *((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 } -//SEG401 irqTop +//SEG417 irqTop // Raster Interrupt at the top of the screen irqTop: { .label i = $29 .label i1 = $2a - //SEG402 entry interrupt(HARDWARE_ALL) + //SEG418 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG403 [235] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG404 [235] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 + //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG405 [235] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG406 [235] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG407 irqTop::@1 + //SEG423 irqTop::@1 b1: - //SEG408 [236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 + //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG409 [237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 jmp b2 - //SEG410 irqTop::@2 + //SEG426 irqTop::@2 b2: - //SEG411 [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG412 [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG413 [240] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] b3_from_b2: - //SEG414 [240] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuz1=vbuc1 + //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuz1=vbuc1 lda #0 sta i1 jmp b3 - //SEG415 [240] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] b3_from_b3: - //SEG416 [240] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy jmp b3 - //SEG417 irqTop::@3 + //SEG433 irqTop::@3 b3: - //SEG418 [241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 + //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG419 [242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 bne b3_from_b3 jmp b4 - //SEG420 irqTop::@4 + //SEG436 irqTop::@4 b4: - //SEG421 [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG422 [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG423 [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG439 [261] *((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 [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG441 [263] *((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 + //SEG442 irqTop::@return breturn: - //SEG427 [248] return - exit interrupt(HARDWARE_ALL) + //SEG443 [264] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5570,319 +5815,349 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill 9*NUM_PROCESSING, 0 + PROCESSING: .fill $d*NUM_PROCESSING, 0 REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y Statement [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$22 ] ( main:2 [ main::i#2 main::$22 ] ) always clobbers reg byte a +Statement [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$24 ] ( main:2 [ main::i#2 main::$24 ] ) 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 [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ main::$15 ] -Statement [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ 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 [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ 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 [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a -Statement [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$36 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$36 ] ) 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 ] +Statement [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 [ main::i#2 main::$25 ] ( main:2 [ main::i#2 main::$25 ] ) always clobbers reg byte a +Statement [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 [ main::i#2 main::$26 ] ( main:2 [ main::i#2 main::$26 ] ) always clobbers reg byte a +Statement [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ main::$15 ] +Statement [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Statement [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ main::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ main::center_y#0 ] +Statement [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a +Statement [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE: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 [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$38 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$38 ] ) always clobbers reg byte a -Statement [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$39 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$39 ] ) always clobbers reg byte a -Statement [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [52] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [53] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [54] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [55] (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:2::startProcessing:38 [ 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 [56] (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:2::startProcessing:38 [ 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 [57] (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:2::startProcessing:38 [ 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 [58] (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:2::startProcessing:38 [ 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 [59] (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:2::startProcessing:38 [ 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 [61] *((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:2::startProcessing:38 [ 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 [63] *((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:2::startProcessing:38 [ 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:53 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ startProcessing::center_y#0 ] +Statement [47] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ) always clobbers reg byte a +Statement [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ) always clobbers reg byte a +Statement [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a +Statement [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ) always clobbers reg byte a +Statement [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ) always clobbers reg byte a +Statement [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a +Statement [58] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [59] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a +Statement [60] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [61] (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:2::startProcessing:42 [ 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 [62] (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:2::startProcessing:42 [ 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 [63] (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:2::startProcessing:42 [ 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 [64] (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:2::startProcessing:42 [ 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 [65] (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:2::startProcessing:42 [ 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 [67] *((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:2::startProcessing:42 [ 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 [69] *((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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] -Statement [64] (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:2::startProcessing:38 [ 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 [68] *((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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [72] (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:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [78] (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:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$41 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$41 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] -Statement [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ startProcessing::$28 ] -Statement [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:38 [ ] ) always clobbers reg byte a -Statement [95] 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:2::getCharToProcess:27 [ 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 [70] (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:2::startProcessing:42 [ 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 [74] *((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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a +Statement [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [78] (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:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [84] (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:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 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:98 [ startProcessing::spritePtr#0 ] +Statement [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ) always clobbers reg byte a +Statement [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ) always clobbers reg byte a +Statement [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ) always clobbers reg byte a +Statement [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ) always clobbers reg byte a +Statement [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ) always clobbers reg byte a +Statement [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Statement [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:107 [ startProcessing::$34 ] +Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:42 [ ] ) always clobbers reg byte a +Statement [109] 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:2::getCharToProcess:31 [ 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 [96] (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:2::getCharToProcess:27 [ 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 [97] (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:2::getCharToProcess:27 [ 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:97 [ getCharToProcess::$13 ] -Statement [98] (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:2::getCharToProcess:27 [ 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 [99] 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:2::getCharToProcess:27 [ 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 [105] (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:2::getCharToProcess:27 [ 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 [108] 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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [110] (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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [113] (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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [116] (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:2::getCharToProcess:27 [ 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 [117] (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:2::getCharToProcess:27 [ 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 [118] (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:2::getCharToProcess:27 [ 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 [119] (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:2::getCharToProcess:27 [ 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 [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [132] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:23 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [134] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:23 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:23 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [110] (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:2::getCharToProcess:31 [ 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 [111] (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:2::getCharToProcess:31 [ 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:108 [ getCharToProcess::$13 ] +Statement [112] (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:2::getCharToProcess:31 [ 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 [113] 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:2::getCharToProcess:31 [ 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 [119] (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:2::getCharToProcess:31 [ 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 [122] 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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [124] (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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [127] (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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [130] (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:2::getCharToProcess:31 [ 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 [131] (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:2::getCharToProcess:31 [ 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 [132] (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:2::getCharToProcess:31 [ 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 [133] (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:2::getCharToProcess:31 [ 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 [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [146] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:27 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:27 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:27 [ 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 [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [151] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [165] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ 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 [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [164] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [178] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ 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 [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:150 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:163 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:177 [ 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 [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [195] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::$42 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$42 ] ) always clobbers reg byte a +Statement [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [209] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a -Statement [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [201] (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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ) always clobbers reg byte a +Statement [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ) always clobbers reg byte a +Statement [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a +Statement [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [202] 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:189 [ 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:124 [ processChars::bitmask#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ processChars::bitmask#0 ] -Statement [203] 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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [204] *(*((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:137 [ processChars::bitmask#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:137 [ processChars::bitmask#0 ] +Statement [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:124 [ processChars::bitmask#0 ] -Statement [205] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [206] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [207] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [208] (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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:129 [ processChars::$16 ] -Statement [216] (word~) processChars::$17 ← *((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::$16 processChars::$17 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:129 [ processChars::$16 ] -Statement [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a -Statement [219] 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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 [ processChars::i#10 processChars::numActive#10 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:189 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:189 [ processChars::$1 ] ) always clobbers reg byte a -Statement [230] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a -Statement [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [233] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [248] 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:137 [ processChars::bitmask#0 ] +Statement [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a +Statement [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a +Statement [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:142 [ processChars::$16 ] +Statement [232] (word~) processChars::$17 ← *((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::$16 processChars::$17 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:142 [ processChars::$16 ] +Statement [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a +Statement [235] 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:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [237] *((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:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a +Statement [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a +Statement [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [264] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y Statement [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y Statement [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$22 ] ( main:2 [ main::i#2 main::$22 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a -Statement [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Statement [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a -Statement [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$36 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$36 ] ) always clobbers reg byte a -Statement [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$38 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$38 ] ) always clobbers reg byte a -Statement [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$39 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$39 ] ) always clobbers reg byte a -Statement [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [52] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [53] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [54] (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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [55] (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:2::startProcessing:38 [ 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 [56] (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:2::startProcessing:38 [ 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 [57] (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:2::startProcessing:38 [ 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 [58] (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:2::startProcessing:38 [ 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 [59] (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:2::startProcessing:38 [ 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 [61] *((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:2::startProcessing:38 [ 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 [63] *((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:2::startProcessing:38 [ 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 [64] (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:2::startProcessing:38 [ 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 [68] *((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:2::startProcessing:38 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [72] (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:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:38 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [78] (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:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$41 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$41 ] ) always clobbers reg byte a -Statement [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:2::startProcessing:38 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:38 [ ] ) always clobbers reg byte a -Statement [95] 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:2::getCharToProcess:27 [ 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 [96] (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:2::getCharToProcess:27 [ 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 [97] (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:2::getCharToProcess:27 [ 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 [98] (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:2::getCharToProcess:27 [ 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 [99] 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:2::getCharToProcess:27 [ 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 [105] (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:2::getCharToProcess:27 [ 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 [108] 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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [110] (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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [113] (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:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:27 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [116] (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:2::getCharToProcess:27 [ 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 [117] (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:2::getCharToProcess:27 [ 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 [118] (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:2::getCharToProcess:27 [ 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 [119] (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:2::getCharToProcess:27 [ 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 [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:25 [ ] ) always clobbers reg byte a -Statement [132] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:23 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [134] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:23 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:23 [ initSprites::i#2 ] ) always clobbers reg byte a -Statement [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:23 [ ] ) always clobbers reg byte a -Statement [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a -Statement [151] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a -Statement [164] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Statement [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::initSquareTables:5::mul8u:150 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::initSquareTables:5::mul8u:163 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:150 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:163 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [195] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::$42 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$42 ] ) always clobbers reg byte a -Statement [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a -Statement [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [201] (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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [202] 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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [203] 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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [204] *(*((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [205] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [206] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [207] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [208] (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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a -Statement [216] (word~) processChars::$17 ← *((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::$16 processChars::$17 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y -Statement [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a -Statement [219] 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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 [ processChars::i#10 processChars::numActive#10 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:189 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:189 [ processChars::$1 ] ) always clobbers reg byte a -Statement [230] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a -Statement [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:189 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [233] *((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:189 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [248] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$24 ] ( main:2 [ main::i#2 main::$24 ] ) always clobbers reg byte a +Statement [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 [ main::i#2 main::$25 ] ( main:2 [ main::i#2 main::$25 ] ) always clobbers reg byte a +Statement [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 [ main::i#2 main::$26 ] ( main:2 [ main::i#2 main::$26 ] ) always clobbers reg byte a +Statement [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a +Statement [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Statement [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Statement [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a +Statement [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a +Statement [47] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ) always clobbers reg byte a +Statement [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ) always clobbers reg byte a +Statement [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a +Statement [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ) always clobbers reg byte a +Statement [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ) always clobbers reg byte a +Statement [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a +Statement [58] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [59] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a +Statement [60] (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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [61] (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:2::startProcessing:42 [ 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 [62] (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:2::startProcessing:42 [ 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 [63] (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:2::startProcessing:42 [ 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 [64] (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:2::startProcessing:42 [ 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 [65] (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:2::startProcessing:42 [ 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 [67] *((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:2::startProcessing:42 [ 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 [69] *((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:2::startProcessing:42 [ 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 [70] (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:2::startProcessing:42 [ 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 [74] *((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:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a +Statement [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [78] (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:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [84] (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:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a +Statement [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ) always clobbers reg byte a +Statement [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ) always clobbers reg byte a +Statement [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ) always clobbers reg byte a +Statement [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ) always clobbers reg byte a +Statement [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ) always clobbers reg byte a +Statement [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Statement [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a +Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a +Statement [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:42 [ ] ) always clobbers reg byte a +Statement [109] 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:2::getCharToProcess:31 [ 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 [110] (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:2::getCharToProcess:31 [ 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 [111] (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:2::getCharToProcess:31 [ 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 [112] (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:2::getCharToProcess:31 [ 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 [113] 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:2::getCharToProcess:31 [ 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 [119] (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:2::getCharToProcess:31 [ 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 [122] 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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [124] (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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [127] (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:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [130] (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:2::getCharToProcess:31 [ 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 [131] (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:2::getCharToProcess:31 [ 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 [132] (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:2::getCharToProcess:31 [ 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 [133] (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:2::getCharToProcess:31 [ 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 [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a +Statement [146] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:27 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:27 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:27 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a +Statement [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a +Statement [165] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a +Statement [178] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::initSquareTables:5::mul8u:177 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:177 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [209] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ) always clobbers reg byte a +Statement [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ) always clobbers reg byte a +Statement [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ) always clobbers reg byte a +Statement [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a +Statement [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a +Statement [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a +Statement [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a +Statement [232] (word~) processChars::$17 ← *((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::$16 processChars::$17 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y +Statement [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a +Statement [235] 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:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [237] *((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:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a +Statement [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a +Statement [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [264] 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 , @@ -5914,75 +6189,87 @@ Potential registers zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] : zp Potential registers zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] : zp ZP_BYTE:40 , Potential registers zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ main::$22 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ main::$15 ] : 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::$36 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ startProcessing::$27 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:57 [ startProcessing::$0 ] : zp ZP_WORD:57 , -Potential registers zp ZP_WORD:59 [ startProcessing::$38 ] : zp ZP_WORD:59 , -Potential registers zp ZP_WORD:61 [ startProcessing::$39 ] : zp ZP_WORD:61 , -Potential registers zp ZP_WORD:63 [ startProcessing::$1 ] : zp ZP_WORD:63 , -Potential registers zp ZP_WORD:65 [ startProcessing::$2 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:67 , -Potential registers zp ZP_WORD:69 [ startProcessing::$4 ] : zp ZP_WORD:69 , -Potential registers zp ZP_WORD:71 [ startProcessing::$5 ] : zp ZP_WORD:71 , -Potential registers zp ZP_BYTE:73 [ startProcessing::ch#0 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:74 [ startProcessing::$7 ] : zp ZP_WORD:74 , -Potential registers zp ZP_WORD:76 [ startProcessing::$8 ] : zp ZP_WORD:76 , -Potential registers zp ZP_WORD:78 [ startProcessing::$10 ] : zp ZP_WORD:78 , -Potential registers zp ZP_WORD:80 [ startProcessing::$11 ] : zp ZP_WORD:80 , -Potential registers zp ZP_WORD:82 [ startProcessing::$12 ] : zp ZP_WORD:82 , -Potential registers zp ZP_WORD:84 [ startProcessing::spriteX#0 ] : zp ZP_WORD:84 , -Potential registers zp ZP_WORD:86 [ startProcessing::$14 ] : zp ZP_WORD:86 , -Potential registers zp ZP_WORD:88 [ startProcessing::$15 ] : zp ZP_WORD:88 , -Potential registers zp ZP_WORD:90 [ startProcessing::$16 ] : zp ZP_WORD:90 , -Potential registers zp ZP_WORD:92 [ startProcessing::spriteY#0 ] : zp ZP_WORD:92 , -Potential registers zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:94 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ startProcessing::$41 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ startProcessing::$28 ] : zp ZP_BYTE:96 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ getCharToProcess::$13 ] : zp ZP_BYTE:97 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ getCharToProcess::$14 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:99 [ getCharToProcess::$9 ] : zp ZP_WORD:99 , -Potential registers zp ZP_WORD:101 [ getCharToProcess::$15 ] : zp ZP_WORD:101 , -Potential registers zp ZP_WORD:103 [ getCharToProcess::$16 ] : zp ZP_WORD:103 , -Potential registers zp ZP_WORD:105 [ getCharToProcess::$10 ] : zp ZP_WORD:105 , -Potential registers zp ZP_WORD:107 [ getCharToProcess::$11 ] : zp ZP_WORD:107 , -Potential registers zp ZP_WORD:109 [ mul8u::return#2 ] : zp ZP_WORD:109 , -Potential registers zp ZP_WORD:111 [ initSquareTables::$6 ] : zp ZP_WORD:111 , -Potential registers zp ZP_BYTE:113 [ initSquareTables::$16 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:114 [ mul8u::return#3 ] : zp ZP_WORD:114 , -Potential registers zp ZP_WORD:116 [ initSquareTables::$14 ] : zp ZP_WORD:116 , -Potential registers zp ZP_BYTE:118 [ initSquareTables::$17 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ mul8u::$1 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ processChars::$42 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:121 [ processChars::$24 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:122 [ processChars::processing#0 ] : zp ZP_WORD:122 , -Potential registers zp ZP_BYTE:124 [ processChars::bitmask#0 ] : zp ZP_BYTE:124 , -Potential registers zp ZP_WORD:125 [ processChars::xpos#0 ] : zp ZP_WORD:125 , -Potential registers zp ZP_BYTE:127 [ processChars::$12 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ processChars::$13 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ processChars::$16 ] : zp ZP_BYTE:129 , reg byte x , -Potential registers zp ZP_BYTE:130 [ processChars::$15 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:131 [ processChars::$17 ] : zp ZP_WORD:131 , -Potential registers zp ZP_BYTE:133 [ processChars::$18 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:134 [ processChars::$1 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ processChars::$22 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ main::$24 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ main::$25 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ main::$26 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ main::$15 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:49 , +Potential registers zp ZP_BYTE:51 [ main::center_x#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ main::center_y#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:53 [ main::center_dist#0 ] : zp ZP_WORD:53 , +Potential registers zp ZP_BYTE:55 [ startProcessing::center_x#0 ] : zp ZP_BYTE:55 , reg byte x , +Potential registers zp ZP_BYTE:56 [ startProcessing::center_y#0 ] : zp ZP_BYTE:56 , reg byte x , +Potential registers zp ZP_BYTE:57 [ startProcessing::$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::$46 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:60 [ startProcessing::$33 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:61 [ startProcessing::$0 ] : zp ZP_WORD:61 , +Potential registers zp ZP_WORD:63 [ startProcessing::$48 ] : zp ZP_WORD:63 , +Potential registers zp ZP_WORD:65 [ startProcessing::$49 ] : zp ZP_WORD:65 , +Potential registers zp ZP_WORD:67 [ startProcessing::$1 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ startProcessing::$2 ] : zp ZP_WORD:69 , +Potential registers zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:71 , +Potential registers zp ZP_WORD:73 [ startProcessing::$4 ] : zp ZP_WORD:73 , +Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 , +Potential registers zp ZP_BYTE:77 [ startProcessing::ch#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:78 [ startProcessing::$7 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ startProcessing::$10 ] : zp ZP_WORD:82 , +Potential registers zp ZP_WORD:84 [ startProcessing::$11 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ startProcessing::$12 ] : zp ZP_WORD:86 , +Potential registers zp ZP_WORD:88 [ startProcessing::spriteX#0 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ startProcessing::$14 ] : zp ZP_WORD:90 , +Potential registers zp ZP_WORD:92 [ startProcessing::$15 ] : zp ZP_WORD:92 , +Potential registers zp ZP_WORD:94 [ startProcessing::$16 ] : zp ZP_WORD:94 , +Potential registers zp ZP_WORD:96 [ startProcessing::spriteY#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ startProcessing::$22 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ startProcessing::$23 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ startProcessing::$24 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:102 [ startProcessing::$25 ] : zp ZP_WORD:102 , +Potential registers zp ZP_BYTE:104 [ startProcessing::$51 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ startProcessing::$52 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ startProcessing::$53 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ startProcessing::$34 ] : zp ZP_BYTE:107 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ getCharToProcess::$13 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ getCharToProcess::$14 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:110 [ getCharToProcess::$9 ] : zp ZP_WORD:110 , +Potential registers zp ZP_WORD:112 [ getCharToProcess::$15 ] : zp ZP_WORD:112 , +Potential registers zp ZP_WORD:114 [ getCharToProcess::$16 ] : zp ZP_WORD:114 , +Potential registers zp ZP_WORD:116 [ getCharToProcess::$10 ] : zp ZP_WORD:116 , +Potential registers zp ZP_WORD:118 [ getCharToProcess::$11 ] : zp ZP_WORD:118 , +Potential registers zp ZP_WORD:120 [ mul8u::return#2 ] : zp ZP_WORD:120 , +Potential registers zp ZP_WORD:122 [ initSquareTables::$6 ] : zp ZP_WORD:122 , +Potential registers zp ZP_BYTE:124 [ initSquareTables::$16 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:125 [ mul8u::return#3 ] : zp ZP_WORD:125 , +Potential registers zp ZP_WORD:127 [ initSquareTables::$14 ] : zp ZP_WORD:127 , +Potential registers zp ZP_BYTE:129 [ initSquareTables::$17 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ mul8u::$1 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ processChars::$44 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ processChars::$45 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ processChars::$46 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ processChars::$24 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:135 [ processChars::processing#0 ] : zp ZP_WORD:135 , +Potential registers zp ZP_BYTE:137 [ processChars::bitmask#0 ] : zp ZP_BYTE:137 , +Potential registers zp ZP_WORD:138 [ processChars::xpos#0 ] : zp ZP_WORD:138 , +Potential registers zp ZP_BYTE:140 [ processChars::$12 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:141 [ processChars::$13 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:142 [ processChars::$16 ] : zp ZP_BYTE:142 , reg byte x , +Potential registers zp ZP_BYTE:143 [ processChars::$15 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:144 [ processChars::$17 ] : zp ZP_WORD:144 , +Potential registers zp ZP_BYTE:146 [ processChars::$18 ] : zp ZP_BYTE:146 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:147 [ processChars::$1 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:148 [ processChars::$22 ] : zp ZP_BYTE:148 , 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:98 [ 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:97 [ 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:101 [ getCharToProcess::$15 ] 4: zp ZP_WORD:103 [ getCharToProcess::$16 ] 4: zp ZP_WORD:105 [ getCharToProcess::$10 ] 4: zp ZP_WORD:107 [ getCharToProcess::$11 ] 3: zp ZP_WORD:99 [ getCharToProcess::$9 ] -Uplift Scope [startProcessing] 2,989.28: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:55 [ startProcessing::$36 ] 2,002: zp ZP_BYTE:56 [ startProcessing::$27 ] 230.86: 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:59 [ startProcessing::$38 ] 4: zp ZP_WORD:61 [ startProcessing::$39 ] 4: zp ZP_WORD:63 [ startProcessing::$1 ] 4: zp ZP_WORD:69 [ startProcessing::$4 ] 4: zp ZP_WORD:71 [ startProcessing::$5 ] 4: zp ZP_WORD:74 [ startProcessing::$7 ] 4: zp ZP_WORD:76 [ startProcessing::$8 ] 4: zp ZP_WORD:78 [ startProcessing::$10 ] 4: zp ZP_WORD:80 [ startProcessing::$11 ] 4: zp ZP_WORD:82 [ startProcessing::$12 ] 4: zp ZP_WORD:86 [ startProcessing::$14 ] 4: zp ZP_WORD:88 [ startProcessing::$15 ] 4: zp ZP_WORD:90 [ startProcessing::$16 ] 4: zp ZP_BYTE:95 [ startProcessing::$41 ] 3: zp ZP_WORD:57 [ startProcessing::$0 ] 2.33: zp ZP_BYTE:96 [ startProcessing::$28 ] 2: zp ZP_BYTE:73 [ startProcessing::ch#0 ] 1.2: zp ZP_WORD:65 [ startProcessing::$2 ] 0.8: zp ZP_WORD:92 [ startProcessing::spriteY#0 ] 0.67: zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] 0.5: zp ZP_WORD:84 [ startProcessing::spriteX#0 ] 0.41: zp ZP_BYTE:53 [ startProcessing::center_x#0 ] 0.28: zp ZP_BYTE:54 [ startProcessing::center_y#0 ] 0.12: zp ZP_WORD:67 [ 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:119 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:109 [ mul8u::return#2 ] 22: zp ZP_WORD:114 [ mul8u::return#3 ] -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:113 [ initSquareTables::$16 ] 22: zp ZP_BYTE:118 [ initSquareTables::$17 ] 11: zp ZP_WORD:111 [ initSquareTables::$6 ] 11: zp ZP_WORD:116 [ initSquareTables::$14 ] -Uplift Scope [processChars] 34.77: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:120 [ processChars::$42 ] 22: zp ZP_BYTE:121 [ processChars::$24 ] 22: zp ZP_BYTE:127 [ processChars::$12 ] 22: zp ZP_BYTE:128 [ processChars::$13 ] 22: zp ZP_BYTE:130 [ processChars::$15 ] 22: zp ZP_BYTE:133 [ processChars::$18 ] 22: zp ZP_BYTE:135 [ processChars::$22 ] 18.22: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:131 [ processChars::$17 ] 6.6: zp ZP_BYTE:129 [ processChars::$16 ] 4: zp ZP_BYTE:134 [ processChars::$1 ] 3.14: zp ZP_WORD:125 [ processChars::xpos#0 ] 2.5: zp ZP_BYTE:124 [ processChars::bitmask#0 ] 0.48: zp ZP_WORD:122 [ processChars::processing#0 ] -Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$22 ] 22: zp ZP_WORD:51 [ main::center_dist#0 ] 21.39: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.83: zp ZP_BYTE:44 [ main::$15 ] 5.5: zp ZP_BYTE:49 [ main::center_x#0 ] 5.5: zp ZP_BYTE:50 [ 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:109 [ 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:108 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:112 [ getCharToProcess::$15 ] 4: zp ZP_WORD:114 [ getCharToProcess::$16 ] 4: zp ZP_WORD:116 [ getCharToProcess::$10 ] 4: zp ZP_WORD:118 [ getCharToProcess::$11 ] 3: zp ZP_WORD:110 [ getCharToProcess::$9 ] +Uplift Scope [startProcessing] 2,733.07: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$44 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$45 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$46 ] 2,002: zp ZP_BYTE:60 [ startProcessing::$33 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:63 [ startProcessing::$48 ] 4: zp ZP_WORD:65 [ startProcessing::$49 ] 4: zp ZP_WORD:67 [ startProcessing::$1 ] 4: zp ZP_WORD:73 [ startProcessing::$4 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:78 [ startProcessing::$7 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$10 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:90 [ startProcessing::$14 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_BYTE:99 [ startProcessing::$22 ] 4: zp ZP_BYTE:100 [ startProcessing::$23 ] 4: zp ZP_BYTE:104 [ startProcessing::$51 ] 4: zp ZP_BYTE:105 [ startProcessing::$52 ] 4: zp ZP_BYTE:106 [ startProcessing::$53 ] 3: zp ZP_WORD:61 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:107 [ startProcessing::$34 ] 2: zp ZP_BYTE:77 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:101 [ startProcessing::$24 ] 1.2: zp ZP_WORD:69 [ startProcessing::$2 ] 0.57: zp ZP_WORD:102 [ startProcessing::$25 ] 0.38: zp ZP_BYTE:55 [ startProcessing::center_x#0 ] 0.36: zp ZP_WORD:96 [ startProcessing::spriteY#0 ] 0.29: zp ZP_WORD:88 [ startProcessing::spriteX#0 ] 0.29: zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:56 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:130 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:120 [ mul8u::return#2 ] 22: zp ZP_WORD:125 [ mul8u::return#3 ] +Uplift Scope [processChars] 34.7: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:131 [ processChars::$44 ] 22: zp ZP_BYTE:132 [ processChars::$45 ] 22: zp ZP_BYTE:133 [ processChars::$46 ] 22: zp ZP_BYTE:134 [ processChars::$24 ] 22: zp ZP_BYTE:140 [ processChars::$12 ] 22: zp ZP_BYTE:141 [ processChars::$13 ] 22: zp ZP_BYTE:143 [ processChars::$15 ] 22: zp ZP_BYTE:146 [ processChars::$18 ] 22: zp ZP_BYTE:148 [ processChars::$22 ] 18.44: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:144 [ processChars::$17 ] 6.6: zp ZP_BYTE:142 [ processChars::$16 ] 4: zp ZP_BYTE:147 [ processChars::$1 ] 3.14: zp ZP_WORD:138 [ processChars::xpos#0 ] 2.5: zp ZP_BYTE:137 [ processChars::bitmask#0 ] 0.48: zp ZP_WORD:135 [ 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:124 [ initSquareTables::$16 ] 22: zp ZP_BYTE:129 [ initSquareTables::$17 ] 11: zp ZP_WORD:122 [ initSquareTables::$6 ] 11: zp ZP_WORD:127 [ initSquareTables::$14 ] +Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$24 ] 22: zp ZP_BYTE:44 [ main::$25 ] 22: zp ZP_BYTE:45 [ main::$26 ] 22: zp ZP_WORD:53 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:46 [ main::$15 ] 5.5: zp ZP_BYTE:51 [ main::center_x#0 ] 5.5: zp ZP_BYTE:52 [ main::center_y#0 ] Uplift Scope [irqTop] 38.5: zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] Uplift Scope [initSprites] 33: zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] 33: zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] @@ -5991,134 +6278,159 @@ Uplift Scope [ProcessingSprite] Uplift Scope [setupRasterIrq] Uplift Scope [] -Uplifting [getCharToProcess] best 270126 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:97 [ 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:101 [ getCharToProcess::$15 ] zp ZP_WORD:103 [ getCharToProcess::$16 ] zp ZP_WORD:105 [ getCharToProcess::$10 ] zp ZP_WORD:107 [ getCharToProcess::$11 ] zp ZP_WORD:99 [ getCharToProcess::$9 ] +Uplifting [getCharToProcess] best 288122 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:108 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:112 [ getCharToProcess::$15 ] zp ZP_WORD:114 [ getCharToProcess::$16 ] zp ZP_WORD:116 [ getCharToProcess::$10 ] zp ZP_WORD:118 [ getCharToProcess::$11 ] zp ZP_WORD:110 [ getCharToProcess::$9 ] Limited combination testing to 100 combinations of 8748 possible. -Uplifting [startProcessing] best 259226 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$36 ] reg byte a [ startProcessing::$27 ] reg byte x [ 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:59 [ startProcessing::$38 ] zp ZP_WORD:61 [ startProcessing::$39 ] zp ZP_WORD:63 [ startProcessing::$1 ] zp ZP_WORD:69 [ startProcessing::$4 ] zp ZP_WORD:71 [ startProcessing::$5 ] zp ZP_WORD:74 [ startProcessing::$7 ] zp ZP_WORD:76 [ startProcessing::$8 ] zp ZP_WORD:78 [ startProcessing::$10 ] zp ZP_WORD:80 [ startProcessing::$11 ] zp ZP_WORD:82 [ startProcessing::$12 ] zp ZP_WORD:86 [ startProcessing::$14 ] zp ZP_WORD:88 [ startProcessing::$15 ] zp ZP_WORD:90 [ startProcessing::$16 ] zp ZP_BYTE:95 [ startProcessing::$41 ] zp ZP_WORD:57 [ startProcessing::$0 ] zp ZP_BYTE:96 [ startProcessing::$28 ] zp ZP_BYTE:73 [ startProcessing::ch#0 ] zp ZP_WORD:65 [ startProcessing::$2 ] zp ZP_WORD:92 [ startProcessing::spriteY#0 ] zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] zp ZP_WORD:84 [ startProcessing::spriteX#0 ] zp ZP_BYTE:53 [ startProcessing::center_x#0 ] zp ZP_BYTE:54 [ startProcessing::center_y#0 ] zp ZP_WORD:67 [ startProcessing::screenPtr#0 ] -Limited combination testing to 100 combinations of 110592 possible. -Uplifting [mul8u] best 258200 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:109 [ mul8u::return#2 ] zp ZP_WORD:114 [ mul8u::return#3 ] +Uplifting [startProcessing] best 270122 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$44 ] reg byte a [ startProcessing::$45 ] reg byte a [ startProcessing::$46 ] zp ZP_BYTE:60 [ startProcessing::$33 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:63 [ startProcessing::$48 ] zp ZP_WORD:65 [ startProcessing::$49 ] zp ZP_WORD:67 [ startProcessing::$1 ] zp ZP_WORD:73 [ startProcessing::$4 ] zp ZP_WORD:75 [ startProcessing::$5 ] zp ZP_WORD:78 [ startProcessing::$7 ] zp ZP_WORD:80 [ startProcessing::$8 ] zp ZP_WORD:82 [ startProcessing::$10 ] zp ZP_WORD:84 [ startProcessing::$11 ] zp ZP_WORD:86 [ startProcessing::$12 ] zp ZP_WORD:90 [ startProcessing::$14 ] zp ZP_WORD:92 [ startProcessing::$15 ] zp ZP_WORD:94 [ startProcessing::$16 ] zp ZP_BYTE:99 [ startProcessing::$22 ] zp ZP_BYTE:100 [ startProcessing::$23 ] zp ZP_BYTE:104 [ startProcessing::$51 ] zp ZP_BYTE:105 [ startProcessing::$52 ] zp ZP_BYTE:106 [ startProcessing::$53 ] zp ZP_WORD:61 [ startProcessing::$0 ] zp ZP_BYTE:107 [ startProcessing::$34 ] zp ZP_BYTE:77 [ startProcessing::ch#0 ] zp ZP_BYTE:101 [ startProcessing::$24 ] zp ZP_WORD:69 [ startProcessing::$2 ] zp ZP_WORD:102 [ startProcessing::$25 ] zp ZP_BYTE:55 [ startProcessing::center_x#0 ] zp ZP_WORD:96 [ startProcessing::spriteY#0 ] zp ZP_WORD:88 [ startProcessing::spriteX#0 ] zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:56 [ startProcessing::center_y#0 ] zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Limited combination testing to 100 combinations of 1811939328 possible. +Uplifting [mul8u] best 269096 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:120 [ mul8u::return#2 ] zp ZP_WORD:125 [ mul8u::return#3 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [initSquareTables] best 258040 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:113 [ initSquareTables::$16 ] zp ZP_BYTE:118 [ initSquareTables::$17 ] zp ZP_WORD:111 [ initSquareTables::$6 ] zp ZP_WORD:116 [ initSquareTables::$14 ] +Uplifting [processChars] best 268856 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$44 ] reg byte a [ processChars::$45 ] reg byte a [ processChars::$46 ] reg byte a [ processChars::$24 ] zp ZP_BYTE:140 [ processChars::$12 ] zp ZP_BYTE:141 [ processChars::$13 ] zp ZP_BYTE:143 [ processChars::$15 ] zp ZP_BYTE:146 [ processChars::$18 ] zp ZP_BYTE:148 [ processChars::$22 ] zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] zp ZP_WORD:144 [ processChars::$17 ] zp ZP_BYTE:142 [ processChars::$16 ] zp ZP_BYTE:147 [ processChars::$1 ] zp ZP_WORD:138 [ processChars::xpos#0 ] zp ZP_BYTE:137 [ processChars::bitmask#0 ] zp ZP_WORD:135 [ processChars::processing#0 ] +Limited combination testing to 100 combinations of 2097152 possible. +Uplifting [initSquareTables] best 268696 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:124 [ initSquareTables::$16 ] zp ZP_BYTE:129 [ initSquareTables::$17 ] zp ZP_WORD:122 [ initSquareTables::$6 ] zp ZP_WORD:127 [ initSquareTables::$14 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [processChars] best 257800 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$42 ] reg byte a [ processChars::$24 ] reg byte a [ processChars::$12 ] reg byte a [ processChars::$13 ] zp ZP_BYTE:130 [ processChars::$15 ] zp ZP_BYTE:133 [ processChars::$18 ] zp ZP_BYTE:135 [ processChars::$22 ] zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] zp ZP_WORD:131 [ processChars::$17 ] zp ZP_BYTE:129 [ processChars::$16 ] zp ZP_BYTE:134 [ processChars::$1 ] zp ZP_WORD:125 [ processChars::xpos#0 ] zp ZP_BYTE:124 [ processChars::bitmask#0 ] zp ZP_WORD:122 [ processChars::processing#0 ] -Limited combination testing to 100 combinations of 131072 possible. -Uplifting [main] best 257480 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::$22 ] zp ZP_WORD:51 [ main::center_dist#0 ] reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::$15 ] reg byte x [ main::center_x#0 ] zp ZP_BYTE:50 [ main::center_y#0 ] -Limited combination testing to 100 combinations of 324 possible. -Uplifting [irqTop] best 257300 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -Uplifting [initSprites] best 257180 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -Uplifting [irqBottom] best 257090 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -Uplifting [ProcessingChar] best 257090 combination -Uplifting [ProcessingSprite] best 257090 combination -Uplifting [setupRasterIrq] best 257090 combination -Uplifting [] best 257090 combination -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Uplifting [startProcessing] best 257090 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Uplifting [main] best 268516 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::$24 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] zp ZP_WORD:53 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:46 [ main::$15 ] zp ZP_BYTE:51 [ main::center_x#0 ] zp ZP_BYTE:52 [ main::center_y#0 ] +Limited combination testing to 100 combinations of 5184 possible. +Uplifting [irqTop] best 268336 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] +Uplifting [initSprites] best 268216 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [irqBottom] best 268126 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] +Uplifting [ProcessingChar] best 268126 combination +Uplifting [ProcessingSprite] best 268126 combination +Uplifting [setupRasterIrq] best 268126 combination +Uplifting [] best 268126 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 257090 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 268126 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 268126 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ startProcessing::$33 ] +Uplifting [startProcessing] best 264126 combination reg byte a [ startProcessing::$33 ] 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 257090 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 264126 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 257090 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:97 [ getCharToProcess::$13 ] -Uplifting [getCharToProcess] best 253090 combination reg byte x [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 264126 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 260126 combination reg byte x [ getCharToProcess::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 253090 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 260126 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 259226 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 252190 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Uplifting [startProcessing] best 258326 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Uplifting [processChars] best 252190 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [processChars] best 258326 combination zp ZP_BYTE:40 [ 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 252190 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 258326 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 252190 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ initSquareTables::$16 ] -Uplifting [initSquareTables] best 252150 combination reg byte a [ initSquareTables::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ initSquareTables::$17 ] -Uplifting [initSquareTables] best 252110 combination reg byte a [ initSquareTables::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:130 [ processChars::$15 ] -Uplifting [processChars] best 252050 combination reg byte a [ processChars::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:133 [ processChars::$18 ] -Uplifting [processChars] best 251990 combination reg byte a [ processChars::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::$22 ] -Uplifting [processChars] best 251930 combination reg byte a [ processChars::$22 ] +Uplifting [initSquareTables] best 258326 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ initSquareTables::$16 ] +Uplifting [initSquareTables] best 258286 combination reg byte a [ initSquareTables::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ initSquareTables::$17 ] +Uplifting [initSquareTables] best 258246 combination reg byte a [ initSquareTables::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::$12 ] +Uplifting [processChars] best 258186 combination reg byte a [ processChars::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::$13 ] +Uplifting [processChars] best 258126 combination reg byte a [ processChars::$13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:143 [ processChars::$15 ] +Uplifting [processChars] best 258066 combination reg byte a [ processChars::$15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:146 [ processChars::$18 ] +Uplifting [processChars] best 258006 combination reg byte a [ processChars::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::$22 ] +Uplifting [processChars] best 257946 combination reg byte a [ processChars::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 257946 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Uplifting [processChars] best 251930 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 251870 combination reg byte x [ getCharToProcess::return_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 251810 combination reg byte y [ getCharToProcess::return_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ processChars::$16 ] -Uplifting [processChars] best 251740 combination reg byte x [ processChars::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ main::center_y#0 ] -Uplifting [main] best 251680 combination reg byte y [ main::center_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ startProcessing::$41 ] -Uplifting [startProcessing] best 251674 combination reg byte a [ startProcessing::$41 ] -Attempting to uplift remaining variables inzp ZP_BYTE:134 [ processChars::$1 ] -Uplifting [processChars] best 251668 combination reg byte x [ processChars::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:124 [ processChars::bitmask#0 ] -Uplifting [processChars] best 251668 combination zp ZP_BYTE:124 [ processChars::bitmask#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:96 [ startProcessing::$28 ] -Uplifting [startProcessing] best 251649 combination reg byte x [ startProcessing::$28 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 251643 combination reg byte a [ startProcessing::ch#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 251643 combination zp ZP_BYTE:94 [ startProcessing::spritePtr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 251643 combination zp ZP_BYTE:53 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 251643 combination zp ZP_BYTE:54 [ 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:76 [ 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:71 [ 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: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:109 [ 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:114 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:57 [ startProcessing::$0 ] ] with [ zp ZP_WORD:61 [ startProcessing::$39 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:63 [ startProcessing::$1 ] ] with [ zp ZP_WORD:65 [ startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:78 [ startProcessing::$10 ] ] with [ zp ZP_WORD:80 [ startProcessing::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$12 ] ] with [ zp ZP_WORD:84 [ startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$14 ] ] with [ zp ZP_WORD:88 [ startProcessing::$15 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$16 ] ] with [ zp ZP_WORD:92 [ startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:99 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:103 [ getCharToProcess::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:105 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:107 [ getCharToProcess::$11 ] ] - 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:74 [ 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:69 [ 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: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:111 [ 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:116 [ initSquareTables::$14 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:57 [ startProcessing::$0 startProcessing::$39 ] ] with [ zp ZP_WORD:63 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:78 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:82 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:90 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:99 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:105 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] -Allocated (was zp ZP_WORD:14) zp ZP_WORD:11 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] -Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:13 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:14 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Allocated (was zp ZP_WORD:18) zp ZP_WORD:15 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] -Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:17 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:18 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -Allocated (was zp ZP_WORD:22) zp ZP_WORD:19 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] -Allocated (was zp ZP_WORD:24) zp ZP_WORD:21 [ initSprites::sp#2 initSprites::sp#1 ] -Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:23 [ initSquareTables::x#2 initSquareTables::x#1 ] -Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:24 [ initSquareTables::y#2 initSquareTables::y#1 ] -Allocated (was zp ZP_WORD:34) zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -Allocated (was zp ZP_WORD:36) zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:29 [ processChars::i#10 processChars::i#1 ] -Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:30 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:31 [ startProcessing::center_x#0 ] -Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:32 [ startProcessing::center_y#0 ] -Allocated (was zp ZP_WORD:57) zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$39 startProcessing::$1 startProcessing::$2 ] -Allocated (was zp ZP_WORD:59) zp ZP_WORD:35 [ startProcessing::$38 ] -Allocated (was zp ZP_WORD:67) zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] -Allocated (was zp ZP_WORD:78) zp ZP_WORD:39 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -Allocated (was zp ZP_WORD:86) zp ZP_WORD:41 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -Allocated (was zp ZP_BYTE:94) zp ZP_BYTE:43 [ startProcessing::spritePtr#0 ] -Allocated (was zp ZP_WORD:99) zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -Allocated (was zp ZP_WORD:101) zp ZP_WORD:46 [ getCharToProcess::$15 ] -Allocated (was zp ZP_WORD:122) zp ZP_WORD:48 [ processChars::processing#0 ] -Allocated (was zp ZP_BYTE:124) zp ZP_BYTE:50 [ processChars::bitmask#0 ] -Allocated (was zp ZP_WORD:125) zp ZP_WORD:51 [ processChars::xpos#0 ] -Allocated (was zp ZP_WORD:131) zp ZP_WORD:53 [ processChars::$17 ] +Uplifting [processChars] best 257946 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ main::$15 ] +Uplifting [main] best 257816 combination reg byte x [ main::$15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 257756 combination reg byte x [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 257696 combination reg byte y [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:142 [ processChars::$16 ] +Uplifting [processChars] best 257626 combination reg byte x [ processChars::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_x#0 ] +Uplifting [main] best 257566 combination reg byte x [ main::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ main::center_y#0 ] +Uplifting [main] best 257506 combination reg byte y [ main::center_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$22 ] +Uplifting [startProcessing] best 257502 combination reg byte a [ startProcessing::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::$23 ] +Uplifting [startProcessing] best 257496 combination reg byte a [ startProcessing::$23 ] +Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$51 ] +Uplifting [startProcessing] best 257490 combination reg byte a [ startProcessing::$51 ] +Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$52 ] +Uplifting [startProcessing] best 257484 combination reg byte a [ startProcessing::$52 ] +Attempting to uplift remaining variables inzp ZP_BYTE:106 [ startProcessing::$53 ] +Uplifting [startProcessing] best 257478 combination reg byte a [ startProcessing::$53 ] +Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$1 ] +Uplifting [processChars] best 257472 combination reg byte x [ processChars::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:137 [ processChars::bitmask#0 ] +Uplifting [processChars] best 257472 combination zp ZP_BYTE:137 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:107 [ startProcessing::$34 ] +Uplifting [startProcessing] best 257447 combination reg byte x [ startProcessing::$34 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 257441 combination reg byte a [ startProcessing::ch#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$24 ] +Uplifting [startProcessing] best 257435 combination reg byte a [ startProcessing::$24 ] +Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:80 [ startProcessing::$8 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:75 [ startProcessing::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:120 [ 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:125 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 ] ] with [ zp ZP_WORD:65 [ startProcessing::$49 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ startProcessing::$1 ] ] with [ zp ZP_WORD:69 [ startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 ] ] with [ zp ZP_WORD:84 [ startProcessing::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 ] ] with [ zp ZP_WORD:92 [ startProcessing::$15 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:114 [ getCharToProcess::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:118 [ getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:78 [ startProcessing::$7 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:73 [ startProcessing::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:53 [ main::center_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:122 [ 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:127 [ initSquareTables::$14 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 startProcessing::$49 ] ] with [ zp ZP_WORD:67 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:116 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] +Allocated (was zp ZP_WORD:11) zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] +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 ] +Allocated (was zp ZP_WORD:18) zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Allocated (was zp ZP_WORD:22) zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] +Allocated (was zp ZP_WORD:24) zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ] +Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ] +Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ] +Allocated (was zp ZP_WORD:34) zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +Allocated (was zp ZP_WORD:36) zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +Allocated (was zp ZP_WORD:61) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] +Allocated (was zp ZP_WORD:63) zp ZP_WORD:36 [ startProcessing::$48 ] +Allocated (was zp ZP_WORD:71) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] +Allocated (was zp ZP_WORD:82) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] +Allocated (was zp ZP_WORD:90) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] +Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] +Allocated (was zp ZP_WORD:102) zp ZP_WORD:45 [ startProcessing::$25 ] +Allocated (was zp ZP_WORD:110) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +Allocated (was zp ZP_WORD:112) zp ZP_WORD:49 [ getCharToProcess::$15 ] +Allocated (was zp ZP_WORD:135) zp ZP_WORD:51 [ processChars::processing#0 ] +Allocated (was zp ZP_BYTE:137) zp ZP_BYTE:53 [ processChars::bitmask#0 ] +Allocated (was zp ZP_WORD:138) zp ZP_WORD:54 [ processChars::xpos#0 ] +Allocated (was zp ZP_WORD:144) zp ZP_WORD:56 [ processChars::$17 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6129,10 +6441,12 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG2 Global Constants & labels .const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2 - .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 4 - .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 5 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 6 - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 7 + .const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4 + .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 // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -6215,9 +6529,10 @@ bend: main: { .label src = 2 .label dst = 4 - .label center_dist = $13 + .label i = 6 + .label center_dist = $14 //SEG11 [5] call initSquareTables - //SEG12 [143] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -6265,8 +6580,9 @@ main: { bne b1_from_b1 //SEG24 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 - ldy #0 + //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta i jmp b2 // Init processing array //SEG26 [11] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -6275,84 +6591,98 @@ main: { jmp b2 //SEG28 main::@2 b2: - //SEG29 [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 -- vbuaa=vbuyy_rol_3 - tya + //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda i asl - asl - asl - //SEG30 [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuyy - sty $ff + //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc - adc $ff + adc i + //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + clc + adc i tax - //SEG31 [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x lda #0 sta PROCESSING+1,x - //SEG32 [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (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 - //SEG33 [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (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 + //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (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 + //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG34 [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG35 [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG36 [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (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 - //SEG37 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG38 [21] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 - cpy #NUM_PROCESSING-1+1 + //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG42 [25] 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 - //SEG39 [22] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG40 main::@3 + //SEG44 main::@3 b3: - //SEG41 [23] call initSprites - //SEG42 [130] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG45 [27] call initSprites + //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG43 [24] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] b7_from_b3: jmp b7 - //SEG44 main::@7 + //SEG48 main::@7 b7: - //SEG45 [25] call setupRasterIrq + //SEG49 [29] call setupRasterIrq jsr setupRasterIrq - //SEG46 [26] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] b4_from_b5: b4_from_b7: jmp b4 // Main loop - //SEG47 main::@4 + //SEG51 main::@4 b4: - //SEG48 [27] call getCharToProcess - //SEG49 [92] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG52 [31] call getCharToProcess + //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG50 [28] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG51 [29] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG52 [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG56 [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 jmp b8 - //SEG53 main::@8 + //SEG57 main::@8 b8: - //SEG54 [31] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG55 [32] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG56 [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG57 [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG60 [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG61 [38] 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 @@ -6360,128 +6690,133 @@ main: { cmp #startProcessing] + //SEG67 [42] call startProcessing + //SEG68 [43] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG65 startProcessing +//SEG69 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($1f) center_x, byte zeropage($20) center_y) +// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) startProcessing: { - .label _0 = $21 - .label _1 = $21 - .label _2 = $21 - .label _4 = 9 - .label _5 = 9 - .label _7 = 7 - .label _8 = 7 - .label _10 = $27 - .label _11 = $27 - .label _12 = $27 - .label _14 = $29 - .label _15 = $29 - .label _16 = $29 - .label center_x = $1f - .label center_y = $20 - .label i = 6 - .label screenPtr = $25 - .label spriteData = 9 - .label chargenData = 7 - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b - .label freeIdx = 6 - .label _38 = $23 - .label _39 = $21 - //SEG66 [40] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label _0 = $22 + .label _1 = $22 + .label _2 = $22 + .label _4 = $a + .label _5 = $a + .label _7 = 8 + .label _8 = 8 + .label _10 = $28 + .label _11 = $28 + .label _12 = $28 + .label _14 = $2a + .label _15 = $2a + .label _16 = $2a + .label _25 = $2d + .label center_x = $20 + .label center_y = $21 + .label i = 7 + .label screenPtr = $26 + .label spriteData = $a + .label chargenData = 8 + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c + .label freeIdx = 7 + .label _48 = $24 + .label _49 = $22 + //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG67 [40] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff jmp b1 - //SEG68 startProcessing::@1 + //SEG72 startProcessing::@1 b1: - //SEG69 [41] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG70 [41] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG71 [41] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG72 [41] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG73 startProcessing::@2 + //SEG77 startProcessing::@2 b2: - //SEG74 [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - asl - asl - //SEG75 [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG76 [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc i + //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(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 - //SEG77 [45] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG78 [45] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG79 startProcessing::@4 + //SEG85 startProcessing::@4 b4: - //SEG80 [46] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG81 startProcessing::@5 + //SEG87 startProcessing::@5 b5: - //SEG82 [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG83 [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _38 + sta _48 lda _0+1 rol - sta _38+1 - asl _38 - rol _38+1 - //SEG84 [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _39 + sta _48+1 + asl _48 + rol _48+1 + //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _49 clc - adc _38 - sta _39 - lda _39+1 - adc _38+1 - sta _39+1 - //SEG85 [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _48 + sta _49 + lda _49+1 + adc _48+1 + sta _49+1 + //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG86 [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda _2 adc #SCREEN sta _2+1 - //SEG87 [52] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -6497,12 +6832,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG88 [53] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG89 [54] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 + //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 asl _5 rol _5+1 asl _5 @@ -6515,7 +6850,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG90 [55] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG91 [56] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 ldy center_x lda (_2),y - //SEG92 [57] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta _7 lda #0 sta _7+1 - //SEG93 [58] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG99 [64] (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 - //SEG94 [59] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG95 asm { sei } + //SEG101 asm { sei } sei - //SEG96 [61] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG97 [62] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG98 [62] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG99 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG100 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG101 [62] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG102 [62] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG103 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG104 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG105 startProcessing::@6 + //SEG111 startProcessing::@6 b6: - //SEG106 [63] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG107 [64] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -6578,37 +6913,37 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG108 [65] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG109 [66] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG110 [67] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG116 [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b6 jmp b7 - //SEG111 startProcessing::@7 + //SEG117 startProcessing::@7 b7: - //SEG112 [68] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG113 asm { cli } + //SEG119 asm { cli } cli - //SEG114 [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG115 [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG121 [77] (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 - //SEG116 [72] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc _12 @@ -6616,7 +6951,7 @@ startProcessing: { bcc !+ inc _12+1 !: - //SEG117 [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -6625,19 +6960,19 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG118 [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG119 [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG125 [81] (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 - //SEG120 [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc _16 @@ -6645,7 +6980,7 @@ startProcessing: { bcc !+ inc _16+1 !: - //SEG121 [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -6654,141 +6989,172 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG122 [78] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG128 [84] (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 - //SEG123 [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsaa=vbsz1_rol_1 lda freeIdx asl + //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsaa=vbsaa_minus_vbsc1 + sec + sbc #8 + //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsaa=_neg_vbsaa + eor #$ff + clc + adc #1 + //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsaa + sta _25 + ora #$7f + bmi !+ + lda #0 + !: + sta _25+1 + //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda freeIdx + asl + //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc freeIdx + //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG124 [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG125 [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG126 [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (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 - //SEG127 [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _25 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x + lda _25+1 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x + //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuxx=vwuc2 + lda #<-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x + lda #>-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x + //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG128 [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG129 [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG130 [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (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 - //SEG131 startProcessing::@return + //SEG145 startProcessing::@return breturn: - //SEG132 [87] return + //SEG146 [101] return rts - //SEG133 startProcessing::@8 + //SEG147 startProcessing::@8 b8: - //SEG134 [88] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG135 [40] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG136 [40] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG137 startProcessing::@3 + //SEG151 startProcessing::@3 b3: - //SEG138 [89] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG139 [90] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG153 [104] 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 - //SEG140 startProcessing::@9 + //SEG154 startProcessing::@9 b9: - //SEG141 [91] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4_from_b9 } -//SEG142 getCharToProcess +//SEG156 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 = $2c - .label _10 = $2c - .label _11 = $2c - .label return_dist = $13 - .label x = $e - .label dist = $13 - .label screen_line = $b - .label y = $d - .label return_x = $11 - .label return_y = $12 - .label closest_dist = $f - .label closest_x = $11 - .label closest_y = $12 - .label _15 = $2e - .label _16 = $2c - //SEG143 [93] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + .label _9 = $2f + .label _10 = $2f + .label _11 = $2f + .label return_dist = $14 + .label x = $f + .label dist = $14 + .label screen_line = $c + .label y = $e + .label return_x = $12 + .label return_y = $13 + .label closest_dist = $10 + .label closest_x = $12 + .label closest_y = $13 + .label _15 = $31 + .label _16 = $2f + //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG144 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG145 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG146 [93] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG160 [107] 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 - //SEG147 [93] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG148 [93] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG162 [107] 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 - //SEG149 getCharToProcess::@1 + //SEG163 getCharToProcess::@1 b1: - //SEG150 [94] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG151 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG152 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG153 [94] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG154 [94] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG155 getCharToProcess::@2 + //SEG169 getCharToProcess::@2 b2: - //SEG156 [95] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG170 [109] 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 - //SEG157 getCharToProcess::@4 + //SEG171 getCharToProcess::@4 b4: - //SEG158 [96] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda x asl tax - //SEG159 [97] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG160 [98] (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 + //SEG174 [112] (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 @@ -6797,7 +7163,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG161 [99] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG175 [113] 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 !+ @@ -6807,34 +7173,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG162 getCharToProcess::@5 + //SEG176 getCharToProcess::@5 b5: - //SEG163 [100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG164 [101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG165 [102] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG179 [116] 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: - //SEG166 [102] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG167 [102] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG168 [102] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG182 [116] 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 - //SEG169 getCharToProcess::@3 + //SEG183 getCharToProcess::@3 b3: - //SEG170 [103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG171 [104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG172 getCharToProcess::@6 + //SEG186 getCharToProcess::@6 b6: - //SEG173 [105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG187 [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -6842,16 +7208,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG174 [106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG175 [107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG176 getCharToProcess::@7 + //SEG190 getCharToProcess::@7 b7: - //SEG177 [108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG191 [122] 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 - //SEG184 [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG198 [128] *((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 - //SEG185 getCharToProcess::@return + //SEG199 getCharToProcess::@return breturn: - //SEG186 [115] return + //SEG200 [129] return rts - //SEG187 getCharToProcess::@9 + //SEG201 getCharToProcess::@9 b9: - //SEG188 [116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG202 [130] (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 - //SEG189 [93] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG190 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG191 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG192 [93] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG193 [93] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG194 [93] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG195 getCharToProcess::@10 + //SEG209 getCharToProcess::@10 b10: - //SEG196 [117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG210 [131] (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 - //SEG197 [94] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG198 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG199 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG200 [94] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG201 [94] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG202 getCharToProcess::@12 + //SEG216 getCharToProcess::@12 b12: - //SEG203 [118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG217 [132] (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 - //SEG204 getCharToProcess::@11 + //SEG218 getCharToProcess::@11 b11: - //SEG205 [119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG219 [133] (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 } -//SEG206 setupRasterIrq +//SEG220 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG207 asm { sei } + //SEG221 asm { sei } sei - //SEG208 [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG222 [135] *((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 - //SEG209 [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG210 [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG224 [137] *((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 - //SEG211 setupRasterIrq::@1 + //SEG225 setupRasterIrq::@1 b1: - //SEG212 [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG226 [138] *((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 - //SEG213 setupRasterIrq::@2 + //SEG227 setupRasterIrq::@2 b2: - //SEG214 [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG215 [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG216 [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG217 asm { cli } + //SEG231 asm { cli } cli jmp breturn - //SEG218 setupRasterIrq::@return + //SEG232 setupRasterIrq::@return breturn: - //SEG219 [129] return + //SEG233 [143] return rts } -//SEG220 initSprites +//SEG234 initSprites // Initialize sprites initSprites: { - .label sp = $15 - //SEG221 [131] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + .label sp = $16 + //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG222 [131] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG236 [145] 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 - //SEG223 [131] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG224 [131] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG225 initSprites::@1 + //SEG239 initSprites::@1 b1: - //SEG226 [132] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG227 [133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG228 [134] 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 + //SEG242 [148] 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 @@ -7040,234 +7406,234 @@ initSprites: { cmp #initSprites::@2] + //SEG243 [149] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG230 [135] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 // Initialize sprite registers - //SEG231 [135] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG232 [135] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG233 initSprites::@2 + //SEG247 initSprites::@2 b2: - //SEG234 [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG248 [150] *((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 - //SEG235 [137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG236 [138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG250 [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG237 initSprites::@3 + //SEG251 initSprites::@3 b3: - //SEG238 [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG239 [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG240 [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG241 initSprites::@return + //SEG255 initSprites::@return breturn: - //SEG242 [142] return + //SEG256 [156] return rts } -//SEG243 initSquareTables +//SEG257 initSquareTables // initialize SQUARES table initSquareTables: { - .label _6 = $19 - .label _14 = $19 - .label x = $17 - .label y = $18 - //SEG244 [144] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + .label _6 = $1a + .label _14 = $1a + .label x = $18 + .label y = $19 + //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG245 [144] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG246 [144] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG247 [144] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG248 initSquareTables::@1 + //SEG262 initSquareTables::@1 b1: - //SEG249 [145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG250 initSquareTables::@3 + //SEG264 initSquareTables::@3 b3: - //SEG251 [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 lda x sec sbc #$14 - //SEG252 [147] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG253 [147] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG254 initSquareTables::@4 + //SEG268 initSquareTables::@4 b4: - //SEG255 [148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG256 [149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG257 [150] call mul8u - //SEG258 [173] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG271 [164] call mul8u + //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG259 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG260 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG274 [187] 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 - //SEG261 [151] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG275 [165] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG262 initSquareTables::@9 + //SEG276 initSquareTables::@9 b9: - //SEG263 [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG264 [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG265 [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG279 [168] *((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 - //SEG266 [155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG267 [156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG268 [157] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG269 [157] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG270 [157] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG271 [157] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG272 initSquareTables::@5 + //SEG286 initSquareTables::@5 b5: - //SEG273 [158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG274 initSquareTables::@7 + //SEG288 initSquareTables::@7 b7: - //SEG275 [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 lda y sec sbc #$c - //SEG276 [160] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG277 [160] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG278 initSquareTables::@8 + //SEG292 initSquareTables::@8 b8: - //SEG279 [161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG280 [162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG281 [163] call mul8u - //SEG282 [173] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG295 [177] call mul8u + //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG283 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG284 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG298 [187] 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 - //SEG285 [164] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG299 [178] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b10 - //SEG286 initSquareTables::@10 + //SEG300 initSquareTables::@10 b10: - //SEG287 [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG288 [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG289 [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG303 [181] *((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 - //SEG290 [168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG291 [169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG305 [183] 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 - //SEG292 initSquareTables::@return + //SEG306 initSquareTables::@return breturn: - //SEG293 [170] return + //SEG307 [184] return rts - //SEG294 initSquareTables::@6 + //SEG308 initSquareTables::@6 b6: - //SEG295 [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8_from_b6 - //SEG296 initSquareTables::@2 + //SEG310 initSquareTables::@2 b2: - //SEG297 [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4_from_b2 } -//SEG298 mul8u +//SEG312 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 = $1b - .label res = $19 - .label return = $19 - //SEG299 [174] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label mb = $1c + .label res = $1a + .label return = $1a + //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG300 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG301 [174] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG302 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG303 mul8u::@1 + //SEG317 mul8u::@1 b1: - //SEG304 [175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG305 mul8u::@return + //SEG319 mul8u::@return breturn: - //SEG306 [176] return + //SEG320 [190] return rts - //SEG307 mul8u::@2 + //SEG321 mul8u::@2 b2: - //SEG308 [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG309 [178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG310 mul8u::@4 + //SEG324 mul8u::@4 b4: - //SEG311 [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7275,89 +7641,89 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG312 [180] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG313 [180] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG314 mul8u::@3 + //SEG328 mul8u::@3 b3: - //SEG315 [181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG316 [182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG317 [174] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG318 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG319 [174] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG320 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG321 irqBottom +//SEG335 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG322 entry interrupt(HARDWARE_ALL) + //SEG336 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG323 [184] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG324 [184] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG325 [184] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG326 [184] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG327 irqBottom::@1 + //SEG341 irqBottom::@1 b1: - //SEG328 [185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG329 [186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 jmp b2 - //SEG330 irqBottom::@2 + //SEG344 irqBottom::@2 b2: - //SEG331 [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG332 [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG333 [189] call processChars - //SEG334 [196] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [203] call processChars + //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG335 irqBottom::@3 + //SEG349 irqBottom::@3 b3: - //SEG336 [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG337 [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG338 [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [206] *((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 - //SEG339 [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG340 [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG341 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG342 [195] return - exit interrupt(HARDWARE_ALL) + //SEG356 [209] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7366,47 +7732,51 @@ irqBottom: { ldy #00 rti } -//SEG343 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _17 = $35 - .label processing = $30 - .label bitmask = $32 - .label i = $1d - .label xpos = $33 - .label numActive = $1e - //SEG344 [197] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _17 = $38 + .label processing = $33 + .label bitmask = $35 + .label i = $1e + .label xpos = $36 + .label numActive = $1f + //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG345 [197] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG346 [197] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG347 [197] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG348 [197] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG349 [197] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG350 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG351 [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - asl - asl - //SEG352 [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG353 [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa + //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc i + //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG354 [201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG370 [217] (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 @@ -7419,23 +7789,23 @@ processChars: { bne !- !e: sta bitmask - //SEG355 [202] 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 + //SEG371 [218] 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 - //SEG356 processChars::@10 + //SEG372 processChars::@10 b10: - //SEG357 [203] 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 [219] 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 - //SEG358 processChars::@11 + //SEG374 processChars::@11 b11: - //SEG359 [204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG375 [220] *(*((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 @@ -7447,12 +7817,12 @@ processChars: { txa !: sta $ffff - //SEG360 [205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [221] *((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 - //SEG361 [206] *((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 + //SEG377 [222] *((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 @@ -7462,15 +7832,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG362 [207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [223] *((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 - //SEG363 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG364 [208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -7485,33 +7855,33 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG365 [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG366 [210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 bne b4 jmp b8 - //SEG367 processChars::@8 + //SEG383 processChars::@8 b8: - //SEG368 [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG369 [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b5 - //SEG370 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG371 [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG372 [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG373 [215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG374 [216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [232] (word~) processChars::$17 ← *((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 _17 @@ -7526,11 +7896,11 @@ processChars: { ror _17 lsr _17+1 ror _17 - //SEG375 [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 + //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 lda _17 - //SEG376 [218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG377 [219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [235] 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 @@ -7543,9 +7913,9 @@ processChars: { bcc b6 !: jmp b13 - //SEG378 processChars::@13 + //SEG394 processChars::@13 b13: - //SEG379 [220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG395 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -7558,156 +7928,162 @@ processChars: { bcc b6 !: jmp b9 - //SEG380 processChars::@9 + //SEG396 processChars::@9 b9: - //SEG381 [221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10 -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_minus_vwuc2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + //SEG397 [237] *((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 lda (processing),y - sec - sbc #<$10 - sta (processing),y - iny - lda (processing),y - sbc #>$10 - sta (processing),y - //SEG382 [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 -- _deref_pwuz1=_deref_pwuz1_minus_vwuc1 ldy #0 - lda (processing),y - sec - sbc #<$10 + adc (processing),y sta (processing),y + ldy $ff iny lda (processing),y - sbc #>$10 + ldy #1 + adc (processing),y + sta (processing),y + //SEG398 [238] *((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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + adc (processing),y + sta (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1 + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 + adc (processing),y sta (processing),y jmp b7 - //SEG383 processChars::@7 + //SEG399 processChars::@7 b7: - //SEG384 [223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG385 [224] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] b2_from_b1: b2_from_b7: - //SEG386 [224] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG387 processChars::@2 + //SEG403 processChars::@2 b2: - //SEG388 [225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG405 [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 jmp b12 - //SEG390 processChars::@12 + //SEG406 processChars::@12 b12: - //SEG391 [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 + //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 lax numActive axs #-['0'] - //SEG392 [228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx + //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx stx SCREEN+$3e7 jmp breturn - //SEG393 processChars::@return + //SEG409 processChars::@return breturn: - //SEG394 [229] return + //SEG410 [245] return rts - //SEG395 processChars::@6 + //SEG411 processChars::@6 b6: - //SEG396 [230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG412 [246] *((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 - //SEG397 [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG398 [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE jmp b7 - //SEG399 processChars::@4 + //SEG415 processChars::@4 b4: - //SEG400 [233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG416 [249] *((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 } -//SEG401 irqTop +//SEG417 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG402 entry interrupt(HARDWARE_ALL) + //SEG418 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG403 [235] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG404 [235] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG405 [235] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG406 [235] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG407 irqTop::@1 + //SEG423 irqTop::@1 b1: - //SEG408 [236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG409 [237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 jmp b2 - //SEG410 irqTop::@2 + //SEG426 irqTop::@2 b2: - //SEG411 [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG412 [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG413 [240] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] b3_from_b2: - //SEG414 [240] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG415 [240] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] b3_from_b3: - //SEG416 [240] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy jmp b3 - //SEG417 irqTop::@3 + //SEG433 irqTop::@3 b3: - //SEG418 [241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG419 [242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3_from_b3 jmp b4 - //SEG420 irqTop::@4 + //SEG436 irqTop::@4 b4: - //SEG421 [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG422 [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG423 [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG439 [261] *((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 [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG441 [263] *((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 + //SEG442 irqTop::@return breturn: - //SEG427 [248] return - exit interrupt(HARDWARE_ALL) + //SEG443 [264] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7723,7 +8099,7 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill 9*NUM_PROCESSING, 0 + PROCESSING: .fill $d*NUM_PROCESSING, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b1 @@ -7800,6 +8176,10 @@ Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 Removing instruction lda #>0 Removing instruction ldy #0 Removing instruction lda #0 @@ -7959,15 +8339,15 @@ Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [389] bne b2 to beq -Fixing long branch [909] bne b1 to beq -Fixing long branch [193] bne b3 to beq -Fixing long branch [199] beq b8 to bne -Fixing long branch [437] beq b11 to bne -Fixing long branch [458] beq b12 to bne -Fixing long branch [462] bcc b12 to bcs -Fixing long branch [796] beq b2 to bne -Fixing long branch [848] bne b4 to beq +Fixing long branch [425] bne b2 to beq +Fixing long branch [953] bne b1 to beq +Fixing long branch [206] bne b3 to beq +Fixing long branch [212] 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 [834] beq b2 to bne +Fixing long branch [886] bne b4 to beq FINAL SYMBOL TABLE (label) @1 @@ -8005,10 +8385,12 @@ 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_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 4 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 5 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) 7 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) 6 +(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_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 (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) } @@ -8029,6 +8411,8 @@ FINAL SYMBOL TABLE (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr (byte) ProcessingSprite::status +(word) ProcessingSprite::vx +(word) ProcessingSprite::vy (word) ProcessingSprite::x (word) ProcessingSprite::y (byte*) RASTER @@ -8080,13 +8464,13 @@ FINAL SYMBOL TABLE (word) YPOS_UPMOST (const word) YPOS_UPMOST#0 YPOS_UPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:44 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:44 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 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:46 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:44 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:44 3.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 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -8102,41 +8486,41 @@ FINAL SYMBOL TABLE (label) getCharToProcess::@return (struct ProcessingChar) getCharToProcess::closest (word) getCharToProcess::closest_dist -(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:15 202.0 -(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:15 2002.0 -(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:15 684.1666666666667 -(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:15 202.0 +(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:16 202.0 +(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:16 2002.0 +(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:16 684.1666666666667 +(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:16 202.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:17 388.0 -(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:17 202.0 +(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:18 388.0 +(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:18 202.0 (byte) getCharToProcess::closest_y -(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:18 388.0 -(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:18 202.0 +(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:19 388.0 +(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:19 202.0 (word) getCharToProcess::dist -(word) getCharToProcess::dist#0 dist zp ZP_WORD:19 750.75 +(word) getCharToProcess::dist#0 dist zp ZP_WORD:20 750.75 (struct ProcessingChar) getCharToProcess::return (word) getCharToProcess::return_dist -(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:19 7.333333333333333 -(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:19 242.23529411764704 -(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:19 2002.0 -(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:19 2002.0 +(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:20 7.333333333333333 +(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:20 242.23529411764704 +(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:20 2002.0 +(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:20 2002.0 (byte) getCharToProcess::return_x (byte) getCharToProcess::return_x#0 reg byte x 7.333333333333333 -(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:17 242.23529411764704 -(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:17 1001.0 +(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:18 242.23529411764704 +(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:18 1001.0 (byte) getCharToProcess::return_y (byte) getCharToProcess::return_y#0 reg byte y 7.333333333333333 -(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:18 228.66666666666669 -(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:18 2002.0 +(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:19 228.66666666666669 +(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:19 2002.0 (byte*) getCharToProcess::screen_line -(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:11 50.5 -(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:11 80.2 +(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:12 50.5 +(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:12 80.2 (byte) getCharToProcess::x -(byte) getCharToProcess::x#1 x zp ZP_BYTE:14 1001.0 -(byte) getCharToProcess::x#2 x zp ZP_BYTE:14 455.0 +(byte) getCharToProcess::x#1 x zp ZP_BYTE:15 1001.0 +(byte) getCharToProcess::x#2 x zp ZP_BYTE:15 455.0 (byte) getCharToProcess::y -(byte) getCharToProcess::y#1 y zp ZP_BYTE:13 101.0 -(byte) getCharToProcess::y#7 y zp ZP_BYTE:13 137.75 +(byte) getCharToProcess::y#1 y zp ZP_BYTE:14 101.0 +(byte) getCharToProcess::y#7 y zp ZP_BYTE:14 137.75 (void()) initSprites() (label) initSprites::@1 (label) initSprites::@2 @@ -8146,17 +8530,17 @@ FINAL SYMBOL TABLE (byte) initSprites::i#1 reg byte x 16.5 (byte) initSprites::i#2 reg byte x 16.5 (byte*) initSprites::sp -(byte*) initSprites::sp#1 sp zp ZP_WORD:21 16.5 -(byte*) initSprites::sp#2 sp zp ZP_WORD:21 16.5 +(byte*) initSprites::sp#1 sp zp ZP_WORD:22 16.5 +(byte*) initSprites::sp#2 sp zp ZP_WORD:22 16.5 (void()) initSquareTables() (byte~) initSquareTables::$10 reg byte a 22.0 (byte~) initSquareTables::$12 reg byte a 22.0 -(word~) initSquareTables::$14 $14 zp ZP_WORD:25 11.0 +(word~) initSquareTables::$14 $14 zp ZP_WORD:26 11.0 (byte~) initSquareTables::$16 reg byte a 22.0 (byte~) initSquareTables::$17 reg byte a 22.0 (byte~) initSquareTables::$2 reg byte a 22.0 (byte~) initSquareTables::$4 reg byte a 22.0 -(word~) initSquareTables::$6 $6 zp ZP_WORD:25 11.0 +(word~) initSquareTables::$6 $6 zp ZP_WORD:26 11.0 (label) initSquareTables::@1 (label) initSquareTables::@10 (label) initSquareTables::@2 @@ -8169,13 +8553,13 @@ FINAL SYMBOL TABLE (label) initSquareTables::@9 (label) initSquareTables::@return (byte) initSquareTables::x -(byte) initSquareTables::x#1 x zp ZP_BYTE:23 16.5 -(byte) initSquareTables::x#2 x zp ZP_BYTE:23 5.5 +(byte) initSquareTables::x#1 x zp ZP_BYTE:24 16.5 +(byte) initSquareTables::x#2 x zp ZP_BYTE:24 5.5 (byte) initSquareTables::x_dist (byte) initSquareTables::x_dist#0 reg byte a 22.0 (byte) initSquareTables::y -(byte) initSquareTables::y#1 y zp ZP_BYTE:24 16.5 -(byte) initSquareTables::y#2 y zp ZP_BYTE:24 5.5 +(byte) initSquareTables::y#1 y zp ZP_BYTE:25 16.5 +(byte) initSquareTables::y#2 y zp ZP_BYTE:25 5.5 (byte) initSquareTables::y_dist (byte) initSquareTables::y_dist#0 reg byte a 22.0 interrupt(HARDWARE_ALL)(void()) irqBottom() @@ -8199,8 +8583,10 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(byte~) main::$15 reg byte x 12.833333333333334 -(byte) main::$22 reg byte a 22.0 +(byte~) main::$15 reg byte x 12.375 +(byte) main::$24 reg byte a 22.0 +(byte) main::$25 reg byte a 22.0 +(byte) main::$26 reg byte a 22.0 (struct ProcessingChar~) main::$8 (label) main::@1 (label) main::@2 @@ -8212,7 +8598,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@8 (struct ProcessingChar) main::center (word) main::center_dist -(word) main::center_dist#0 center_dist zp ZP_WORD:19 22.0 +(word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0 (byte) main::center_x (byte) main::center_x#0 reg byte x 5.5 (byte) main::center_y @@ -8221,8 +8607,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::dst#1 dst zp ZP_WORD:4 11.0 (byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.888888888888889 +(byte) main::i#1 i zp ZP_BYTE:6 16.5 +(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231 (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 @@ -8243,27 +8629,29 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) mul8u::b#0 reg byte a 22.0 (byte) mul8u::b#1 reg byte a 22.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp ZP_WORD:27 24.0 -(word) mul8u::mb#1 mb zp ZP_WORD:27 202.0 -(word) mul8u::mb#2 mb zp ZP_WORD:27 43.57142857142858 +(word) mul8u::mb#0 mb zp ZP_WORD:28 24.0 +(word) mul8u::mb#1 mb zp ZP_WORD:28 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:28 43.57142857142858 (word) mul8u::res -(word) mul8u::res#1 res zp ZP_WORD:25 202.0 -(word) mul8u::res#2 res zp ZP_WORD:25 46.42857142857143 -(word) mul8u::res#6 res zp ZP_WORD:25 101.0 +(word) mul8u::res#1 res zp ZP_WORD:26 202.0 +(word) mul8u::res#2 res zp ZP_WORD:26 46.42857142857143 +(word) mul8u::res#6 res zp ZP_WORD:26 101.0 (word) mul8u::return -(word) mul8u::return#2 return zp ZP_WORD:25 22.0 -(word) mul8u::return#3 return zp ZP_WORD:25 22.0 +(word) mul8u::return#2 return zp ZP_WORD:26 22.0 +(word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() (byte~) processChars::$1 reg byte x 4.0 (byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 (byte~) processChars::$15 reg byte a 22.0 (byte~) processChars::$16 reg byte x 6.6000000000000005 -(word~) processChars::$17 $17 zp ZP_WORD:53 11.0 +(word~) processChars::$17 $17 zp ZP_WORD:56 11.0 (byte~) processChars::$18 reg byte a 22.0 (byte~) processChars::$22 reg byte a 22.0 (byte~) processChars::$24 reg byte a 22.0 -(byte) processChars::$42 reg byte a 22.0 +(byte) processChars::$44 reg byte a 22.0 +(byte) processChars::$45 reg byte a 22.0 +(byte) processChars::$46 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -8279,18 +8667,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 2.5 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.5 (byte) processChars::i -(byte) processChars::i#1 i zp ZP_BYTE:29 16.5 -(byte) processChars::i#10 i zp ZP_BYTE:29 1.71875 +(byte) processChars::i#1 i zp ZP_BYTE:30 16.5 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.9411764705882353 (byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp ZP_BYTE:30 22.0 -(byte) processChars::numActive#10 numActive zp ZP_BYTE:30 1.0999999999999999 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:30 11.666666666666666 +(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 +(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 1.03125 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.4782608695652174 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.4782608695652174 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:51 3.142857142857143 +(word) processChars::xpos#0 xpos zp ZP_WORD:54 3.142857142857143 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -8299,25 +8687,33 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(word~) startProcessing::$0 $0 zp ZP_WORD:33 3.0 -(word~) startProcessing::$1 $1 zp ZP_WORD:33 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:39 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:39 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:39 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:41 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:41 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:41 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:33 1.2000000000000002 -(byte~) startProcessing::$27 reg byte a 2002.0 -(byte~) startProcessing::$28 reg byte x 2.333333333333333 -(byte) startProcessing::$36 reg byte a 2002.0 -(word) startProcessing::$38 $38 zp ZP_WORD:35 4.0 -(word) startProcessing::$39 $39 zp ZP_WORD:33 4.0 -(word~) startProcessing::$4 $4 zp ZP_WORD:9 4.0 -(byte) startProcessing::$41 reg byte a 4.0 -(word~) startProcessing::$5 $5 zp ZP_WORD:9 4.0 -(word~) startProcessing::$7 $7 zp ZP_WORD:7 4.0 -(word~) startProcessing::$8 $8 zp ZP_WORD:7 4.0 +(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 +(signed byte~) startProcessing::$22 reg byte a 4.0 +(signed byte~) startProcessing::$23 reg byte a 4.0 +(signed byte~) startProcessing::$24 reg byte a 2.0 +(word~) startProcessing::$25 $25 zp ZP_WORD:45 0.5714285714285714 +(byte~) startProcessing::$33 reg byte a 2002.0 +(byte~) startProcessing::$34 reg byte x 2.25 +(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 +(byte) startProcessing::$44 reg byte a 2002.0 +(byte) startProcessing::$45 reg byte a 2002.0 +(byte) startProcessing::$46 reg byte a 2002.0 +(word) startProcessing::$48 $48 zp ZP_WORD:36 4.0 +(word) startProcessing::$49 $49 zp ZP_WORD:34 4.0 +(word~) startProcessing::$5 $5 zp ZP_WORD:10 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::$7 $7 zp ZP_WORD:8 4.0 +(word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -8331,114 +8727,126 @@ 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:31 0.40540540540540543 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:32 0.275 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData -(byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:7 1.3333333333333333 -(byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:7 67.33333333333333 -(byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:7 101.66666666666666 +(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::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:6 34.52631578947369 -(byte) startProcessing::freeIdx#6 reg byte x 28.857142857142858 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 28.56521739130435 +(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443 (byte~) startProcessing::freeIdx#7 reg byte x 202.0 -(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:6 202.0 +(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0 (byte) startProcessing::i -(byte) startProcessing::i#1 i zp ZP_BYTE:6 1501.5 -(byte) startProcessing::i#2 i zp ZP_BYTE:6 1251.25 +(byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5 +(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001 (byte) startProcessing::i1 (byte) startProcessing::i1#1 reg byte x 151.5 (byte) startProcessing::i1#2 reg byte x 50.5 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:37 0.11764705882352941 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.09523809523809523 (byte*) startProcessing::spriteData -(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:9 0.5714285714285714 -(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:9 50.5 -(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:9 152.5 +(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:43 0.6666666666666666 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.2857142857142857 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.5 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.2857142857142857 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.8 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.36363636363636365 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] -reg byte y [ main::i#2 main::i#1 ] +zp ZP_BYTE:6 [ main::i#2 main::i#1 ] reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -zp ZP_BYTE:6 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:7 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] -zp ZP_WORD:9 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] +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 ] reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] -zp ZP_WORD:11 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] -zp ZP_BYTE:13 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -zp ZP_BYTE:14 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -zp ZP_WORD:15 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] -zp ZP_BYTE:17 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] -zp ZP_BYTE:18 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -zp ZP_WORD:19 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] -zp ZP_WORD:21 [ initSprites::sp#2 initSprites::sp#1 ] +zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] +zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -zp ZP_BYTE:23 [ initSquareTables::x#2 initSquareTables::x#1 ] +zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ] reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] -zp ZP_BYTE:24 [ initSquareTables::y#2 initSquareTables::y#1 ] +zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -zp ZP_BYTE:29 [ processChars::i#10 processChars::i#1 ] -zp ZP_BYTE:30 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -reg byte a [ main::$22 ] +reg byte a [ main::$24 ] +reg byte a [ main::$25 ] +reg byte a [ main::$26 ] reg byte x [ main::$15 ] reg byte x [ getCharToProcess::return_x#0 ] reg byte y [ getCharToProcess::return_y#0 ] reg byte x [ main::center_x#0 ] reg byte y [ main::center_y#0 ] -zp ZP_BYTE:31 [ startProcessing::center_x#0 ] -zp ZP_BYTE:32 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$36 ] -reg byte a [ startProcessing::$27 ] -zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$39 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:35 [ startProcessing::$38 ] -zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] +zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +reg byte a [ startProcessing::$44 ] +reg byte a [ startProcessing::$45 ] +reg byte a [ startProcessing::$46 ] +reg byte a [ startProcessing::$33 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] +zp ZP_WORD:36 [ startProcessing::$48 ] +zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:39 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:41 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:43 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$41 ] -reg byte x [ startProcessing::$28 ] +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::$22 ] +reg byte a [ startProcessing::$23 ] +reg byte a [ startProcessing::$24 ] +zp ZP_WORD:45 [ startProcessing::$25 ] +reg byte a [ startProcessing::$51 ] +reg byte a [ startProcessing::$52 ] +reg byte a [ startProcessing::$53 ] +reg byte x [ startProcessing::$34 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:46 [ getCharToProcess::$15 ] +zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:49 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$42 ] +reg byte a [ processChars::$44 ] +reg byte a [ processChars::$45 ] +reg byte a [ processChars::$46 ] reg byte a [ processChars::$24 ] -zp ZP_WORD:48 [ processChars::processing#0 ] -zp ZP_BYTE:50 [ processChars::bitmask#0 ] -zp ZP_WORD:51 [ processChars::xpos#0 ] +zp ZP_WORD:51 [ processChars::processing#0 ] +zp ZP_BYTE:53 [ processChars::bitmask#0 ] +zp ZP_WORD:54 [ processChars::xpos#0 ] reg byte a [ processChars::$12 ] reg byte a [ processChars::$13 ] reg byte x [ processChars::$16 ] reg byte a [ processChars::$15 ] -zp ZP_WORD:53 [ processChars::$17 ] +zp ZP_WORD:56 [ processChars::$17 ] reg byte a [ processChars::$18 ] reg byte x [ processChars::$1 ] reg byte a [ processChars::$22 ] FINAL ASSEMBLER -Score: 235244 +Score: 240956 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in letters @@ -8448,10 +8856,12 @@ Score: 235244 .pc = $80d "Program" //SEG2 Global Constants & labels .const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2 - .const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 4 - .const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 5 - .const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 6 - .const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 7 + .const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4 + .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 // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -8525,9 +8935,10 @@ Score: 235244 main: { .label src = 2 .label dst = 4 - .label center_dist = $13 + .label i = 6 + .label center_dist = $14 //SEG11 [5] call initSquareTables - //SEG12 [143] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] jsr initSquareTables //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 [6] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -8568,192 +8979,208 @@ main: { cmp #main::@2] - //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 - ldy #0 + //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta i // Init processing array //SEG26 [11] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG27 [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy //SEG28 main::@2 b2: - //SEG29 [12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3 -- vbuaa=vbuyy_rol_3 - tya + //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda i asl - asl - asl - //SEG30 [13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuyy - sty $ff + //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc - adc $ff + adc i + //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + clc + adc i tax - //SEG31 [14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x sta PROCESSING+1,x - //SEG32 [15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG33 [16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x + //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x + //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG34 [17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG35 [18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG36 [19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG37 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG38 [21] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 - cpy #NUM_PROCESSING-1+1 + //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG42 [25] 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 - //SEG39 [22] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG40 main::@3 - //SEG41 [23] call initSprites - //SEG42 [130] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG44 main::@3 + //SEG45 [27] call initSprites + //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] jsr initSprites - //SEG43 [24] phi from main::@3 to main::@7 [phi:main::@3->main::@7] - //SEG44 main::@7 - //SEG45 [25] call setupRasterIrq + //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] + //SEG48 main::@7 + //SEG49 [29] call setupRasterIrq jsr setupRasterIrq - //SEG46 [26] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] b3: // Main loop - //SEG47 main::@4 - //SEG48 [27] call getCharToProcess - //SEG49 [92] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG51 main::@4 + //SEG52 [31] call getCharToProcess + //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] jsr getCharToProcess - //SEG50 [28] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG51 [29] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG52 [30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 - //SEG53 main::@8 - //SEG54 [31] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG55 [32] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG56 [33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG57 [34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG56 [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG57 main::@8 + //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG60 [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG61 [38] 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] + //SEG67 [42] call startProcessing + //SEG68 [43] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] jsr startProcessing jmp b3 } -//SEG65 startProcessing +//SEG69 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($1f) center_x, byte zeropage($20) center_y) +// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) startProcessing: { - .label _0 = $21 - .label _1 = $21 - .label _2 = $21 - .label _4 = 9 - .label _5 = 9 - .label _7 = 7 - .label _8 = 7 - .label _10 = $27 - .label _11 = $27 - .label _12 = $27 - .label _14 = $29 - .label _15 = $29 - .label _16 = $29 - .label center_x = $1f - .label center_y = $20 - .label i = 6 - .label screenPtr = $25 - .label spriteData = 9 - .label chargenData = 7 - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b - .label freeIdx = 6 - .label _38 = $23 - .label _39 = $21 - //SEG66 [40] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] - //SEG67 [40] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + .label _0 = $22 + .label _1 = $22 + .label _2 = $22 + .label _4 = $a + .label _5 = $a + .label _7 = 8 + .label _8 = 8 + .label _10 = $28 + .label _11 = $28 + .label _12 = $28 + .label _14 = $2a + .label _15 = $2a + .label _16 = $2a + .label _25 = $2d + .label center_x = $20 + .label center_y = $21 + .label i = 7 + .label screenPtr = $26 + .label spriteData = $a + .label chargenData = 8 + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c + .label freeIdx = 7 + .label _48 = $24 + .label _49 = $22 + //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff - //SEG68 startProcessing::@1 + //SEG72 startProcessing::@1 b1: - //SEG69 [41] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] - //SEG70 [41] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG71 [41] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] - //SEG72 [41] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy - //SEG73 startProcessing::@2 + //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG77 startProcessing::@2 b2: - //SEG74 [42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - asl - asl - //SEG75 [43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG76 [44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc i + //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(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: - //SEG77 [45] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] - //SEG78 [45] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy - //SEG79 startProcessing::@4 + //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG85 startProcessing::@4 b4: - //SEG80 [46] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx bne !b8+ jmp b8 !b8: - //SEG81 startProcessing::@5 - //SEG82 [47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG87 startProcessing::@5 + //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG83 [48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _38 + sta _48 lda _0+1 rol - sta _38+1 - asl _38 - rol _38+1 - //SEG84 [49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _39 + sta _48+1 + asl _48 + rol _48+1 + //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _49 clc - adc _38 - sta _39 - lda _39+1 - adc _38+1 - sta _39+1 - //SEG85 [50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _48 + sta _49 + lda _49+1 + adc _48+1 + sta _49+1 + //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG86 [51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda _2 adc #SCREEN sta _2+1 - //SEG87 [52] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -8769,12 +9196,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG88 [53] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG89 [54] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 + //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 asl _5 rol _5+1 asl _5 @@ -8787,7 +9214,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG90 [55] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG91 [56] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 ldy center_x lda (_2),y - //SEG92 [57] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta _7 lda #0 sta _7+1 - //SEG93 [58] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG99 [64] (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 - //SEG94 [59] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG95 asm { sei } + //SEG101 asm { sei } sei - //SEG96 [61] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG97 [62] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] - //SEG98 [62] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG99 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG100 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy - //SEG101 [62] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] - //SEG102 [62] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG103 [62] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG104 [62] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy - //SEG105 startProcessing::@6 + //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG111 startProcessing::@6 b6: - //SEG106 [63] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y sta (spriteData),y - //SEG107 [64] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -8845,35 +9272,35 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG108 [65] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG109 [66] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG110 [67] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG116 [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6 - //SEG111 startProcessing::@7 - //SEG112 [68] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG117 startProcessing::@7 + //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG113 asm { cli } + //SEG119 asm { cli } cli - //SEG114 [70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG115 [71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG121 [77] (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 - //SEG116 [72] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc _12 @@ -8881,7 +9308,7 @@ startProcessing: { bcc !+ inc _12+1 !: - //SEG117 [73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -8890,19 +9317,19 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG118 [74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG119 [75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG125 [81] (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 - //SEG120 [76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc _16 @@ -8910,7 +9337,7 @@ startProcessing: { bcc !+ inc _16+1 !: - //SEG121 [77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -8919,133 +9346,164 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG122 [78] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG128 [84] (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 - //SEG123 [79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsaa=vbsz1_rol_1 lda freeIdx asl + //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsaa=vbsaa_minus_vbsc1 + sec + sbc #8 + //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsaa=_neg_vbsaa + eor #$ff + clc + adc #1 + //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsaa + sta _25 + ora #$7f + bmi !+ + lda #0 + !: + sta _25+1 + //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda freeIdx + asl + //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc freeIdx + //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG124 [80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG125 [81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG126 [82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (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 - //SEG127 [83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _25 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x + lda _25+1 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x + //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuxx=vwuc2 + lda #<-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x + lda #>-$10 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x + //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG128 [84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG129 [85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG130 [86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (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 - //SEG131 startProcessing::@return - //SEG132 [87] return + //SEG145 startProcessing::@return + //SEG146 [101] return rts - //SEG133 startProcessing::@8 + //SEG147 startProcessing::@8 b8: - //SEG134 [88] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG135 [40] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] - //SEG136 [40] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG137 startProcessing::@3 + //SEG151 startProcessing::@3 b3: - //SEG138 [89] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG139 [90] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG153 [104] 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: - //SEG140 startProcessing::@9 - //SEG141 [91] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG154 startProcessing::@9 + //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4 } -//SEG142 getCharToProcess +//SEG156 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 = $2c - .label _10 = $2c - .label _11 = $2c - .label return_dist = $13 - .label x = $e - .label dist = $13 - .label screen_line = $b - .label y = $d - .label return_x = $11 - .label return_y = $12 - .label closest_dist = $f - .label closest_x = $11 - .label closest_y = $12 - .label _15 = $2e - .label _16 = $2c - //SEG143 [93] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] - //SEG144 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + .label _9 = $2f + .label _10 = $2f + .label _11 = $2f + .label return_dist = $14 + .label x = $f + .label dist = $14 + .label screen_line = $c + .label y = $e + .label return_x = $12 + .label return_y = $13 + .label closest_dist = $10 + .label closest_x = $12 + .label closest_y = $13 + .label _15 = $31 + .label _16 = $2f + //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG145 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta closest_x - //SEG146 [93] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG160 [107] 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 - //SEG147 [93] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG148 [93] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG162 [107] 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 - //SEG149 getCharToProcess::@1 + //SEG163 getCharToProcess::@1 b1: - //SEG150 [94] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] - //SEG151 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG152 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG153 [94] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG154 [94] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x - //SEG155 getCharToProcess::@2 + //SEG169 getCharToProcess::@2 b2: - //SEG156 [95] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG170 [109] 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: - //SEG157 getCharToProcess::@4 - //SEG158 [96] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG171 getCharToProcess::@4 + //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG159 [97] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG160 [98] (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 + //SEG174 [112] (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 @@ -9054,7 +9512,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG161 [99] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG175 [113] 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 !+ @@ -9067,41 +9525,41 @@ getCharToProcess: { bcs !b12+ jmp b12 !b12: - //SEG162 getCharToProcess::@5 - //SEG163 [100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG176 getCharToProcess::@5 + //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG164 [101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG165 [102] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] - //SEG166 [102] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG167 [102] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG168 [102] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy - //SEG169 getCharToProcess::@3 + //SEG179 [116] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG182 [116] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG183 getCharToProcess::@3 b3: - //SEG170 [103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG171 [104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 - //SEG172 getCharToProcess::@6 - //SEG173 [105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG186 getCharToProcess::@6 + //SEG187 [119] (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 !: - //SEG174 [106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG175 [107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 - //SEG176 getCharToProcess::@7 - //SEG177 [108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG190 getCharToProcess::@7 + //SEG191 [122] 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 !: - //SEG178 getCharToProcess::@8 - //SEG179 [109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + //SEG192 getCharToProcess::@8 + //SEG193 [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda return_y sta _9 lda #0 sta _9+1 - //SEG180 [110] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG194 [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _9 asl sta _15 @@ -9124,7 +9582,7 @@ getCharToProcess: { sta _15+1 asl _15 rol _15+1 - //SEG181 [111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 + //SEG195 [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 lda _16 clc adc _15 @@ -9132,14 +9590,14 @@ getCharToProcess: { lda _16+1 adc _15+1 sta _16+1 - //SEG182 [112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG196 [126] (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 - //SEG183 [113] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 + //SEG197 [127] (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 - //SEG184 [114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG198 [128] *((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 - //SEG185 getCharToProcess::@return + //SEG199 getCharToProcess::@return breturn: - //SEG186 [115] return + //SEG200 [129] return rts - //SEG187 getCharToProcess::@9 + //SEG201 getCharToProcess::@9 b9: - //SEG188 [116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG202 [130] (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 - //SEG189 [93] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] - //SEG190 [93] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG191 [93] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG192 [93] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG193 [93] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG194 [93] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG195 getCharToProcess::@10 + //SEG209 getCharToProcess::@10 b10: - //SEG196 [117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG210 [131] (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 - //SEG197 [94] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] - //SEG198 [94] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG199 [94] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG200 [94] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG201 [94] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG202 getCharToProcess::@12 + //SEG216 getCharToProcess::@12 b12: - //SEG203 [118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG217 [132] (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 - //SEG204 getCharToProcess::@11 + //SEG218 getCharToProcess::@11 b11: - //SEG205 [119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG219 [133] (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 } -//SEG206 setupRasterIrq +//SEG220 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG207 asm { sei } + //SEG221 asm { sei } sei - //SEG208 [121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG222 [135] *((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 - //SEG209 [122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG210 [123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG224 [137] *((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 - //SEG211 setupRasterIrq::@1 - //SEG212 [124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG225 setupRasterIrq::@1 + //SEG226 [138] *((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 - //SEG213 setupRasterIrq::@2 - //SEG214 [125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG227 setupRasterIrq::@2 + //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG215 [126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG216 [127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG217 asm { cli } + //SEG231 asm { cli } cli - //SEG218 setupRasterIrq::@return - //SEG219 [129] return + //SEG232 setupRasterIrq::@return + //SEG233 [143] return rts } -//SEG220 initSprites +//SEG234 initSprites // Initialize sprites initSprites: { - .label sp = $15 - //SEG221 [131] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] - //SEG222 [131] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + .label sp = $16 + //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG236 [145] 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 - //SEG223 [131] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] - //SEG224 [131] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy - //SEG225 initSprites::@1 + //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG239 initSprites::@1 b1: - //SEG226 [132] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (sp),y - //SEG227 [133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG228 [134] 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 + //SEG242 [148] 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 @@ -9275,189 +9733,189 @@ initSprites: { cmp #initSprites::@2] - //SEG230 [135] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG243 [149] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] + //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 // Initialize sprite registers - //SEG231 [135] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] - //SEG232 [135] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy - //SEG233 initSprites::@2 + //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG247 initSprites::@2 b2: - //SEG234 [136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG248 [150] *((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 - //SEG235 [137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG236 [138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG250 [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG237 initSprites::@3 - //SEG238 [139] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG251 initSprites::@3 + //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG239 [140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG240 [141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG241 initSprites::@return - //SEG242 [142] return + //SEG255 initSprites::@return + //SEG256 [156] return rts } -//SEG243 initSquareTables +//SEG257 initSquareTables // initialize SQUARES table initSquareTables: { - .label _6 = $19 - .label _14 = $19 - .label x = $17 - .label y = $18 - //SEG244 [144] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] - //SEG245 [144] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + .label _6 = $1a + .label _14 = $1a + .label x = $18 + .label y = $19 + //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG246 [144] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] - //SEG247 [144] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy - //SEG248 initSquareTables::@1 + //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG262 initSquareTables::@1 b1: - //SEG249 [145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 - //SEG250 initSquareTables::@3 - //SEG251 [146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG264 initSquareTables::@3 + //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$14 - //SEG252 [147] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] - //SEG253 [147] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy - //SEG254 initSquareTables::@4 + //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG268 initSquareTables::@4 b4: - //SEG255 [148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG256 [149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG257 [150] call mul8u - //SEG258 [173] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] - //SEG259 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG260 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG271 [164] call mul8u + //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG274 [187] 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 - //SEG261 [151] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG262 initSquareTables::@9 - //SEG263 [152] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG264 [153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG275 [165] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG276 initSquareTables::@9 + //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG265 [154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG279 [168] *((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 - //SEG266 [155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG267 [156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1 - //SEG268 [157] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] - //SEG269 [157] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG270 [157] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] - //SEG271 [157] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy - //SEG272 initSquareTables::@5 + //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG286 initSquareTables::@5 b5: - //SEG273 [158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 - //SEG274 initSquareTables::@7 - //SEG275 [159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG288 initSquareTables::@7 + //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$c - //SEG276 [160] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] - //SEG277 [160] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy - //SEG278 initSquareTables::@8 + //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG292 initSquareTables::@8 b8: - //SEG279 [161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG280 [162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG281 [163] call mul8u - //SEG282 [173] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] - //SEG283 [173] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG284 [173] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG295 [177] call mul8u + //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG298 [187] 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 - //SEG285 [164] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG286 initSquareTables::@10 - //SEG287 [165] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG288 [166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG299 [178] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG300 initSquareTables::@10 + //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG289 [167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG303 [181] *((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 - //SEG290 [168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG291 [169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG305 [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5 - //SEG292 initSquareTables::@return - //SEG293 [170] return + //SEG306 initSquareTables::@return + //SEG307 [184] return rts - //SEG294 initSquareTables::@6 + //SEG308 initSquareTables::@6 b6: - //SEG295 [171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8 - //SEG296 initSquareTables::@2 + //SEG310 initSquareTables::@2 b2: - //SEG297 [172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4 } -//SEG298 mul8u +//SEG312 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 = $1b - .label res = $19 - .label return = $19 - //SEG299 [174] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG300 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG301 [174] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + .label mb = $1c + .label res = $1a + .label return = $1a + //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG302 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG303 mul8u::@1 + //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG317 mul8u::@1 b1: - //SEG304 [175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG305 mul8u::@return - //SEG306 [176] return + //SEG319 mul8u::@return + //SEG320 [190] return rts - //SEG307 mul8u::@2 + //SEG321 mul8u::@2 b2: - //SEG308 [177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG309 [178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG310 mul8u::@4 - //SEG311 [179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG324 mul8u::@4 + //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -9465,73 +9923,73 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG312 [180] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG313 [180] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG314 mul8u::@3 + //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG328 mul8u::@3 b3: - //SEG315 [181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG316 [182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG317 [174] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG318 [174] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG319 [174] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG320 [174] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG321 irqBottom +//SEG335 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG322 entry interrupt(HARDWARE_ALL) + //SEG336 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG323 [184] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] - //SEG324 [184] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG325 [184] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - //SEG326 [184] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - //SEG327 irqBottom::@1 + //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG341 irqBottom::@1 b1: - //SEG328 [185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG329 [186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG330 irqBottom::@2 - //SEG331 [187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG344 irqBottom::@2 + //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG332 [188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 sta BGCOL - //SEG333 [189] call processChars - //SEG334 [196] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [203] call processChars + //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] jsr processChars - //SEG335 irqBottom::@3 - //SEG336 [190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG349 irqBottom::@3 + //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG337 [191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG338 [192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [206] *((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 - //SEG339 [193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG340 [194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG341 irqBottom::@return - //SEG342 [195] return - exit interrupt(HARDWARE_ALL) + //SEG355 irqBottom::@return + //SEG356 [209] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -9540,42 +9998,46 @@ irqBottom: { ldy #00 rti } -//SEG343 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _17 = $35 - .label processing = $30 - .label bitmask = $32 - .label i = $1d - .label xpos = $33 - .label numActive = $1e - //SEG344 [197] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] - //SEG345 [197] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + .label _17 = $38 + .label processing = $33 + .label bitmask = $35 + .label i = $1e + .label xpos = $36 + .label numActive = $1f + //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta numActive - //SEG346 [197] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 sta i - //SEG347 [197] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] - //SEG348 [197] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG349 [197] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy - //SEG350 processChars::@1 + //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG364 processChars::@1 b1: - //SEG351 [198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - asl - asl - //SEG352 [199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG353 [200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa + //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + asl + asl + //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + clc + adc i + //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG354 [201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //SEG370 [217] (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 @@ -9588,20 +10050,20 @@ processChars: { bne !- !e: sta bitmask - //SEG355 [202] 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 + //SEG371 [218] 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: - //SEG356 processChars::@10 - //SEG357 [203] 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 + //SEG372 processChars::@10 + //SEG373 [219] 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 - //SEG358 processChars::@11 - //SEG359 [204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG374 processChars::@11 + //SEG375 [220] *(*((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 @@ -9613,12 +10075,12 @@ processChars: { txa !: sta $ffff - //SEG360 [205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [221] *((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 - //SEG361 [206] *((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 + //SEG377 [222] *((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 @@ -9628,14 +10090,14 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG362 [207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [223] *((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 - //SEG363 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG364 [208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -9650,32 +10112,32 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG365 [209] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG366 [210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 beq !b4+ jmp b4 !b4: - //SEG367 processChars::@8 - //SEG368 [211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG383 processChars::@8 + //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG369 [212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG370 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG371 [213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG372 [214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG373 [215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG374 [216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [232] (word~) processChars::$17 ← *((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 _17 @@ -9690,11 +10152,11 @@ processChars: { ror _17 lsr _17+1 ror _17 - //SEG375 [217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 + //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 lda _17 - //SEG376 [218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG377 [219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [235] 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 @@ -9706,8 +10168,8 @@ processChars: { cmp #$10 - sta (processing),y - //SEG382 [222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10 -- _deref_pwuz1=_deref_pwuz1_minus_vwuc1 ldy #0 - lda (processing),y - sec - sbc #<$10 + adc (processing),y sta (processing),y + ldy $ff iny lda (processing),y - sbc #>$10 + ldy #1 + adc (processing),y sta (processing),y - //SEG383 processChars::@7 + //SEG398 [238] *((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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + adc (processing),y + sta (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1 + lda (processing),y + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 + adc (processing),y + sta (processing),y + //SEG399 processChars::@7 b7: - //SEG384 [223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc numActive - //SEG385 [224] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - //SEG386 [224] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy - //SEG387 processChars::@2 + //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG403 processChars::@2 b2: - //SEG388 [225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG389 [226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG405 [242] 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: - //SEG390 processChars::@12 - //SEG391 [227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 + //SEG406 processChars::@12 + //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 lax numActive axs #-['0'] - //SEG392 [228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx + //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx stx SCREEN+$3e7 - //SEG393 processChars::@return - //SEG394 [229] return + //SEG409 processChars::@return + //SEG410 [245] return rts - //SEG395 processChars::@6 + //SEG411 processChars::@6 b6: - //SEG396 [230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG412 [246] *((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 - //SEG397 [231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG398 [232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE jmp b7 - //SEG399 processChars::@4 + //SEG415 processChars::@4 b4: - //SEG400 [233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG416 [249] *((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 } -//SEG401 irqTop +//SEG417 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG402 entry interrupt(HARDWARE_ALL) + //SEG418 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG403 [235] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - //SEG404 [235] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG405 [235] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - //SEG406 [235] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - //SEG407 irqTop::@1 + //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG423 irqTop::@1 b1: - //SEG408 [236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG409 [237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG410 irqTop::@2 - //SEG411 [238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG426 irqTop::@2 + //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG412 [239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 sta BGCOL - //SEG413 [240] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] - //SEG414 [240] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG415 [240] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] - //SEG416 [240] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy - //SEG417 irqTop::@3 + //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG433 irqTop::@3 b3: - //SEG418 [241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG419 [242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3 - //SEG420 irqTop::@4 - //SEG421 [243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG436 irqTop::@4 + //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG422 [244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG423 [245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG439 [261] *((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 [246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG425 [247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG441 [263] *((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 [248] return - exit interrupt(HARDWARE_ALL) + //SEG442 irqTop::@return + //SEG443 [264] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -9862,5 +10330,5 @@ irqTop: { // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt - PROCESSING: .fill 9*NUM_PROCESSING, 0 + PROCESSING: .fill $d*NUM_PROCESSING, 0 diff --git a/src/test/ref/complex/blackhole/blackhole.sym b/src/test/ref/complex/blackhole/blackhole.sym index c920c3947..5043715ca 100644 --- a/src/test/ref/complex/blackhole/blackhole.sym +++ b/src/test/ref/complex/blackhole/blackhole.sym @@ -33,10 +33,12 @@ (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_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 4 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 5 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) 7 -(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) 6 +(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_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 (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) } @@ -57,6 +59,8 @@ (byte) ProcessingSprite::ptr (byte*) ProcessingSprite::screenPtr (byte) ProcessingSprite::status +(word) ProcessingSprite::vx +(word) ProcessingSprite::vy (word) ProcessingSprite::x (word) ProcessingSprite::y (byte*) RASTER @@ -108,13 +112,13 @@ (word) YPOS_UPMOST (const word) YPOS_UPMOST#0 YPOS_UPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:44 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:44 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 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:46 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:44 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:44 3.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 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -130,41 +134,41 @@ (label) getCharToProcess::@return (struct ProcessingChar) getCharToProcess::closest (word) getCharToProcess::closest_dist -(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:15 202.0 -(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:15 2002.0 -(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:15 684.1666666666667 -(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:15 202.0 +(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:16 202.0 +(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:16 2002.0 +(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:16 684.1666666666667 +(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:16 202.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:17 388.0 -(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:17 202.0 +(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:18 388.0 +(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:18 202.0 (byte) getCharToProcess::closest_y -(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:18 388.0 -(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:18 202.0 +(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:19 388.0 +(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:19 202.0 (word) getCharToProcess::dist -(word) getCharToProcess::dist#0 dist zp ZP_WORD:19 750.75 +(word) getCharToProcess::dist#0 dist zp ZP_WORD:20 750.75 (struct ProcessingChar) getCharToProcess::return (word) getCharToProcess::return_dist -(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:19 7.333333333333333 -(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:19 242.23529411764704 -(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:19 2002.0 -(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:19 2002.0 +(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:20 7.333333333333333 +(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:20 242.23529411764704 +(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:20 2002.0 +(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:20 2002.0 (byte) getCharToProcess::return_x (byte) getCharToProcess::return_x#0 reg byte x 7.333333333333333 -(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:17 242.23529411764704 -(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:17 1001.0 +(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:18 242.23529411764704 +(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:18 1001.0 (byte) getCharToProcess::return_y (byte) getCharToProcess::return_y#0 reg byte y 7.333333333333333 -(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:18 228.66666666666669 -(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:18 2002.0 +(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:19 228.66666666666669 +(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:19 2002.0 (byte*) getCharToProcess::screen_line -(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:11 50.5 -(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:11 80.2 +(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:12 50.5 +(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:12 80.2 (byte) getCharToProcess::x -(byte) getCharToProcess::x#1 x zp ZP_BYTE:14 1001.0 -(byte) getCharToProcess::x#2 x zp ZP_BYTE:14 455.0 +(byte) getCharToProcess::x#1 x zp ZP_BYTE:15 1001.0 +(byte) getCharToProcess::x#2 x zp ZP_BYTE:15 455.0 (byte) getCharToProcess::y -(byte) getCharToProcess::y#1 y zp ZP_BYTE:13 101.0 -(byte) getCharToProcess::y#7 y zp ZP_BYTE:13 137.75 +(byte) getCharToProcess::y#1 y zp ZP_BYTE:14 101.0 +(byte) getCharToProcess::y#7 y zp ZP_BYTE:14 137.75 (void()) initSprites() (label) initSprites::@1 (label) initSprites::@2 @@ -174,17 +178,17 @@ (byte) initSprites::i#1 reg byte x 16.5 (byte) initSprites::i#2 reg byte x 16.5 (byte*) initSprites::sp -(byte*) initSprites::sp#1 sp zp ZP_WORD:21 16.5 -(byte*) initSprites::sp#2 sp zp ZP_WORD:21 16.5 +(byte*) initSprites::sp#1 sp zp ZP_WORD:22 16.5 +(byte*) initSprites::sp#2 sp zp ZP_WORD:22 16.5 (void()) initSquareTables() (byte~) initSquareTables::$10 reg byte a 22.0 (byte~) initSquareTables::$12 reg byte a 22.0 -(word~) initSquareTables::$14 $14 zp ZP_WORD:25 11.0 +(word~) initSquareTables::$14 $14 zp ZP_WORD:26 11.0 (byte~) initSquareTables::$16 reg byte a 22.0 (byte~) initSquareTables::$17 reg byte a 22.0 (byte~) initSquareTables::$2 reg byte a 22.0 (byte~) initSquareTables::$4 reg byte a 22.0 -(word~) initSquareTables::$6 $6 zp ZP_WORD:25 11.0 +(word~) initSquareTables::$6 $6 zp ZP_WORD:26 11.0 (label) initSquareTables::@1 (label) initSquareTables::@10 (label) initSquareTables::@2 @@ -197,13 +201,13 @@ (label) initSquareTables::@9 (label) initSquareTables::@return (byte) initSquareTables::x -(byte) initSquareTables::x#1 x zp ZP_BYTE:23 16.5 -(byte) initSquareTables::x#2 x zp ZP_BYTE:23 5.5 +(byte) initSquareTables::x#1 x zp ZP_BYTE:24 16.5 +(byte) initSquareTables::x#2 x zp ZP_BYTE:24 5.5 (byte) initSquareTables::x_dist (byte) initSquareTables::x_dist#0 reg byte a 22.0 (byte) initSquareTables::y -(byte) initSquareTables::y#1 y zp ZP_BYTE:24 16.5 -(byte) initSquareTables::y#2 y zp ZP_BYTE:24 5.5 +(byte) initSquareTables::y#1 y zp ZP_BYTE:25 16.5 +(byte) initSquareTables::y#2 y zp ZP_BYTE:25 5.5 (byte) initSquareTables::y_dist (byte) initSquareTables::y_dist#0 reg byte a 22.0 interrupt(HARDWARE_ALL)(void()) irqBottom() @@ -227,8 +231,10 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(byte~) main::$15 reg byte x 12.833333333333334 -(byte) main::$22 reg byte a 22.0 +(byte~) main::$15 reg byte x 12.375 +(byte) main::$24 reg byte a 22.0 +(byte) main::$25 reg byte a 22.0 +(byte) main::$26 reg byte a 22.0 (struct ProcessingChar~) main::$8 (label) main::@1 (label) main::@2 @@ -240,7 +246,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@8 (struct ProcessingChar) main::center (word) main::center_dist -(word) main::center_dist#0 center_dist zp ZP_WORD:19 22.0 +(word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0 (byte) main::center_x (byte) main::center_x#0 reg byte x 5.5 (byte) main::center_y @@ -249,8 +255,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) main::dst#1 dst zp ZP_WORD:4 11.0 (byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.888888888888889 +(byte) main::i#1 i zp ZP_BYTE:6 16.5 +(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231 (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 @@ -271,27 +277,29 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) mul8u::b#0 reg byte a 22.0 (byte) mul8u::b#1 reg byte a 22.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp ZP_WORD:27 24.0 -(word) mul8u::mb#1 mb zp ZP_WORD:27 202.0 -(word) mul8u::mb#2 mb zp ZP_WORD:27 43.57142857142858 +(word) mul8u::mb#0 mb zp ZP_WORD:28 24.0 +(word) mul8u::mb#1 mb zp ZP_WORD:28 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:28 43.57142857142858 (word) mul8u::res -(word) mul8u::res#1 res zp ZP_WORD:25 202.0 -(word) mul8u::res#2 res zp ZP_WORD:25 46.42857142857143 -(word) mul8u::res#6 res zp ZP_WORD:25 101.0 +(word) mul8u::res#1 res zp ZP_WORD:26 202.0 +(word) mul8u::res#2 res zp ZP_WORD:26 46.42857142857143 +(word) mul8u::res#6 res zp ZP_WORD:26 101.0 (word) mul8u::return -(word) mul8u::return#2 return zp ZP_WORD:25 22.0 -(word) mul8u::return#3 return zp ZP_WORD:25 22.0 +(word) mul8u::return#2 return zp ZP_WORD:26 22.0 +(word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() (byte~) processChars::$1 reg byte x 4.0 (byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 (byte~) processChars::$15 reg byte a 22.0 (byte~) processChars::$16 reg byte x 6.6000000000000005 -(word~) processChars::$17 $17 zp ZP_WORD:53 11.0 +(word~) processChars::$17 $17 zp ZP_WORD:56 11.0 (byte~) processChars::$18 reg byte a 22.0 (byte~) processChars::$22 reg byte a 22.0 (byte~) processChars::$24 reg byte a 22.0 -(byte) processChars::$42 reg byte a 22.0 +(byte) processChars::$44 reg byte a 22.0 +(byte) processChars::$45 reg byte a 22.0 +(byte) processChars::$46 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -307,18 +315,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 2.5 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.5 (byte) processChars::i -(byte) processChars::i#1 i zp ZP_BYTE:29 16.5 -(byte) processChars::i#10 i zp ZP_BYTE:29 1.71875 +(byte) processChars::i#1 i zp ZP_BYTE:30 16.5 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.9411764705882353 (byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp ZP_BYTE:30 22.0 -(byte) processChars::numActive#10 numActive zp ZP_BYTE:30 1.0999999999999999 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:30 11.666666666666666 +(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 +(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 1.03125 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.4782608695652174 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.4782608695652174 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:51 3.142857142857143 +(word) processChars::xpos#0 xpos zp ZP_WORD:54 3.142857142857143 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -327,25 +335,33 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(word~) startProcessing::$0 $0 zp ZP_WORD:33 3.0 -(word~) startProcessing::$1 $1 zp ZP_WORD:33 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:39 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:39 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:39 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:41 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:41 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:41 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:33 1.2000000000000002 -(byte~) startProcessing::$27 reg byte a 2002.0 -(byte~) startProcessing::$28 reg byte x 2.333333333333333 -(byte) startProcessing::$36 reg byte a 2002.0 -(word) startProcessing::$38 $38 zp ZP_WORD:35 4.0 -(word) startProcessing::$39 $39 zp ZP_WORD:33 4.0 -(word~) startProcessing::$4 $4 zp ZP_WORD:9 4.0 -(byte) startProcessing::$41 reg byte a 4.0 -(word~) startProcessing::$5 $5 zp ZP_WORD:9 4.0 -(word~) startProcessing::$7 $7 zp ZP_WORD:7 4.0 -(word~) startProcessing::$8 $8 zp ZP_WORD:7 4.0 +(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 +(signed byte~) startProcessing::$22 reg byte a 4.0 +(signed byte~) startProcessing::$23 reg byte a 4.0 +(signed byte~) startProcessing::$24 reg byte a 2.0 +(word~) startProcessing::$25 $25 zp ZP_WORD:45 0.5714285714285714 +(byte~) startProcessing::$33 reg byte a 2002.0 +(byte~) startProcessing::$34 reg byte x 2.25 +(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 +(byte) startProcessing::$44 reg byte a 2002.0 +(byte) startProcessing::$45 reg byte a 2002.0 +(byte) startProcessing::$46 reg byte a 2002.0 +(word) startProcessing::$48 $48 zp ZP_WORD:36 4.0 +(word) startProcessing::$49 $49 zp ZP_WORD:34 4.0 +(word~) startProcessing::$5 $5 zp ZP_WORD:10 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::$7 $7 zp ZP_WORD:8 4.0 +(word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -359,107 +375,119 @@ 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:31 0.40540540540540543 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:32 0.275 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData -(byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:7 1.3333333333333333 -(byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:7 67.33333333333333 -(byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:7 101.66666666666666 +(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::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:6 34.52631578947369 -(byte) startProcessing::freeIdx#6 reg byte x 28.857142857142858 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 28.56521739130435 +(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443 (byte~) startProcessing::freeIdx#7 reg byte x 202.0 -(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:6 202.0 +(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0 (byte) startProcessing::i -(byte) startProcessing::i#1 i zp ZP_BYTE:6 1501.5 -(byte) startProcessing::i#2 i zp ZP_BYTE:6 1251.25 +(byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5 +(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001 (byte) startProcessing::i1 (byte) startProcessing::i1#1 reg byte x 151.5 (byte) startProcessing::i1#2 reg byte x 50.5 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:37 0.11764705882352941 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.09523809523809523 (byte*) startProcessing::spriteData -(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:9 0.5714285714285714 -(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:9 50.5 -(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:9 152.5 +(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:43 0.6666666666666666 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.2857142857142857 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.5 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.2857142857142857 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.8 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.36363636363636365 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] -reg byte y [ main::i#2 main::i#1 ] +zp ZP_BYTE:6 [ main::i#2 main::i#1 ] reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -zp ZP_BYTE:6 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:7 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ] -zp ZP_WORD:9 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ] +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 ] reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] -zp ZP_WORD:11 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] -zp ZP_BYTE:13 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -zp ZP_BYTE:14 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -zp ZP_WORD:15 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] -zp ZP_BYTE:17 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] -zp ZP_BYTE:18 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -zp ZP_WORD:19 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] -zp ZP_WORD:21 [ initSprites::sp#2 initSprites::sp#1 ] +zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ] +zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -zp ZP_BYTE:23 [ initSquareTables::x#2 initSquareTables::x#1 ] +zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ] reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] -zp ZP_BYTE:24 [ initSquareTables::y#2 initSquareTables::y#1 ] +zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -zp ZP_BYTE:29 [ processChars::i#10 processChars::i#1 ] -zp ZP_BYTE:30 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -reg byte a [ main::$22 ] +reg byte a [ main::$24 ] +reg byte a [ main::$25 ] +reg byte a [ main::$26 ] reg byte x [ main::$15 ] reg byte x [ getCharToProcess::return_x#0 ] reg byte y [ getCharToProcess::return_y#0 ] reg byte x [ main::center_x#0 ] reg byte y [ main::center_y#0 ] -zp ZP_BYTE:31 [ startProcessing::center_x#0 ] -zp ZP_BYTE:32 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$36 ] -reg byte a [ startProcessing::$27 ] -zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$39 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:35 [ startProcessing::$38 ] -zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] +zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +reg byte a [ startProcessing::$44 ] +reg byte a [ startProcessing::$45 ] +reg byte a [ startProcessing::$46 ] +reg byte a [ startProcessing::$33 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] +zp ZP_WORD:36 [ startProcessing::$48 ] +zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:39 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:41 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:43 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$41 ] -reg byte x [ startProcessing::$28 ] +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::$22 ] +reg byte a [ startProcessing::$23 ] +reg byte a [ startProcessing::$24 ] +zp ZP_WORD:45 [ startProcessing::$25 ] +reg byte a [ startProcessing::$51 ] +reg byte a [ startProcessing::$52 ] +reg byte a [ startProcessing::$53 ] +reg byte x [ startProcessing::$34 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:46 [ getCharToProcess::$15 ] +zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:49 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$42 ] +reg byte a [ processChars::$44 ] +reg byte a [ processChars::$45 ] +reg byte a [ processChars::$46 ] reg byte a [ processChars::$24 ] -zp ZP_WORD:48 [ processChars::processing#0 ] -zp ZP_BYTE:50 [ processChars::bitmask#0 ] -zp ZP_WORD:51 [ processChars::xpos#0 ] +zp ZP_WORD:51 [ processChars::processing#0 ] +zp ZP_BYTE:53 [ processChars::bitmask#0 ] +zp ZP_WORD:54 [ processChars::xpos#0 ] reg byte a [ processChars::$12 ] reg byte a [ processChars::$13 ] reg byte x [ processChars::$16 ] reg byte a [ processChars::$15 ] -zp ZP_WORD:53 [ processChars::$17 ] +zp ZP_WORD:56 [ processChars::$17 ] reg byte a [ processChars::$18 ] reg byte x [ processChars::$1 ] reg byte a [ processChars::$22 ]