diff --git a/src/main/fragment/pwuz1_derefidx_vbuyy=pwuz1_derefidx_vbuyy_plus_pwuc1_derefidx_vbuxx.asm b/src/main/fragment/pwuz1_derefidx_vbuyy=pwuz1_derefidx_vbuyy_plus_pwuc1_derefidx_vbuxx.asm new file mode 100644 index 000000000..65dcd7ba4 --- /dev/null +++ b/src/main/fragment/pwuz1_derefidx_vbuyy=pwuz1_derefidx_vbuyy_plus_pwuc1_derefidx_vbuxx.asm @@ -0,0 +1,8 @@ +clc +lda ({z1}),y +adc {c1},x +sta ({z1}),y +iny +lda ({z1}),y +adc {c1}+1,x +sta ({z1}),y diff --git a/src/test/kc/complex/blackhole/blackhole.kc b/src/test/kc/complex/blackhole/blackhole.kc index c4d506b81..400bb4581 100644 --- a/src/test/kc/complex/blackhole/blackhole.kc +++ b/src/test/kc/complex/blackhole/blackhole.kc @@ -139,7 +139,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, 60, 60, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; + PROCESSING[spriteIdx] = { spriteX, spriteY, (word)(spriteIdx*8), 60, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; } const word XPOS_LEFTMOST = (word)(BORDER_XPOS_LEFT-8)<<4; @@ -194,16 +194,16 @@ void processChars() { *SPRITES_ENABLE &= 0xff ^ bitmask; } else { byte xchar = (byte)(xpos/8) - BORDER_XPOS_LEFT/8; - processing->vx = processing->vx + VXSIN[xchar]; + processing->vx += VXSIN[xchar]; processing->x += processing->vx; byte ychar = (byte)(ypos/8) - BORDER_YPOS_TOP/8; - processing->vy = processing->vy + VYSIN[ychar]; + processing->vy += VYSIN[ychar]; processing->y += processing->vy; } numActive++; } } - //*(SCREEN+999) = '0'+numActive; + *(SCREEN+999) = '0'+numActive; } // SQUARES_X[i] = (i-20)*(i-20) diff --git a/src/test/ref/complex/blackhole/blackhole.asm b/src/test/ref/complex/blackhole/blackhole.asm index d92da0130..31dc323e6 100644 --- a/src/test/ref/complex/blackhole/blackhole.asm +++ b/src/test/ref/complex/blackhole/blackhole.asm @@ -166,33 +166,34 @@ main: { jmp b3 } // 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 _0 = $22 + .label _1 = $22 + .label _2 = $22 .label _4 = $a .label _5 = $a .label _7 = 8 .label _8 = 8 - .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 _10 = $28 + .label _11 = $28 + .label _12 = $28 + .label _14 = $2a + .label _15 = $2a + .label _16 = $2a + .label _22 = $2d + .label center_x = $20 + .label center_y = $21 .label i = 7 - .label screenPtr = $25 + .label screenPtr = $26 .label spriteData = $a .label chargenData = 8 - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c .label freeIdx = 7 - .label _42 = $23 - .label _43 = $21 + .label _44 = $24 + .label _45 = $22 ldx #$ff b1: lda #0 @@ -224,19 +225,19 @@ startProcessing: { sta _0+1 lda _0 asl - sta _42 + sta _44 lda _0+1 rol - sta _42+1 - asl _42 - rol _42+1 - lda _43 + sta _44+1 + asl _44 + rol _44+1 + lda _45 clc - adc _42 - sta _43 - lda _43+1 - adc _42+1 - sta _43+1 + adc _44 + sta _45 + lda _45+1 + adc _44+1 + sta _45+1 asl _1 rol _1+1 asl _1 @@ -378,6 +379,13 @@ startProcessing: { stx spritePtr lda freeIdx asl + asl + asl + sta _22 + lda #0 + sta _22+1 + lda freeIdx + asl clc adc freeIdx asl @@ -393,9 +401,9 @@ startProcessing: { sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - lda #$3c + lda _22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda #0 + lda _22+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x @@ -428,9 +436,9 @@ 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 _9 = $2f + .label _10 = $2f + .label _11 = $2f .label return_dist = $14 .label x = $f .label dist = $14 @@ -441,8 +449,8 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $2e - .label _16 = $2c + .label _15 = $31 + .label _16 = $2f lda #0 sta closest_y sta closest_x @@ -778,16 +786,16 @@ irqBottom: { } // Process any chars in the PROCESSING array processChars: { - .label _14 = $35 - .label _24 = $33 - .label _28 = $38 - .label _33 = $3a - .label processing = $30 - .label bitmask = $32 + .label _16 = $38 + .label _26 = $36 + .label processing = $33 + .label bitmask = $35 .label i = $1e - .label xpos = $33 - .label ypos = $37 + .label xpos = $36 + .label ypos = $3a + .label numActive = $1f lda #0 + sta numActive sta i b1: lda i @@ -886,19 +894,19 @@ processChars: { sta SPRITES_XPOS,x ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _14 + sta _16 iny lda (processing),y - sta _14+1 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lda _14 + sta _16+1 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lda _16 sta ypos sta SPRITES_YPOS,x // Move sprite @@ -960,31 +968,25 @@ processChars: { jmp b6 !b6: !: - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - lda _24 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + lda _26 sec sbc #BORDER_XPOS_LEFT/8 asl ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax - lda (processing),y clc + lda (processing),y adc VXSIN,x - sta _28 + sta (processing),y iny lda (processing),y adc VXSIN+1,x - sta _28+1 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX - lda _28 - sta (processing),y - iny - lda _28+1 sta (processing),y ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff @@ -1008,19 +1010,13 @@ processChars: { asl ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax - lda (processing),y clc + lda (processing),y adc VYSIN,x - sta _33 + sta (processing),y iny lda (processing),y adc VYSIN+1,x - sta _33+1 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY - lda _33 - sta (processing),y - iny - lda _33+1 sta (processing),y ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc @@ -1033,6 +1029,8 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y + b7: + inc numActive b2: inc i lda #NUM_PROCESSING-1+1 @@ -1040,6 +1038,9 @@ processChars: { beq !b1+ jmp b1 !b1: + lax numActive + axs #-['0'] + stx SCREEN+$3e7 rts b6: // Set status to FREE @@ -1051,7 +1052,7 @@ processChars: { // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE - jmp b2 + jmp b7 b4: lda SPRITES_XMSB ora bitmask diff --git a/src/test/ref/complex/blackhole/blackhole.cfg b/src/test/ref/complex/blackhole/blackhole.cfg index 348db0205..10f1e7293 100644 --- a/src/test/ref/complex/blackhole/blackhole.cfg +++ b/src/test/ref/complex/blackhole/blackhole.cfg @@ -86,11 +86,11 @@ startProcessing::@1: scope:[startProcessing] from startProcessing startProcessi to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 [48] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 - [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 - [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 - [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 - [53] 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 + [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 + [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 + [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 + [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 + [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9 [54] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) @@ -98,9 +98,9 @@ startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProc to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 - [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 - [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 - [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 + [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 + [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 + [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 @@ -135,334 +135,343 @@ startProcessing::@7: scope:[startProcessing] from startProcessing::@6 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 - [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 - [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 - [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 - [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 - [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 - [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 - [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c - [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c - [96] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 - [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 - [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0 - [99] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 + [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 + [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 + [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 + [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 + [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 + [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 + [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 + [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 + [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 + [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c + [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 + [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 + [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 + [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@7 - [100] return + [102] return to:@return startProcessing::@8: scope:[startProcessing] from startProcessing::@4 - [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [103] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 + [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 to:startProcessing::@9 startProcessing::@9: scope:[startProcessing] from startProcessing::@3 - [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 getCharToProcess: scope:[getCharToProcess] from main::@4 - [105] phi() + [107] phi() to:getCharToProcess::@1 getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 - [106] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) - [106] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) - [106] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) - [106] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) - [106] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + [108] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [108] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [108] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) + [108] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [108] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) to:getCharToProcess::@2 getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 - [107] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) - [107] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) - [107] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) - [107] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) - [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + [109] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [109] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [109] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) + [109] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 to:getCharToProcess::@4 getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 - [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 - [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 - [111] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) - [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [115] (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 ) - [115] (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 ) - [115] (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 ) - [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [117] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [117] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [117] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [125] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [126] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [128] return + [130] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [142] return + [144] return to:@return initSprites: scope:[initSprites] from main::@3 - [143] phi() + [145] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [144] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [145] *((byte*) initSprites::sp#2) ← (byte) 0 - [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [147] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [146] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [147] *((byte*) initSprites::sp#2) ← (byte) 0 + [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [148] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [150] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [155] return + [157] return to:@return initSquareTables: scope:[initSquareTables] from main - [156] phi() + [158] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [157] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [159] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [160] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [163] call mul8u - [164] (word) mul8u::return#2 ← (word) mul8u::res#2 + [162] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [165] call mul8u + [166] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [170] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [172] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [173] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [176] call mul8u - [177] (word) mul8u::return#3 ← (word) mul8u::res#2 + [175] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [178] call mul8u + [179] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [183] return + [185] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [186] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [186] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [188] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [188] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [187] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [187] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [187] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [189] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [189] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [189] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [189] return + [191] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [193] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [195] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [196] phi() + [198] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [197] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [199] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [200] phi() - [201] call processChars + [202] phi() + [203] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [205] return + [207] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [206] phi() + [208] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [207] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 - [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 - [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 - [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 - [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 - [213] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 - to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@1 - [215] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [209] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [209] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 + [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 + [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 + [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 + [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 + [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [216] 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::@9 - [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [218] *((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) - [219] *((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::@9 - [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 - [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@3 - [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 - to:processChars::@5 -processChars::@5: scope:[processChars] from processChars::@4 processChars::@7 - [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 - [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 - [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 - [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 - [231] 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 - [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 - to:processChars::@12 -processChars::@12: scope:[processChars] from processChars::@13 - [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 +processChars::@10: scope:[processChars] from processChars::@1 + [217] 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::@12 - [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 +processChars::@11: scope:[processChars] from processChars::@10 + [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) + [221] *((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 + [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 + [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 to:processChars::@8 -processChars::@8: scope:[processChars] from processChars::@11 - [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 - [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 - [237] (byte) processChars::xchar#0 ← (byte~) processChars::$25 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 - [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 - [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) - [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 - [241] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 - [243] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 - [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 - [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) - [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 +processChars::@8: scope:[processChars] from processChars::@3 + [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + to:processChars::@5 +processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 + [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 + [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 + [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 + [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 + [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 + [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 + to:processChars::@15 +processChars::@15: scope:[processChars] from processChars::@5 + [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + to:processChars::@14 +processChars::@14: scope:[processChars] from processChars::@15 + [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + to:processChars::@13 +processChars::@13: scope:[processChars] from processChars::@14 + [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 + to:processChars::@9 +processChars::@9: scope:[processChars] from processChars::@13 + [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 + [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 + [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 + [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) + [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 + [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 + [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + to:processChars::@7 +processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 + [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@6 processChars::@8 - [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 +processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 + [249] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + to:processChars::@12 +processChars::@12: scope:[processChars] from processChars::@2 + [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 + [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@2 - [250] return +processChars::@return: scope:[processChars] from processChars::@12 + [254] return to:@return -processChars::@6: scope:[processChars] from processChars::@11 processChars::@12 processChars::@13 processChars::@5 - [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 - to:processChars::@2 +processChars::@6: scope:[processChars] from processChars::@13 processChars::@14 processChars::@15 processChars::@5 + [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 + to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [255] phi() + [259] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [256] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [260] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 irqTop::@2 - [259] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) - [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 + [263] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) + [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 - [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@3 - [265] return + [269] return to:@return diff --git a/src/test/ref/complex/blackhole/blackhole.log b/src/test/ref/complex/blackhole/blackhole.log index ccaef0935..8c5b535e5 100644 --- a/src/test/ref/complex/blackhole/blackhole.log +++ b/src/test/ref/complex/blackhole/blackhole.log @@ -4,7 +4,7 @@ Resolved forward reference SQUARES_X to (word[$28]) SQUARES_X Resolved forward reference SQUARES_Y to (word[$19]) SQUARES_Y Resolved forward reference RASTER_IRQ_MIDDLE to (byte) RASTER_IRQ_MIDDLE Resolved forward reference irqBottom to interrupt(HARDWARE_ALL)(void()) irqBottom() -Fixing pointer addition (struct ProcessingSprite*~) processChars::$1 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i +Fixing pointer addition (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) main::i) Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) getCharToProcess::x) Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) getCharToProcess::y) @@ -61,14 +61,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 *((word*) startProcessing::$31 + (byte~) startProcessing::$28) ← (number) $3c -Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$28) ← (number) $3c -Adding struct value list initializer *((byte*) startProcessing::$33 + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteIdx -Adding struct value list initializer *((byte*) startProcessing::$34 + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr -Adding struct value list initializer *((byte*) startProcessing::$35 + (byte~) startProcessing::$28) ← (byte) STATUS_NEW -Adding struct value list initializer *((byte**) startProcessing::$36 + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr +Adding struct value list initializer *((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX +Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY +Adding struct value list initializer *((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 +Adding struct value list initializer *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c +Adding struct value list initializer *((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx +Adding struct value list initializer *((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr +Adding struct value list initializer *((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW +Adding struct value list initializer *((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr Replacing struct member reference (struct ProcessingChar) main::center.dist with member variable reference (word) main::center_dist Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist @@ -78,7 +78,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::$29).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 @@ -103,7 +103,7 @@ Rewriting struct pointer member access *((struct ProcessingSprite*) processChars Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y -Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$10 +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 Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000 @@ -177,9 +177,7 @@ Culled Empty Block (label) @11 Culled Empty Block (label) startProcessing::@6 Culled Empty Block (label) startProcessing::@7 Culled Empty Block (label) processChars::@9 -Culled Empty Block (label) processChars::@7 Culled Empty Block (label) processChars::@11 -Culled Empty Block (label) processChars::@14 Culled Empty Block (label) initSquareTables::@5 Culled Empty Block (label) initSquareTables::@6 Culled Empty Block (label) initSquareTables::@12 @@ -498,7 +496,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::$23 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) startProcessing::i#0 ← (byte) 0 to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 @@ -506,20 +504,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::$37 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) startProcessing::$22 ← *((byte*) startProcessing::$37 + (byte~) startProcessing::$27) == (byte) STATUS_FREE#0 - (bool~) startProcessing::$23 ← ! (bool~) startProcessing::$22 - if((bool~) startProcessing::$23) goto startProcessing::@3 + (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 + (bool~) startProcessing::$25 ← ! (bool~) startProcessing::$24 + if((bool~) startProcessing::$25) goto startProcessing::@3 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::$23) + (bool~) startProcessing::$26 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$23) + if((bool~) startProcessing::$26) 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 ) @@ -531,8 +529,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::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff + if((bool~) startProcessing::$27) 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 ) @@ -569,8 +567,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::$28 ← (byte) startProcessing::i1#1 != rangelast(0,7) + if((bool~) startProcessing::$28) goto startProcessing::@9 to:startProcessing::@10 startProcessing::@10: scope:[startProcessing] from startProcessing::@9 (byte*) startProcessing::screenPtr#1 ← phi( startProcessing::@9/(byte*) startProcessing::screenPtr#2 ) @@ -593,23 +591,25 @@ 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 - (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) startProcessing::$31 + (byte~) startProcessing::$28) ← (number) $3c - (word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) startProcessing::$32 + (byte~) startProcessing::$28) ← (number) $3c - (byte*) startProcessing::$33 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) startProcessing::$33 + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteIdx#1 - (byte*) startProcessing::$34 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) startProcessing::$34 + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 - (byte*) startProcessing::$35 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) startProcessing::$35 + (byte~) startProcessing::$28) ← (byte) STATUS_NEW#0 - (byte**) startProcessing::$36 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) startProcessing::$36 + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#1 + (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8 + (word~) startProcessing::$22 ← ((word)) (number~) startProcessing::$21 + (byte~) startProcessing::$30 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 + (word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 + (word*) startProcessing::$33 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 + (word*) startProcessing::$34 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c + (byte*) startProcessing::$35 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx#1 + (byte*) startProcessing::$36 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 + (byte*) startProcessing::$37 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW#0 + (byte**) startProcessing::$38 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#1 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@10 return @@ -639,149 +639,169 @@ startProcessing::@return: scope:[startProcessing] from startProcessing::@10 }} to:@13 processChars: scope:[processChars] from irqBottom::@2 - (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 + (byte) processChars::numActive#0 ← (number) 0 + (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) processChars::i#0 ← (byte) 0 to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 + (byte) processChars::numActive#7 ← phi( processChars/(byte) processChars::numActive#0 processChars::@2/(byte) processChars::numActive#6 ) (byte) processChars::i#2 ← phi( processChars/(byte) processChars::i#0 processChars::@2/(byte) processChars::i#1 ) (byte~) processChars::$36 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (struct ProcessingSprite*~) processChars::$1 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 - (struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$1 + (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 + (struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$3 (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (number~) processChars::$2 ← (number) 1 << *((byte*) processChars::$39) - (byte) processChars::bitmask#0 ← (number~) processChars::$2 + (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39) + (byte) processChars::bitmask#0 ← (number~) processChars::$4 (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$3 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 - (bool~) processChars::$4 ← ! (bool~) processChars::$3 - if((bool~) processChars::$4) goto processChars::@2 + (bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 + (bool~) processChars::$6 ← ! (bool~) processChars::$5 + if((bool~) processChars::$6) goto processChars::@2 to:processChars::@12 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@10 processChars::@6 - (byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@10/(byte) processChars::i#5 processChars::@6/(byte) processChars::i#6 ) - (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$0) - (bool~) processChars::$35 ← (byte) processChars::i#1 != rangelast(0,processChars::$0) +processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 + (byte) processChars::numActive#6 ← phi( processChars::@1/(byte) processChars::numActive#7 processChars::@7/(byte) processChars::numActive#1 ) + (byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@7/(byte) processChars::i#5 ) + (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$2) + (bool~) processChars::$35 ← (byte) processChars::i#1 != rangelast(0,processChars::$2) if((bool~) processChars::$35) goto processChars::@1 - to:processChars::@return + to:processChars::@14 processChars::@12: scope:[processChars] from processChars::@1 - (byte) processChars::i#10 ← phi( processChars::@1/(byte) processChars::i#2 ) + (byte) processChars::numActive#12 ← phi( processChars::@1/(byte) processChars::numActive#7 ) + (byte) processChars::i#11 ← phi( processChars::@1/(byte) processChars::i#2 ) (byte) processChars::bitmask#5 ← phi( processChars::@1/(byte) processChars::bitmask#0 ) (struct ProcessingSprite*) processChars::processing#1 ← phi( processChars::@1/(struct ProcessingSprite*) processChars::processing#0 ) (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#1 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$5 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 - (bool~) processChars::$6 ← ! (bool~) processChars::$5 - if((bool~) processChars::$6) goto processChars::@3 + (bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 + (bool~) processChars::$8 ← ! (bool~) processChars::$7 + if((bool~) processChars::$8) goto processChars::@3 to:processChars::@13 processChars::@3: scope:[processChars] from processChars::@12 processChars::@13 - (byte) processChars::i#9 ← phi( processChars::@12/(byte) processChars::i#10 processChars::@13/(byte) processChars::i#11 ) + (byte) processChars::numActive#11 ← phi( processChars::@12/(byte) processChars::numActive#12 processChars::@13/(byte) processChars::numActive#13 ) + (byte) processChars::i#8 ← phi( processChars::@12/(byte) processChars::i#11 processChars::@13/(byte) processChars::i#12 ) (byte) processChars::bitmask#6 ← phi( processChars::@12/(byte) processChars::bitmask#5 processChars::@13/(byte) processChars::bitmask#1 ) (struct ProcessingSprite*) processChars::processing#2 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 processChars::@13/(struct ProcessingSprite*) processChars::processing#3 ) (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#2 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word~) processChars::$9 ← *((word*) processChars::$42) >> (number) 4 - (word) processChars::xpos#0 ← (word~) processChars::$9 - (byte~) processChars::$10 ← > (word) processChars::xpos#0 - (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$10 + (word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4 + (word) processChars::xpos#0 ← (word~) processChars::$11 + (byte~) processChars::$12 ← > (word) processChars::xpos#0 + (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12 if((bool~) processChars::$63) goto processChars::@4 to:processChars::@8 processChars::@13: scope:[processChars] from processChars::@12 - (byte) processChars::i#11 ← phi( processChars::@12/(byte) processChars::i#10 ) + (byte) processChars::numActive#13 ← phi( processChars::@12/(byte) processChars::numActive#12 ) + (byte) processChars::i#12 ← phi( processChars::@12/(byte) processChars::i#11 ) (byte) processChars::bitmask#1 ← phi( processChars::@12/(byte) processChars::bitmask#5 ) (struct ProcessingSprite*) processChars::processing#3 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 ) (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR *(*((byte**) processChars::$43)) ← (byte) ' ' *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#1 - (byte*~) processChars::$7 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0 + (byte*~) processChars::$9 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0 (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (byte*~) processChars::$8 ← (byte*~) processChars::$7 + *((byte*) processChars::$44) + (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44) (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*~) processChars::$8) ← *((byte*) processChars::$45) + *((byte*~) processChars::$10) ← *((byte*) processChars::$45) (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS *((byte*) processChars::$46) ← (byte) STATUS_PROCESSING#0 to:processChars::@3 processChars::@4: scope:[processChars] from processChars::@3 + (byte) processChars::numActive#9 ← phi( processChars::@3/(byte) processChars::numActive#11 ) (struct ProcessingSprite*) processChars::processing#7 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 ) (word) processChars::xpos#3 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#9 ) + (byte) processChars::i#6 ← phi( processChars::@3/(byte) processChars::i#8 ) (byte) processChars::bitmask#2 ← phi( processChars::@3/(byte) processChars::bitmask#6 ) *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#2 to:processChars::@5 processChars::@8: scope:[processChars] from processChars::@3 + (byte) processChars::numActive#10 ← phi( processChars::@3/(byte) processChars::numActive#11 ) (struct ProcessingSprite*) processChars::processing#8 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 ) (word) processChars::xpos#4 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#8 ← phi( processChars::@3/(byte) processChars::i#9 ) + (byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#8 ) (byte) processChars::bitmask#3 ← phi( processChars::@3/(byte) processChars::bitmask#6 ) - (number~) processChars::$11 ← (number) $ff ^ (byte) processChars::bitmask#3 - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$11 + (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$13 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 + (byte) processChars::numActive#8 ← phi( processChars::@4/(byte) processChars::numActive#9 processChars::@8/(byte) processChars::numActive#10 ) (byte) processChars::bitmask#7 ← phi( processChars::@4/(byte) processChars::bitmask#2 processChars::@8/(byte) processChars::bitmask#3 ) (struct ProcessingSprite*) processChars::processing#4 ← phi( processChars::@4/(struct ProcessingSprite*) processChars::processing#7 processChars::@8/(struct ProcessingSprite*) processChars::processing#8 ) (word) processChars::xpos#1 ← phi( processChars::@4/(word) processChars::xpos#3 processChars::@8/(word) processChars::xpos#4 ) - (byte) processChars::i#4 ← phi( processChars::@4/(byte) processChars::i#7 processChars::@8/(byte) processChars::i#8 ) - (number~) processChars::$12 ← (byte) processChars::i#4 * (number) 2 - (byte~) processChars::$13 ← ((byte)) (word) processChars::xpos#1 - *((byte*) SPRITES_XPOS#0 + (number~) processChars::$12) ← (byte~) processChars::$13 + (byte) processChars::i#4 ← phi( processChars::@4/(byte) processChars::i#6 processChars::@8/(byte) processChars::i#7 ) + (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 + (byte~) processChars::$15 ← ((byte)) (word) processChars::xpos#1 + *((byte*) SPRITES_XPOS#0 + (number~) processChars::$14) ← (byte~) processChars::$15 (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word~) processChars::$14 ← *((word*) processChars::$47) >> (number) 4 - (byte~) processChars::$15 ← ((byte)) (word~) processChars::$14 - (byte) processChars::ypos#0 ← (byte~) processChars::$15 - (number~) processChars::$16 ← (byte) processChars::i#4 * (number) 2 - *((byte*) SPRITES_YPOS#0 + (number~) processChars::$16) ← (byte) processChars::ypos#0 + (word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4 + (byte~) processChars::$17 ← ((byte)) (word~) processChars::$16 + (byte) processChars::ypos#0 ← (byte~) processChars::$17 + (number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2 + *((byte*) SPRITES_YPOS#0 + (number~) processChars::$18) ← (byte) processChars::ypos#0 (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (bool~) processChars::$17 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 + (bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (bool~) processChars::$18 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 - (bool~) processChars::$19 ← (bool~) processChars::$17 || (bool~) processChars::$18 - (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (bool~) processChars::$20 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 + (bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 - (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (bool~) processChars::$22 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 + (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22 - if((bool~) processChars::$23) goto processChars::@6 + (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 + (bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24 + if((bool~) processChars::$25) goto processChars::@6 to:processChars::@10 processChars::@6: scope:[processChars] from processChars::@5 - (byte) processChars::i#6 ← phi( processChars::@5/(byte) processChars::i#4 ) + (byte) processChars::i#10 ← phi( processChars::@5/(byte) processChars::i#4 ) + (byte) processChars::numActive#5 ← phi( processChars::@5/(byte) processChars::numActive#8 ) (byte) processChars::bitmask#4 ← phi( processChars::@5/(byte) processChars::bitmask#7 ) (struct ProcessingSprite*) processChars::processing#5 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS *((byte*) processChars::$52) ← (byte) STATUS_FREE#0 (number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4 *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) & (number~) processChars::$34 - to:processChars::@2 + to:processChars::@7 processChars::@10: scope:[processChars] from processChars::@5 - (byte) processChars::i#5 ← phi( processChars::@5/(byte) processChars::i#4 ) + (byte) processChars::i#9 ← phi( processChars::@5/(byte) processChars::i#4 ) + (byte) processChars::numActive#4 ← phi( processChars::@5/(byte) processChars::numActive#8 ) (byte) processChars::ypos#1 ← phi( processChars::@5/(byte) processChars::ypos#0 ) (struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) (word) processChars::xpos#2 ← phi( processChars::@5/(word) processChars::xpos#1 ) - (number~) processChars::$24 ← (word) processChars::xpos#2 / (number) 8 - (byte~) processChars::$25 ← ((byte)) (number~) processChars::$24 - (number~) processChars::$26 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 - (number~) processChars::$27 ← (byte~) processChars::$25 - (number~) processChars::$26 - (byte) processChars::xchar#0 ← (number~) processChars::$27 + (number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8 + (byte~) processChars::$27 ← ((byte)) (number~) processChars::$26 + (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 + (number~) processChars::$29 ← (byte~) processChars::$27 - (number~) processChars::$28 + (byte) processChars::xchar#0 ← (number~) processChars::$29 (byte~) processChars::$37 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - (word~) processChars::$28 ← *((word*) processChars::$53) + *((word*) VXSIN#0 + (byte~) processChars::$37) (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) processChars::$54) ← (word~) processChars::$28 + *((word*) processChars::$54) ← *((word*) processChars::$53) + *((word*) VXSIN#0 + (byte~) processChars::$37) (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) - (number~) processChars::$29 ← (byte) processChars::ypos#1 / (number) 8 - (byte~) processChars::$30 ← ((byte)) (number~) processChars::$29 - (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 - (number~) processChars::$32 ← (byte~) processChars::$30 - (number~) processChars::$31 - (byte) processChars::ychar#0 ← (number~) processChars::$32 + (number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8 + (byte~) processChars::$31 ← ((byte)) (number~) processChars::$30 + (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 + (number~) processChars::$33 ← (byte~) processChars::$31 - (number~) processChars::$32 + (byte) processChars::ychar#0 ← (number~) processChars::$33 (byte~) processChars::$38 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - (word~) processChars::$33 ← *((word*) processChars::$58) + *((word*) VYSIN#0 + (byte~) processChars::$38) (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) processChars::$59) ← (word~) processChars::$33 + *((word*) processChars::$59) ← *((word*) processChars::$58) + *((word*) VYSIN#0 + (byte~) processChars::$38) (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) + to:processChars::@7 +processChars::@7: scope:[processChars] from processChars::@10 processChars::@6 + (byte) processChars::i#5 ← phi( processChars::@10/(byte) processChars::i#9 processChars::@6/(byte) processChars::i#10 ) + (byte) processChars::numActive#2 ← phi( processChars::@10/(byte) processChars::numActive#4 processChars::@6/(byte) processChars::numActive#5 ) + (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#2 to:processChars::@2 -processChars::@return: scope:[processChars] from processChars::@2 +processChars::@14: scope:[processChars] from processChars::@2 + (byte) processChars::numActive#3 ← phi( processChars::@2/(byte) processChars::numActive#6 ) + (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 + (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 + *((byte*~) processChars::$0) ← (byte~) processChars::$1 + to:processChars::@return +processChars::@return: scope:[processChars] from processChars::@14 return to:@return @13: scope:[] from @12 @@ -1439,41 +1459,41 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#5 (word) mul8u::return#6 (void()) processChars() -(number~) processChars::$0 -(struct ProcessingSprite*~) processChars::$1 -(byte~) processChars::$10 -(number~) processChars::$11 -(number~) processChars::$12 -(byte~) processChars::$13 -(word~) processChars::$14 +(byte*~) processChars::$0 +(byte~) processChars::$1 +(byte*~) processChars::$10 +(word~) processChars::$11 +(byte~) processChars::$12 +(number~) processChars::$13 +(number~) processChars::$14 (byte~) processChars::$15 -(number~) processChars::$16 -(bool~) processChars::$17 -(bool~) processChars::$18 +(word~) processChars::$16 +(byte~) processChars::$17 +(number~) processChars::$18 (bool~) processChars::$19 (number~) processChars::$2 (bool~) processChars::$20 (bool~) processChars::$21 (bool~) processChars::$22 (bool~) processChars::$23 -(number~) processChars::$24 -(byte~) processChars::$25 +(bool~) processChars::$24 +(bool~) processChars::$25 (number~) processChars::$26 -(number~) processChars::$27 -(word~) processChars::$28 +(byte~) processChars::$27 +(number~) processChars::$28 (number~) processChars::$29 -(bool~) processChars::$3 -(byte~) processChars::$30 -(number~) processChars::$31 +(struct ProcessingSprite*~) processChars::$3 +(number~) processChars::$30 +(byte~) processChars::$31 (number~) processChars::$32 -(word~) processChars::$33 +(number~) processChars::$33 (number~) processChars::$34 (bool~) processChars::$35 (byte~) processChars::$36 (byte~) processChars::$37 (byte~) processChars::$38 (byte*) processChars::$39 -(bool~) processChars::$4 +(number~) processChars::$4 (byte*) processChars::$40 (byte*) processChars::$41 (word*) processChars::$42 @@ -1500,18 +1520,20 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word*) processChars::$61 (word*) processChars::$62 (bool~) processChars::$63 -(byte*~) processChars::$7 -(byte*~) processChars::$8 -(word~) processChars::$9 +(bool~) processChars::$7 +(bool~) processChars::$8 +(byte*~) processChars::$9 (label) processChars::@1 (label) processChars::@10 (label) processChars::@12 (label) processChars::@13 +(label) processChars::@14 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 (label) processChars::@5 (label) processChars::@6 +(label) processChars::@7 (label) processChars::@8 (label) processChars::@return (byte) processChars::bitmask @@ -1528,6 +1550,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::i#1 (byte) processChars::i#10 (byte) processChars::i#11 +(byte) processChars::i#12 (byte) processChars::i#2 (byte) processChars::i#3 (byte) processChars::i#4 @@ -1536,6 +1559,21 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::i#7 (byte) processChars::i#8 (byte) processChars::i#9 +(byte) processChars::numActive +(byte) processChars::numActive#0 +(byte) processChars::numActive#1 +(byte) processChars::numActive#10 +(byte) processChars::numActive#11 +(byte) processChars::numActive#12 +(byte) processChars::numActive#13 +(byte) processChars::numActive#2 +(byte) processChars::numActive#3 +(byte) processChars::numActive#4 +(byte) processChars::numActive#5 +(byte) processChars::numActive#6 +(byte) processChars::numActive#7 +(byte) processChars::numActive#8 +(byte) processChars::numActive#9 (struct ProcessingSprite*) processChars::processing (struct ProcessingSprite*) processChars::processing#0 (struct ProcessingSprite*) processChars::processing#1 @@ -1594,23 +1632,25 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*~) startProcessing::$2 (byte~) startProcessing::$20 (number~) startProcessing::$21 -(bool~) startProcessing::$22 -(bool~) startProcessing::$23 +(word~) startProcessing::$22 +(number~) startProcessing::$23 (bool~) startProcessing::$24 (bool~) startProcessing::$25 (bool~) startProcessing::$26 -(byte~) startProcessing::$27 -(byte~) startProcessing::$28 -(word*) startProcessing::$29 +(bool~) startProcessing::$27 +(bool~) startProcessing::$28 +(byte~) startProcessing::$29 (byte*~) startProcessing::$3 -(word*) startProcessing::$30 +(byte~) startProcessing::$30 (word*) startProcessing::$31 (word*) startProcessing::$32 -(byte*) startProcessing::$33 -(byte*) startProcessing::$34 +(word*) startProcessing::$33 +(word*) startProcessing::$34 (byte*) startProcessing::$35 -(byte**) startProcessing::$36 +(byte*) startProcessing::$36 (byte*) startProcessing::$37 +(byte**) startProcessing::$38 +(byte*) startProcessing::$39 (word~) startProcessing::$4 (number~) startProcessing::$5 (byte*~) startProcessing::$6 @@ -1734,9 +1774,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::$23 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) startProcessing::$23 in (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff Adding number conversion cast (unumber) $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 @@ -1755,8 +1795,9 @@ 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 (unumber) $3c in *((word*) startProcessing::$31 + (byte~) startProcessing::$28) ← (number) $3c -Adding number conversion cast (unumber) $3c in *((word*) startProcessing::$32 + (byte~) startProcessing::$28) ← (number) $3c +Adding number conversion cast (unumber) 8 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8 +Adding number conversion cast (unumber) startProcessing::$21 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (unumber)(number) 8 +Adding number conversion cast (unumber) $3c in *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c Adding number conversion cast (unumber) 8 in (number~) $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 @@ -1765,31 +1806,33 @@ Adding number conversion cast (unumber) 8 in (number~) $5 ← (byte) BORDER_YPOS Adding number conversion cast (unumber) $5 in (number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (unumber)(number) 8 Adding number conversion cast (unumber) 4 in (word~) $7 ← (word~) $6 << (number) 4 Adding number conversion cast (unumber) 4 in (word~) $9 ← (word~) $8 << (number) 4 -Adding number conversion cast (unumber) 1 in (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) processChars::$0 in (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (number) 1 << *((byte*) processChars::$39) -Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (unumber)(number) 1 << *((byte*) processChars::$39) -Adding number conversion cast (unumber) 4 in (word~) processChars::$9 ← *((word*) processChars::$42) >> (number) 4 -Adding number conversion cast (unumber) 0 in (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$10 -Adding number conversion cast (unumber) $ff in (number~) processChars::$11 ← (number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) processChars::$11 in (number~) processChars::$11 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) 2 in (number~) processChars::$12 ← (byte) processChars::i#4 * (number) 2 -Adding number conversion cast (unumber) processChars::$12 in (number~) processChars::$12 ← (byte) processChars::i#4 * (unumber)(number) 2 -Adding number conversion cast (unumber) 4 in (word~) processChars::$14 ← *((word*) processChars::$47) >> (number) 4 -Adding number conversion cast (unumber) 2 in (number~) processChars::$16 ← (byte) processChars::i#4 * (number) 2 -Adding number conversion cast (unumber) processChars::$16 in (number~) processChars::$16 ← (byte) processChars::i#4 * (unumber)(number) 2 +Adding number conversion cast (unumber) 0 in (byte) processChars::numActive#0 ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39) +Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (unumber)(number) 1 << *((byte*) processChars::$39) +Adding number conversion cast (unumber) 4 in (word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4 +Adding number conversion cast (unumber) 0 in (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12 +Adding number conversion cast (unumber) $ff in (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 +Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 +Adding number conversion cast (unumber) 2 in (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 +Adding number conversion cast (unumber) processChars::$14 in (number~) processChars::$14 ← (byte) processChars::i#4 * (unumber)(number) 2 +Adding number conversion cast (unumber) 4 in (word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4 +Adding number conversion cast (unumber) 2 in (number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2 +Adding number conversion cast (unumber) processChars::$18 in (number~) processChars::$18 ← (byte) processChars::i#4 * (unumber)(number) 2 Adding number conversion cast (unumber) $ff in (number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4 Adding number conversion cast (unumber) processChars::$34 in (number~) processChars::$34 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) 8 in (number~) processChars::$24 ← (word) processChars::xpos#2 / (number) 8 -Adding number conversion cast (unumber) processChars::$24 in (number~) processChars::$24 ← (word) processChars::xpos#2 / (unumber)(number) 8 -Adding number conversion cast (unumber) 8 in (number~) processChars::$26 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 -Adding number conversion cast (unumber) processChars::$26 in (number~) processChars::$26 ← (byte) BORDER_XPOS_LEFT#0 / (unumber)(number) 8 -Adding number conversion cast (unumber) processChars::$27 in (number~) processChars::$27 ← (byte~) processChars::$25 - (unumber~) processChars::$26 -Adding number conversion cast (unumber) 8 in (number~) processChars::$29 ← (byte) processChars::ypos#1 / (number) 8 -Adding number conversion cast (unumber) processChars::$29 in (number~) processChars::$29 ← (byte) processChars::ypos#1 / (unumber)(number) 8 -Adding number conversion cast (unumber) 8 in (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 -Adding number conversion cast (unumber) processChars::$31 in (number~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (unumber)(number) 8 -Adding number conversion cast (unumber) processChars::$32 in (number~) processChars::$32 ← (byte~) processChars::$30 - (unumber~) processChars::$31 +Adding number conversion cast (unumber) 8 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8 +Adding number conversion cast (unumber) processChars::$26 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (unumber)(number) 8 +Adding number conversion cast (unumber) 8 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8 +Adding number conversion cast (unumber) processChars::$28 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (unumber)(number) 8 +Adding number conversion cast (unumber) processChars::$29 in (number~) processChars::$29 ← (byte~) processChars::$27 - (unumber~) processChars::$28 +Adding number conversion cast (unumber) 8 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8 +Adding number conversion cast (unumber) processChars::$30 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (unumber)(number) 8 +Adding number conversion cast (unumber) 8 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8 +Adding number conversion cast (unumber) processChars::$32 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (unumber)(number) 8 +Adding number conversion cast (unumber) processChars::$33 in (number~) processChars::$33 ← (byte~) processChars::$31 - (unumber~) processChars::$32 +Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 Adding number conversion cast (unumber) $14 in (bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14 Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3 Adding number conversion cast (unumber) initSquareTables::$3 in (number~) initSquareTables::$3 ← (unumber)(number) $14 - (byte) initSquareTables::x#3 @@ -1876,16 +1919,17 @@ Inlining cast (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 Inlining cast (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#2 Inlining cast (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#2 Inlining cast (byte~) startProcessing::$19 ← (byte)(byte*~) startProcessing::$18 -Inlining cast *((word*) startProcessing::$31 + (byte~) startProcessing::$28) ← (unumber)(number) $3c -Inlining cast *((word*) startProcessing::$32 + (byte~) startProcessing::$28) ← (unumber)(number) $3c +Inlining cast (word~) startProcessing::$22 ← (word)(unumber~) startProcessing::$21 +Inlining cast *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (unumber)(number) $3c Inlining cast (word~) $1 ← (word)(unumber~) $0 Inlining cast (word~) $3 ← (word)(word) BORDER_XPOS_RIGHT#0 Inlining cast (word~) $6 ← (word)(unumber~) $5 Inlining cast (word~) $8 ← (word)(byte) BORDER_YPOS_BOTTOM#0 -Inlining cast (byte~) processChars::$13 ← (byte)(word) processChars::xpos#1 -Inlining cast (byte~) processChars::$15 ← (byte)(word~) processChars::$14 -Inlining cast (byte~) processChars::$25 ← (byte)(unumber~) processChars::$24 -Inlining cast (byte~) processChars::$30 ← (byte)(unumber~) processChars::$29 +Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0 +Inlining cast (byte~) processChars::$15 ← (byte)(word) processChars::xpos#1 +Inlining cast (byte~) processChars::$17 ← (byte)(word~) processChars::$16 +Inlining cast (byte~) processChars::$27 ← (byte)(unumber~) processChars::$26 +Inlining cast (byte~) processChars::$31 ← (byte)(unumber~) processChars::$30 Inlining cast *((byte*) initSprites::sp#2) ← (unumber)(number) 0 Inlining cast *((byte*) SPRITES_MC#0) ← (unumber)(number) 0 Inlining cast *((byte*) SPRITES_EXPAND_X#0) ← (unumber)(number) 0 @@ -1964,7 +2008,7 @@ Simplifying constant integer cast 4 Simplifying constant integer cast 8 Simplifying constant integer cast 4 Simplifying constant integer cast $40 -Simplifying constant integer cast $3c +Simplifying constant integer cast 8 Simplifying constant integer cast $3c Simplifying constant integer cast 8 Simplifying constant integer cast 4 @@ -1973,6 +2017,7 @@ Simplifying constant integer cast 4 Simplifying constant integer cast 8 Simplifying constant integer cast 4 Simplifying constant integer cast 4 +Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 4 @@ -1986,6 +2031,7 @@ Simplifying constant integer cast 8 Simplifying constant integer cast 8 Simplifying constant integer cast 8 Simplifying constant integer cast 8 +Simplifying constant integer cast $3e7 Simplifying constant integer cast $14 Simplifying constant integer cast $14 Simplifying constant integer cast $14 @@ -2051,7 +2097,7 @@ 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 unsigned number type (byte) $3c +Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) $3c Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 @@ -2059,6 +2105,7 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 @@ -2072,6 +2119,7 @@ Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 8 +Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $14 @@ -2092,7 +2140,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::$7 ← (byte) NUM_PROCESSING#0 - (byte) 1 Inferred type updated to word in (unumber~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28 -Inferred type updated to byte in (unumber~) startProcessing::$21 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) startProcessing::$23 ← (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 @@ -2102,20 +2150,21 @@ 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 byte in (unumber~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (byte) 8 Inferred type updated to byte in (unumber~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (byte) 8 Inferred type updated to byte in (unumber~) $5 ← (byte) BORDER_YPOS_TOP#0 - (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (byte) 1 -Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) 1 << *((byte*) processChars::$39) -Inferred type updated to byte in (unumber~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#3 -Inferred type updated to byte in (unumber~) processChars::$12 ← (byte) processChars::i#4 * (byte) 2 -Inferred type updated to byte in (unumber~) processChars::$16 ← (byte) processChars::i#4 * (byte) 2 +Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) processChars::$4 ← (byte) 1 << *((byte*) processChars::$39) +Inferred type updated to byte in (unumber~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#3 +Inferred type updated to byte in (unumber~) processChars::$14 ← (byte) processChars::i#4 * (byte) 2 +Inferred type updated to byte in (unumber~) processChars::$18 ← (byte) processChars::i#4 * (byte) 2 Inferred type updated to byte in (unumber~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#4 -Inferred type updated to word in (unumber~) processChars::$24 ← (word) processChars::xpos#2 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$26 ← (byte) BORDER_XPOS_LEFT#0 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$27 ← (byte~) processChars::$25 - (byte~) processChars::$26 -Inferred type updated to byte in (unumber~) processChars::$29 ← (byte) processChars::ypos#1 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$31 ← (byte) BORDER_YPOS_TOP#0 / (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$32 ← (byte~) processChars::$30 - (byte~) processChars::$31 +Inferred type updated to word in (unumber~) processChars::$26 ← (word) processChars::xpos#2 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$29 ← (byte~) processChars::$27 - (byte~) processChars::$28 +Inferred type updated to byte in (unumber~) processChars::$30 ← (byte) processChars::ypos#1 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (byte) 8 +Inferred type updated to byte in (unumber~) processChars::$33 ← (byte~) processChars::$31 - (byte~) processChars::$32 Inferred type updated to byte in (unumber~) initSquareTables::$3 ← (byte) $14 - (byte) initSquareTables::x#3 Inferred type updated to byte in (unumber~) initSquareTables::$4 ← (byte~) initSquareTables::$3 Inferred type updated to byte in (unumber~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (byte) $14 @@ -2132,9 +2181,9 @@ Inversing boolean not [114] (bool~) main::$11 ← (word) main::center_dist#0 != Inversing boolean not [137] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [136] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' Inversing boolean not [149] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [148] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 Inversing boolean not [162] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [161] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 -Inversing boolean not [188] (bool~) startProcessing::$23 ← *((byte*) startProcessing::$37 + (byte~) startProcessing::$27) != (byte) STATUS_FREE#0 from [187] (bool~) startProcessing::$22 ← *((byte*) startProcessing::$37 + (byte~) startProcessing::$27) == (byte) STATUS_FREE#0 -Inversing boolean not [287] (bool~) processChars::$4 ← *((byte*) processChars::$40) == (byte) STATUS_FREE#0 from [286] (bool~) processChars::$3 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 -Inversing boolean not [296] (bool~) processChars::$6 ← *((byte*) processChars::$41) != (byte) STATUS_NEW#0 from [295] (bool~) processChars::$5 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 +Inversing boolean not [188] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) != (byte) STATUS_FREE#0 from [187] (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0 +Inversing boolean not [290] (bool~) processChars::$6 ← *((byte*) processChars::$40) == (byte) STATUS_FREE#0 from [289] (bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0 +Inversing boolean not [299] (bool~) processChars::$8 ← *((byte*) processChars::$41) != (byte) STATUS_NEW#0 from [298] (bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0 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 @@ -2187,20 +2236,24 @@ Alias (word) BORDER_XPOS_RIGHT#0 = (word~) $3 Alias (word) XPOS_RIGHTMOST#0 = (word~) $4 Alias (word) YPOS_TOPMOST#0 = (word~) $7 Alias (word) YPOS_BOTTOMMOST#0 = (word~) $9 -Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$1 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3 -Alias (byte) processChars::bitmask#0 = (byte~) processChars::$2 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1 -Alias (byte) processChars::i#10 = (byte) processChars::i#2 (byte) processChars::i#11 -Alias (word) processChars::xpos#0 = (word~) processChars::$9 (word) processChars::xpos#3 (word) processChars::xpos#4 +Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$3 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3 +Alias (byte) processChars::bitmask#0 = (byte~) processChars::$4 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1 +Alias (byte) processChars::i#11 = (byte) processChars::i#2 (byte) processChars::i#12 +Alias (byte) processChars::numActive#12 = (byte) processChars::numActive#7 (byte) processChars::numActive#13 +Alias (word) processChars::xpos#0 = (word~) processChars::$11 (word) processChars::xpos#3 (word) processChars::xpos#4 Alias (byte) processChars::bitmask#2 = (byte) processChars::bitmask#6 (byte) processChars::bitmask#3 -Alias (byte) processChars::i#7 = (byte) processChars::i#9 (byte) processChars::i#8 +Alias (byte) processChars::i#6 = (byte) processChars::i#8 (byte) processChars::i#7 Alias (struct ProcessingSprite*) processChars::processing#2 = (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8 -Alias (byte) processChars::ypos#0 = (byte~) processChars::$15 (byte) processChars::ypos#1 +Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#9 (byte) processChars::numActive#11 +Alias (byte) processChars::ypos#0 = (byte~) processChars::$17 (byte) processChars::ypos#1 Alias (struct ProcessingSprite*) processChars::processing#4 = (struct ProcessingSprite*) processChars::processing#5 (struct ProcessingSprite*) processChars::processing#6 Alias (byte) processChars::bitmask#4 = (byte) processChars::bitmask#7 -Alias (byte) processChars::i#4 = (byte) processChars::i#6 (byte) processChars::i#5 +Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#8 +Alias (byte) processChars::i#10 = (byte) processChars::i#4 (byte) processChars::i#9 Alias (word) processChars::xpos#1 = (word) processChars::xpos#2 -Alias (byte) processChars::xchar#0 = (byte~) processChars::$27 -Alias (byte) processChars::ychar#0 = (byte~) processChars::$32 +Alias (byte) processChars::xchar#0 = (byte~) processChars::$29 +Alias (byte) processChars::ychar#0 = (byte~) processChars::$33 +Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#3 (byte) initSquareTables::x#4 Alias (byte~) initSquareTables::$4 = (byte~) initSquareTables::$3 Alias (byte~) initSquareTables::$2 = (byte~) initSquareTables::$1 @@ -2230,7 +2283,8 @@ Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#5 Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#5 Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*) processChars::processing#2 (struct ProcessingSprite*) processChars::processing#4 Alias (byte) processChars::bitmask#0 = (byte) processChars::bitmask#2 (byte) processChars::bitmask#4 -Alias (byte) processChars::i#10 = (byte) processChars::i#7 (byte) processChars::i#4 +Alias (byte) processChars::i#10 = (byte) processChars::i#6 (byte) processChars::i#11 (byte) processChars::i#5 +Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#4 (byte) processChars::numActive#2 Alias (word) processChars::xpos#0 = (word) processChars::xpos#1 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#5 Alias (byte) initSquareTables::y#2 = (byte) initSquareTables::y#5 @@ -2271,7 +2325,7 @@ 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 [329] (byte~) processChars::$16 ← (byte) processChars::i#10 * (byte) 2 +Identified duplicate assignment right side [332] (byte~) processChars::$18 ← (byte) processChars::i#10 * (byte) 2 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) mul8u::$0 [34] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [39] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 @@ -2283,37 +2337,37 @@ Simple Condition (bool~) getCharToProcess::$7 [142] if((byte) getCharToProcess:: Simple Condition (bool~) getCharToProcess::$6 [150] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 Simple Condition (bool~) getCharToProcess::$8 [159] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 Simple Condition (bool~) getCharToProcess::$1 [163] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 -Simple Condition (bool~) startProcessing::$23 [189] if(*((byte*) startProcessing::$37 + (byte~) startProcessing::$27)!=(byte) STATUS_FREE#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$24 [193] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$21)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$25 [198] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) startProcessing::$26 [224] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 -Simple Condition (bool~) processChars::$4 [288] if(*((byte*) processChars::$40)==(byte) STATUS_FREE#0) goto processChars::@2 -Simple Condition (bool~) processChars::$35 [292] if((byte) processChars::i#1!=rangelast(0,processChars::$0)) goto processChars::@1 -Simple Condition (bool~) processChars::$6 [297] if(*((byte*) processChars::$41)!=(byte) STATUS_NEW#0) goto processChars::@3 -Simple Condition (bool~) processChars::$63 [304] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -Simple Condition (bool~) initSquareTables::$0 [383] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [402] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [406] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [425] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) initSprites::$2 [434] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 -Simple Condition (bool~) initSprites::$3 [440] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 -Simple Condition (bool~) setupRasterIrq::$0 [451] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$1 [468] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 -Simple Condition (bool~) irqTop::$2 [473] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 -Simple Condition (bool~) irqBottom::$2 [484] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 +Simple Condition (bool~) startProcessing::$25 [189] if(*((byte*) startProcessing::$39 + (byte~) startProcessing::$29)!=(byte) STATUS_FREE#0) goto startProcessing::@3 +Simple Condition (bool~) startProcessing::$26 [193] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 +Simple Condition (bool~) startProcessing::$27 [198] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 +Simple Condition (bool~) startProcessing::$28 [224] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 +Simple Condition (bool~) processChars::$6 [291] if(*((byte*) processChars::$40)==(byte) STATUS_FREE#0) goto processChars::@2 +Simple Condition (bool~) processChars::$35 [295] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 +Simple Condition (bool~) processChars::$8 [300] if(*((byte*) processChars::$41)!=(byte) STATUS_NEW#0) goto processChars::@3 +Simple Condition (bool~) processChars::$63 [307] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 +Simple Condition (bool~) initSquareTables::$0 [390] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 +Simple Condition (bool~) initSquareTables::$7 [409] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 +Simple Condition (bool~) initSquareTables::$8 [413] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 +Simple Condition (bool~) initSquareTables::$15 [432] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 +Simple Condition (bool~) initSprites::$2 [441] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 +Simple Condition (bool~) initSprites::$3 [447] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 +Simple Condition (bool~) setupRasterIrq::$0 [458] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +Simple Condition (bool~) irqTop::$1 [475] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 +Simple Condition (bool~) irqTop::$2 [480] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 +Simple Condition (bool~) irqBottom::$2 [491] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Rewriting || if()-condition to two if()s [344] (bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24 +Successful SSA optimization Pass2ConditionalAndOrRewriting Rewriting || if()-condition to two if()s [341] (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22 Successful SSA optimization Pass2ConditionalAndOrRewriting Rewriting || if()-condition to two if()s [338] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 Successful SSA optimization Pass2ConditionalAndOrRewriting -Rewriting || if()-condition to two if()s [335] (bool~) processChars::$19 ← (bool~) processChars::$17 || (bool~) processChars::$18 -Successful SSA optimization Pass2ConditionalAndOrRewriting Constant right-side identified [57] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } Constant right-side identified [98] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() -Constant right-side identified [378] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [379] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [475] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [487] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [385] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } +Constant right-side identified [386] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } +Constant right-side identified [482] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() +Constant right-side identified [494] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) PROCPORT_DDR#0 = (byte*) 0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -2364,6 +2418,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 byte) processChars::numActive#0 = 0 Constant (const byte) processChars::i#0 = 0 Constant (const word[$28]) SQUARES_X#0 = { fill( $28, 0) } Constant (const word[$19]) SQUARES_Y#0 = { fill( $19, 0) } @@ -2386,11 +2441,11 @@ Constant (const byte*) getCharToProcess::screen_line#0 = SCREEN_COPY#0 Constant (const byte*) initSprites::sp#0 = SPRITE_DATA#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified { fill( NUM_PROCESSING#0, 0) } in [63] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } -Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [271] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 +Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [273] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0 Successful SSA optimization Pass2ConstantValues if() condition always true - replacing block destination [121] if(true) goto main::@5 if() condition always true - replacing block destination [126] if(true) goto main::@11 -if() condition always true - replacing block destination [451] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always true - replacing block destination [458] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [140] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ Resolved ranged comparison value [142] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 @@ -2398,86 +2453,86 @@ Resolved ranged next value [157] getCharToProcess::y#1 ← ++ getCharToProcess:: Resolved ranged comparison value [159] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 Resolved ranged next value [222] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ Resolved ranged comparison value [224] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 -Resolved ranged next value [400] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [402] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [423] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [425] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [438] initSprites::i#1 ← ++ initSprites::i#2 to ++ -Resolved ranged comparison value [440] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 -Resolved ranged next value [466] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [468] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 -Resolved ranged next value [471] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [473] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 -Resolved ranged next value [482] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [484] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 +Resolved ranged next value [407] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ +Resolved ranged comparison value [409] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 +Resolved ranged next value [430] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ +Resolved ranged comparison value [432] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 +Resolved ranged next value [445] initSprites::i#1 ← ++ initSprites::i#2 to ++ +Resolved ranged comparison value [447] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 +Resolved ranged next value [473] irqTop::i#1 ← ++ irqTop::i#2 to ++ +Resolved ranged comparison value [475] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 +Resolved ranged next value [478] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ +Resolved ranged comparison value [480] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 +Resolved ranged next value [489] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ +Resolved ranged comparison value [491] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 Converting *(pointer+n) to pointer[n] [173] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) Converting *(pointer+n) to pointer[n] [210] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) -Converting *(pointer+n) to pointer[n] [283] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$39) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [288] if(*((byte*) processChars::$40)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [297] if(*((byte*) processChars::$41)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [300] (word) processChars::xpos#0 ← *((word*) processChars::$42) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [307] *(*((byte**) processChars::$43)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) -Converting *(pointer+n) to pointer[n] [311] (byte*~) processChars::$8 ← (byte*~) processChars::$7 + *((byte*) processChars::$44) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [313] *((byte*~) processChars::$8) ← *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -Converting *(pointer+n) to pointer[n] [313] *((byte*~) processChars::$8) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$7 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) -Converting *(pointer+n) to pointer[n] [315] *((byte*) processChars::$46) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [326] (word~) processChars::$14 ← *((word*) processChars::$47) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [332] (bool~) processChars::$17 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [334] (bool~) processChars::$18 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [337] (bool~) processChars::$20 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [340] (bool~) processChars::$22 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [345] *((byte*) processChars::$52) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [356] (word~) processChars::$28 ← *((word*) processChars::$53) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [358] *((word*) processChars::$54) ← (word~) processChars::$28 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [362] *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [362] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [362] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [370] (word~) processChars::$33 ← *((word*) processChars::$58) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [372] *((word*) processChars::$59) ← (word~) processChars::$33 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [376] *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [376] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [376] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [286] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$39) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [291] if(*((byte*) processChars::$40)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [300] if(*((byte*) processChars::$41)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [303] (word) processChars::xpos#0 ← *((word*) processChars::$42) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [310] *(*((byte**) processChars::$43)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) +Converting *(pointer+n) to pointer[n] [314] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) +Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) +Converting *(pointer+n) to pointer[n] [318] *((byte*) processChars::$46) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [329] (word~) processChars::$16 ← *((word*) processChars::$47) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [335] (bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [337] (bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [340] (bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [343] (bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [348] *((byte*) processChars::$52) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) +Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*) processChars::$53) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) +Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*) processChars::$58) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) +Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) Successful SSA optimization Pass2InlineDerefIdx Simplifying expression containing zero (word*)PROCESSING#0 in [78] (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)PROCESSING#0 in [243] (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 [299] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [300] (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 [331] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [332] (bool~) processChars::$17 ← *((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 [333] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [334] (bool~) processChars::$18 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) > (word) XPOS_RIGHTMOST#0 -Simplifying expression containing zero (word*)processChars::processing#0 in [359] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [361] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [362] *((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 [362] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Simplifying expression containing zero (word*)PROCESSING#0 in [245] (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [302] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [303] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) >> (byte) 4 +Simplifying expression containing zero (word*)processChars::processing#0 in [334] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [335] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 +Simplifying expression containing zero (word*)processChars::processing#0 in [336] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [337] (bool~) processChars::$20 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) > (word) XPOS_RIGHTMOST#0 +Simplifying expression containing zero (word*)processChars::processing#0 in [361] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [363] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X +Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) +Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (word) startProcessing::center_dist#0 and assignment [51] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [75] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 -Eliminating unused variable (byte*) processChars::$39 and assignment [153] (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*) processChars::$40 and assignment [155] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (byte*) processChars::$41 and assignment [159] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$42 and assignment [161] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (byte**) processChars::$43 and assignment [165] (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Eliminating unused variable (byte*) processChars::$44 and assignment [169] (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*~) processChars::$8 and assignment [170] (byte*~) processChars::$8 ← (byte*~) processChars::$7 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Eliminating unused variable (byte*) processChars::$45 and assignment [171] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Eliminating unused variable (byte*) processChars::$46 and assignment [173] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$47 and assignment [181] (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$48 and assignment [186] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$49 and assignment [188] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$50 and assignment [190] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$51 and assignment [192] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (byte*) processChars::$52 and assignment [195] (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$53 and assignment [204] (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$54 and assignment [206] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$55 and assignment [208] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$56 and assignment [209] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$57 and assignment [210] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$58 and assignment [217] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$59 and assignment [219] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$60 and assignment [221] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$61 and assignment [222] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$62 and assignment [223] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$39 and assignment [155] (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*) processChars::$40 and assignment [157] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (byte*) processChars::$41 and assignment [162] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$42 and assignment [164] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (byte**) processChars::$43 and assignment [168] (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR +Eliminating unused variable (byte*) processChars::$44 and assignment [172] (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID +Eliminating unused variable (byte*~) processChars::$10 and assignment [173] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) +Eliminating unused variable (byte*) processChars::$45 and assignment [174] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR +Eliminating unused variable (byte*) processChars::$46 and assignment [176] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$47 and assignment [184] (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$48 and assignment [189] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$49 and assignment [191] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$50 and assignment [193] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$51 and assignment [195] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (byte*) processChars::$52 and assignment [198] (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS +Eliminating unused variable (word*) processChars::$53 and assignment [207] (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$54 and assignment [208] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$55 and assignment [210] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$56 and assignment [211] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX +Eliminating unused variable (word*) processChars::$57 and assignment [212] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 +Eliminating unused variable (word*) processChars::$58 and assignment [219] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$59 and assignment [220] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$60 and assignment [222] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused variable (word*) processChars::$61 and assignment [223] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY +Eliminating unused variable (word*) processChars::$62 and assignment [224] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y Eliminating unused constant (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -2496,7 +2551,7 @@ Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast $28 Simplifying constant integer cast $19 Simplifying constant integer cast 8 -Simplifying constant integer cast (byte~) processChars::$29 +Simplifying constant integer cast (byte~) processChars::$30 Simplifying constant integer cast $28 Simplifying constant integer cast $19 Simplifying constant integer cast 8 @@ -2514,8 +2569,8 @@ Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) processChars::$16 = (byte~) processChars::$12 -Alias (byte~) processChars::$30 = (byte~) processChars::$29 +Alias (byte~) processChars::$18 = (byte~) processChars::$14 +Alias (byte~) processChars::$31 = (byte~) processChars::$30 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) getCharToProcess::y#2 Self Phi Eliminated (byte) startProcessing::center_y#8 @@ -2525,42 +2580,44 @@ 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::$17 [177] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$22 [271] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(word) YPOS_BOTTOMMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$20 [272] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_TOPMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$18 [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(word) XPOS_RIGHTMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$19 [180] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$24 [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(word) YPOS_BOTTOMMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$22 [277] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_TOPMOST#0) goto processChars::@6 +Simple Condition (bool~) processChars::$20 [278] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(word) XPOS_RIGHTMOST#0) goto processChars::@6 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [16] (byte*~) main::$5 ← (const byte*) SCREEN#0 + (word) $3e8 Constant right-side identified [18] (byte~) main::$7 ← (const byte) NUM_PROCESSING#0 - (byte) 1 Constant right-side identified [52] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e7 Constant right-side identified [54] (byte*~) main::$15 ← (const byte*) COLS#0 + (word) $3e7 -Constant right-side identified [76] (byte~) startProcessing::$21 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [76] (byte~) startProcessing::$23 ← (const byte) NUM_PROCESSING#0 - (byte) 1 Constant right-side identified [114] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40 -Constant right-side identified [135] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 -Constant right-side identified [138] (word) XPOS_RIGHTMOST#0 ← (const word) BORDER_XPOS_RIGHT#0 << (byte) 4 -Constant right-side identified [139] (byte~) $5 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 -Constant right-side identified [146] (byte~) processChars::$0 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [160] (byte*~) processChars::$7 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 -Constant right-side identified [183] (byte~) processChars::$26 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8 -Constant right-side identified [191] (byte~) processChars::$31 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8 -Constant right-side identified [230] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 -Constant right-side identified [246] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 +Constant right-side identified [137] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 +Constant right-side identified [140] (word) XPOS_RIGHTMOST#0 ← (const word) BORDER_XPOS_RIGHT#0 << (byte) 4 +Constant right-side identified [141] (byte~) $5 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 +Constant right-side identified [148] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [163] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 +Constant right-side identified [186] (byte~) processChars::$28 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8 +Constant right-side identified [193] (byte~) processChars::$32 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8 +Constant right-side identified [199] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [235] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 +Constant right-side identified [251] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 = { fill( NUM_PROCESSING#0, 0) } Constant (const byte*) main::$5 = SCREEN#0+$3e8 Constant (const byte) main::$7 = NUM_PROCESSING#0-1 Constant (const byte*) main::$4 = SCREEN#0+$3e7 Constant (const byte*) main::$15 = COLS#0+$3e7 -Constant (const byte) startProcessing::$21 = NUM_PROCESSING#0-1 +Constant (const byte) startProcessing::$23 = NUM_PROCESSING#0-1 Constant (const byte*) startProcessing::$18 = SPRITE_DATA#0/$40 Constant (const byte) $0 = BORDER_XPOS_LEFT#0-8 Constant (const word) XPOS_RIGHTMOST#0 = BORDER_XPOS_RIGHT#0<<4 Constant (const byte) $5 = BORDER_YPOS_TOP#0-8 Constant (const word) $8 = (word)BORDER_YPOS_BOTTOM#0 -Constant (const byte) processChars::$0 = NUM_PROCESSING#0-1 -Constant (const byte*) processChars::$7 = SCREEN#0+SPRITE_PTRS#0 -Constant (const byte) processChars::$26 = BORDER_XPOS_LEFT#0/8 -Constant (const byte) processChars::$31 = BORDER_YPOS_TOP#0/8 +Constant (const byte) processChars::$2 = NUM_PROCESSING#0-1 +Constant (const byte*) processChars::$9 = SCREEN#0+SPRITE_PTRS#0 +Constant (const byte) processChars::$28 = BORDER_XPOS_LEFT#0/8 +Constant (const byte) processChars::$32 = BORDER_YPOS_TOP#0/8 +Constant (const byte*) processChars::$0 = SCREEN#0+$3e7 Constant (const byte) initSprites::$0 = NUM_PROCESSING#0*$40 Constant (const byte) setupRasterIrq::$1 = =(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [115] (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 ) - [115] (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 ) - [115] (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 ) - [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [117] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [117] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [117] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [125] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [126] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [128] return + [130] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [142] return + [144] return to:@return initSprites: scope:[initSprites] from main::@3 - [143] phi() + [145] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [144] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [145] *((byte*) initSprites::sp#2) ← (byte) 0 - [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [147] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [146] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) + [147] *((byte*) initSprites::sp#2) ← (byte) 0 + [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [148] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [150] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) + [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 + [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 + [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [155] return + [157] return to:@return initSquareTables: scope:[initSquareTables] from main - [156] phi() + [158] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [157] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [159] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [160] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [163] call mul8u - [164] (word) mul8u::return#2 ← (word) mul8u::res#2 + [162] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [165] call mul8u + [166] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [170] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [172] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [173] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [176] call mul8u - [177] (word) mul8u::return#3 ← (word) mul8u::res#2 + [175] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [178] call mul8u + [179] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [183] return + [185] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [186] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [186] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [188] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [188] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [187] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [187] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [187] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [189] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [189] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [189] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [189] return + [191] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [193] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [195] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [196] phi() + [198] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [197] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [199] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [200] phi() - [201] call processChars + [202] phi() + [203] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [205] return + [207] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [206] phi() + [208] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [207] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 - [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 - [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 - [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 - [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 - [213] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [214] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 - to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@1 - [215] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 + [209] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) + [209] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 + [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 + [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 + [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 + [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 + [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) + [216] 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::@9 - [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [218] *((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) - [219] *((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::@9 - [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 - [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@3 - [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 - to:processChars::@5 -processChars::@5: scope:[processChars] from processChars::@4 processChars::@7 - [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 - [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 - [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 - [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 - [231] 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 - [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 - to:processChars::@12 -processChars::@12: scope:[processChars] from processChars::@13 - [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 +processChars::@10: scope:[processChars] from processChars::@1 + [217] 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::@12 - [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 +processChars::@11: scope:[processChars] from processChars::@10 + [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' + [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 + [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) + [221] *((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 + [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 + [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 + [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 to:processChars::@8 -processChars::@8: scope:[processChars] from processChars::@11 - [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 - [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 - [237] (byte) processChars::xchar#0 ← (byte~) processChars::$25 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 - [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 - [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) - [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 - [241] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 - [243] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 - [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 - [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) - [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 +processChars::@8: scope:[processChars] from processChars::@3 + [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 + to:processChars::@5 +processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 + [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 + [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 + [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 + [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 + [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 + [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 + to:processChars::@15 +processChars::@15: scope:[processChars] from processChars::@5 + [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 + to:processChars::@14 +processChars::@14: scope:[processChars] from processChars::@15 + [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 + to:processChars::@13 +processChars::@13: scope:[processChars] from processChars::@14 + [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 + to:processChars::@9 +processChars::@9: scope:[processChars] from processChars::@13 + [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 + [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 + [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 + [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 + [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) + [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 + [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 + [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 + [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + to:processChars::@7 +processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 + [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@6 processChars::@8 - [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 +processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 + [249] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + to:processChars::@12 +processChars::@12: scope:[processChars] from processChars::@2 + [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 + [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@2 - [250] return +processChars::@return: scope:[processChars] from processChars::@12 + [254] return to:@return -processChars::@6: scope:[processChars] from processChars::@11 processChars::@12 processChars::@13 processChars::@5 - [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 - to:processChars::@2 +processChars::@6: scope:[processChars] from processChars::@13 processChars::@14 processChars::@15 processChars::@5 + [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 + [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 + to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [255] phi() + [259] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [256] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [260] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 irqTop::@2 - [259] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) - [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 + [263] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 ) + [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 - [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@3 - [265] return + [269] return to:@return @@ -3628,16 +3703,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 22.0 (word) mul8u::return#3 22.0 (void()) processChars() -(byte~) processChars::$10 22.0 -(byte~) processChars::$11 22.0 +(byte~) processChars::$1 4.0 +(byte~) processChars::$12 22.0 (byte~) processChars::$13 22.0 -(word~) processChars::$14 11.0 -(byte~) processChars::$16 6.6000000000000005 -(word~) processChars::$24 11.0 -(byte~) processChars::$25 22.0 -(word~) processChars::$28 22.0 -(byte~) processChars::$30 22.0 -(word~) processChars::$33 22.0 +(byte~) processChars::$15 22.0 +(word~) processChars::$16 11.0 +(byte~) processChars::$18 6.6000000000000005 +(word~) processChars::$26 11.0 +(byte~) processChars::$27 22.0 +(byte~) processChars::$31 22.0 (byte~) processChars::$34 22.0 (byte~) processChars::$36 22.0 (byte~) processChars::$37 22.0 @@ -3650,8 +3724,12 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::i (byte) processChars::i#1 16.5 (byte) processChars::i#10 1.4666666666666666 +(byte) processChars::numActive +(byte) processChars::numActive#1 22.0 +(byte) processChars::numActive#10 0.7674418604651163 +(byte) processChars::numActive#3 11.666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 0.3055555555555556 +(struct ProcessingSprite*) processChars::processing#0 0.3235294117647059 (byte) processChars::xchar (byte) processChars::xchar#0 22.0 (word) processChars::xpos @@ -3659,7 +3737,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) processChars::ychar (byte) processChars::ychar#0 22.0 (byte) processChars::ypos -(byte) processChars::ypos#0 2.5384615384615383 +(byte) processChars::ypos#0 2.75 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (void()*) setupRasterIrq::irqRoutine (word) setupRasterIrq::raster @@ -3673,17 +3751,19 @@ 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.25 -(byte) startProcessing::$38 2002.0 -(byte) startProcessing::$39 2002.0 +(byte~) startProcessing::$21 2.0 +(word~) startProcessing::$22 0.5714285714285714 +(byte~) startProcessing::$29 2002.0 +(byte~) startProcessing::$30 2.25 (word~) startProcessing::$4 4.0 (byte) startProcessing::$40 2002.0 -(word) startProcessing::$42 4.0 -(word) startProcessing::$43 4.0 -(byte) startProcessing::$45 4.0 -(byte) startProcessing::$46 4.0 +(byte) startProcessing::$41 2002.0 +(byte) startProcessing::$42 2002.0 +(word) startProcessing::$44 4.0 +(word) startProcessing::$45 4.0 (byte) startProcessing::$47 4.0 +(byte) startProcessing::$48 4.0 +(byte) startProcessing::$49 4.0 (word~) startProcessing::$5 4.0 (word~) startProcessing::$7 4.0 (word~) startProcessing::$8 4.0 @@ -3700,7 +3780,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) startProcessing::chargenData#1 67.33333333333333 (byte*) startProcessing::chargenData#2 101.66666666666666 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 31.285714285714285 +(byte) startProcessing::freeIdx#2 29.90909090909092 (byte) startProcessing::freeIdx#6 22.444444444444443 (byte~) startProcessing::freeIdx#7 202.0 (byte~) startProcessing::freeIdx#8 202.0 @@ -3711,18 +3791,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) startProcessing::i1#1 151.5 (byte) startProcessing::i1#2 50.5 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 0.10526315789473684 +(byte*) startProcessing::screenPtr#0 0.1 (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.4 +(byte) startProcessing::spritePtr#0 0.3333333333333333 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 0.4 +(word) startProcessing::spriteX#0 0.3333333333333333 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 0.5714285714285714 +(word) startProcessing::spriteY#0 0.4444444444444444 Not consolidating phi with different size mul8u::mb#0 mul8u::b#1 Not consolidating phi with different size mul8u::mb#0 mul8u::b#0 @@ -3755,6 +3835,7 @@ Initial phi equivalence classes [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] [ irqBottom::i#2 irqBottom::i#1 ] [ processChars::i#10 processChars::i#1 ] +[ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] Added variable main::$25 to zero page equivalence class [ main::$25 ] @@ -3769,13 +3850,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::$38 to zero page equivalence class [ startProcessing::$38 ] -Added variable startProcessing::$39 to zero page equivalence class [ startProcessing::$39 ] Added variable startProcessing::$40 to zero page equivalence class [ startProcessing::$40 ] -Added variable startProcessing::$27 to zero page equivalence class [ startProcessing::$27 ] -Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ] +Added variable startProcessing::$41 to zero page equivalence class [ startProcessing::$41 ] Added variable startProcessing::$42 to zero page equivalence class [ startProcessing::$42 ] -Added variable startProcessing::$43 to zero page equivalence class [ startProcessing::$43 ] +Added variable startProcessing::$29 to zero page equivalence class [ startProcessing::$29 ] +Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ] +Added variable startProcessing::$44 to zero page equivalence class [ startProcessing::$44 ] +Added variable startProcessing::$45 to zero page equivalence class [ startProcessing::$45 ] Added variable startProcessing::$1 to zero page equivalence class [ startProcessing::$1 ] Added variable startProcessing::$2 to zero page equivalence class [ startProcessing::$2 ] Added variable startProcessing::screenPtr#0 to zero page equivalence class [ startProcessing::screenPtr#0 ] @@ -3793,10 +3874,12 @@ 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::$45 to zero page equivalence class [ startProcessing::$45 ] -Added variable startProcessing::$46 to zero page equivalence class [ startProcessing::$46 ] +Added variable startProcessing::$21 to zero page equivalence class [ startProcessing::$21 ] +Added variable startProcessing::$22 to zero page equivalence class [ startProcessing::$22 ] Added variable startProcessing::$47 to zero page equivalence class [ startProcessing::$47 ] -Added variable startProcessing::$28 to zero page equivalence class [ startProcessing::$28 ] +Added variable startProcessing::$48 to zero page equivalence class [ startProcessing::$48 ] +Added variable startProcessing::$49 to zero page equivalence class [ startProcessing::$49 ] +Added variable startProcessing::$30 to zero page equivalence class [ startProcessing::$30 ] Added variable 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 ] @@ -3818,21 +3901,20 @@ Added variable processChars::$36 to zero page equivalence class [ processChars:: Added variable processChars::processing#0 to zero page equivalence class [ processChars::processing#0 ] Added variable processChars::bitmask#0 to zero page equivalence class [ processChars::bitmask#0 ] Added variable processChars::xpos#0 to zero page equivalence class [ processChars::xpos#0 ] -Added variable processChars::$10 to zero page equivalence class [ processChars::$10 ] -Added variable processChars::$11 to zero page equivalence class [ processChars::$11 ] -Added variable processChars::$16 to zero page equivalence class [ processChars::$16 ] +Added variable processChars::$12 to zero page equivalence class [ processChars::$12 ] Added variable processChars::$13 to zero page equivalence class [ processChars::$13 ] -Added variable processChars::$14 to zero page equivalence class [ processChars::$14 ] +Added variable processChars::$18 to zero page equivalence class [ processChars::$18 ] +Added variable processChars::$15 to zero page equivalence class [ processChars::$15 ] +Added variable processChars::$16 to zero page equivalence class [ processChars::$16 ] Added variable processChars::ypos#0 to zero page equivalence class [ processChars::ypos#0 ] -Added variable processChars::$24 to zero page equivalence class [ processChars::$24 ] -Added variable processChars::$25 to zero page equivalence class [ processChars::$25 ] +Added variable processChars::$26 to zero page equivalence class [ processChars::$26 ] +Added variable processChars::$27 to zero page equivalence class [ processChars::$27 ] Added variable processChars::xchar#0 to zero page equivalence class [ processChars::xchar#0 ] Added variable processChars::$37 to zero page equivalence class [ processChars::$37 ] -Added variable processChars::$28 to zero page equivalence class [ processChars::$28 ] -Added variable processChars::$30 to zero page equivalence class [ processChars::$30 ] +Added variable processChars::$31 to zero page equivalence class [ processChars::$31 ] Added variable processChars::ychar#0 to zero page equivalence class [ processChars::ychar#0 ] Added variable processChars::$38 to zero page equivalence class [ processChars::$38 ] -Added variable processChars::$33 to zero page equivalence class [ processChars::$33 ] +Added variable processChars::$1 to zero page equivalence class [ processChars::$1 ] Added variable processChars::$34 to zero page equivalence class [ processChars::$34 ] Complete equivalence classes [ main::src#2 main::src#1 ] @@ -3863,6 +3945,7 @@ Complete equivalence classes [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] [ irqBottom::i#2 irqBottom::i#1 ] [ processChars::i#10 processChars::i#1 ] +[ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] [ main::$25 ] @@ -3877,13 +3960,13 @@ Complete equivalence classes [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] -[ startProcessing::$38 ] -[ startProcessing::$39 ] [ startProcessing::$40 ] -[ startProcessing::$27 ] -[ startProcessing::$0 ] +[ startProcessing::$41 ] [ startProcessing::$42 ] -[ startProcessing::$43 ] +[ startProcessing::$29 ] +[ startProcessing::$0 ] +[ startProcessing::$44 ] +[ startProcessing::$45 ] [ startProcessing::$1 ] [ startProcessing::$2 ] [ startProcessing::screenPtr#0 ] @@ -3901,10 +3984,12 @@ Complete equivalence classes [ startProcessing::$16 ] [ startProcessing::spriteY#0 ] [ startProcessing::spritePtr#0 ] -[ startProcessing::$45 ] -[ startProcessing::$46 ] +[ startProcessing::$21 ] +[ startProcessing::$22 ] [ startProcessing::$47 ] -[ startProcessing::$28 ] +[ startProcessing::$48 ] +[ startProcessing::$49 ] +[ startProcessing::$30 ] [ getCharToProcess::$13 ] [ getCharToProcess::$14 ] [ getCharToProcess::$9 ] @@ -3926,21 +4011,20 @@ Complete equivalence classes [ processChars::processing#0 ] [ processChars::bitmask#0 ] [ processChars::xpos#0 ] -[ processChars::$10 ] -[ processChars::$11 ] -[ processChars::$16 ] +[ processChars::$12 ] [ processChars::$13 ] -[ processChars::$14 ] +[ processChars::$18 ] +[ processChars::$15 ] +[ processChars::$16 ] [ processChars::ypos#0 ] -[ processChars::$24 ] -[ processChars::$25 ] +[ processChars::$26 ] +[ processChars::$27 ] [ processChars::xchar#0 ] [ processChars::$37 ] -[ processChars::$28 ] -[ processChars::$30 ] +[ processChars::$31 ] [ processChars::ychar#0 ] [ processChars::$38 ] -[ processChars::$33 ] +[ processChars::$1 ] [ processChars::$34 ] Allocated zp ZP_WORD:2 [ main::src#2 main::src#1 ] Allocated zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] @@ -3970,85 +4054,87 @@ Allocated zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] Allocated zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] Allocated zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] Allocated zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Allocated zp ZP_BYTE:40 [ irqTop::i#2 irqTop::i#1 ] -Allocated zp ZP_BYTE:41 [ irqTop::i1#2 irqTop::i1#1 ] -Allocated zp ZP_BYTE:42 [ main::$25 ] -Allocated zp ZP_BYTE:43 [ main::$26 ] -Allocated zp ZP_BYTE:44 [ main::$27 ] -Allocated zp ZP_BYTE:45 [ main::$16 ] -Allocated zp ZP_BYTE:46 [ getCharToProcess::return_x#0 ] -Allocated zp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] -Allocated zp ZP_WORD:48 [ getCharToProcess::return_dist#0 ] -Allocated zp ZP_BYTE:50 [ main::center_x#0 ] -Allocated zp ZP_BYTE:51 [ main::center_y#0 ] -Allocated zp ZP_WORD:52 [ main::center_dist#0 ] -Allocated zp ZP_BYTE:54 [ startProcessing::center_x#0 ] -Allocated zp ZP_BYTE:55 [ startProcessing::center_y#0 ] -Allocated zp ZP_BYTE:56 [ startProcessing::$38 ] -Allocated zp ZP_BYTE:57 [ startProcessing::$39 ] -Allocated zp ZP_BYTE:58 [ startProcessing::$40 ] -Allocated zp ZP_BYTE:59 [ startProcessing::$27 ] -Allocated zp ZP_WORD:60 [ startProcessing::$0 ] -Allocated zp ZP_WORD:62 [ startProcessing::$42 ] -Allocated zp ZP_WORD:64 [ startProcessing::$43 ] -Allocated zp ZP_WORD:66 [ startProcessing::$1 ] -Allocated zp ZP_WORD:68 [ startProcessing::$2 ] -Allocated zp ZP_WORD:70 [ startProcessing::screenPtr#0 ] -Allocated zp ZP_WORD:72 [ startProcessing::$4 ] -Allocated zp ZP_WORD:74 [ startProcessing::$5 ] -Allocated zp ZP_BYTE:76 [ startProcessing::ch#0 ] -Allocated zp ZP_WORD:77 [ startProcessing::$7 ] -Allocated zp ZP_WORD:79 [ startProcessing::$8 ] -Allocated zp ZP_WORD:81 [ startProcessing::$10 ] -Allocated zp ZP_WORD:83 [ startProcessing::$11 ] -Allocated zp ZP_WORD:85 [ startProcessing::$12 ] -Allocated zp ZP_WORD:87 [ startProcessing::spriteX#0 ] -Allocated zp ZP_WORD:89 [ startProcessing::$14 ] -Allocated zp ZP_WORD:91 [ startProcessing::$15 ] -Allocated zp ZP_WORD:93 [ startProcessing::$16 ] -Allocated zp ZP_WORD:95 [ startProcessing::spriteY#0 ] -Allocated zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] -Allocated zp ZP_BYTE:98 [ startProcessing::$45 ] -Allocated zp ZP_BYTE:99 [ startProcessing::$46 ] -Allocated zp ZP_BYTE:100 [ startProcessing::$47 ] -Allocated zp ZP_BYTE:101 [ startProcessing::$28 ] -Allocated zp ZP_BYTE:102 [ getCharToProcess::$13 ] -Allocated zp ZP_BYTE:103 [ getCharToProcess::$14 ] -Allocated zp ZP_WORD:104 [ getCharToProcess::$9 ] -Allocated zp ZP_WORD:106 [ getCharToProcess::$15 ] -Allocated zp ZP_WORD:108 [ getCharToProcess::$16 ] -Allocated zp ZP_WORD:110 [ getCharToProcess::$10 ] -Allocated zp ZP_WORD:112 [ getCharToProcess::$11 ] -Allocated zp ZP_WORD:114 [ mul8u::return#2 ] -Allocated zp ZP_WORD:116 [ initSquareTables::$6 ] -Allocated zp ZP_BYTE:118 [ initSquareTables::$16 ] -Allocated zp ZP_WORD:119 [ mul8u::return#3 ] -Allocated zp ZP_WORD:121 [ initSquareTables::$14 ] -Allocated zp ZP_BYTE:123 [ initSquareTables::$17 ] -Allocated zp ZP_BYTE:124 [ mul8u::$1 ] -Allocated zp ZP_BYTE:125 [ processChars::$64 ] -Allocated zp ZP_BYTE:126 [ processChars::$65 ] -Allocated zp ZP_BYTE:127 [ processChars::$66 ] -Allocated zp ZP_BYTE:128 [ processChars::$36 ] -Allocated zp ZP_WORD:129 [ processChars::processing#0 ] -Allocated zp ZP_BYTE:131 [ processChars::bitmask#0 ] -Allocated zp ZP_WORD:132 [ processChars::xpos#0 ] -Allocated zp ZP_BYTE:134 [ processChars::$10 ] -Allocated zp ZP_BYTE:135 [ processChars::$11 ] -Allocated zp ZP_BYTE:136 [ processChars::$16 ] -Allocated zp ZP_BYTE:137 [ processChars::$13 ] -Allocated zp ZP_WORD:138 [ processChars::$14 ] -Allocated zp ZP_BYTE:140 [ processChars::ypos#0 ] -Allocated zp ZP_WORD:141 [ processChars::$24 ] -Allocated zp ZP_BYTE:143 [ processChars::$25 ] -Allocated zp ZP_BYTE:144 [ processChars::xchar#0 ] -Allocated zp ZP_BYTE:145 [ processChars::$37 ] -Allocated zp ZP_WORD:146 [ processChars::$28 ] -Allocated zp ZP_BYTE:148 [ processChars::$30 ] -Allocated zp ZP_BYTE:149 [ processChars::ychar#0 ] -Allocated zp ZP_BYTE:150 [ processChars::$38 ] -Allocated zp ZP_WORD:151 [ processChars::$33 ] -Allocated zp ZP_BYTE:153 [ processChars::$34 ] +Allocated zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Allocated zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] +Allocated zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] +Allocated zp ZP_BYTE:43 [ main::$25 ] +Allocated zp ZP_BYTE:44 [ main::$26 ] +Allocated zp ZP_BYTE:45 [ main::$27 ] +Allocated zp ZP_BYTE:46 [ main::$16 ] +Allocated zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] +Allocated zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Allocated zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] +Allocated zp ZP_BYTE:51 [ main::center_x#0 ] +Allocated zp ZP_BYTE:52 [ main::center_y#0 ] +Allocated zp ZP_WORD:53 [ main::center_dist#0 ] +Allocated zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Allocated zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Allocated zp ZP_BYTE:57 [ startProcessing::$40 ] +Allocated zp ZP_BYTE:58 [ startProcessing::$41 ] +Allocated zp ZP_BYTE:59 [ startProcessing::$42 ] +Allocated zp ZP_BYTE:60 [ startProcessing::$29 ] +Allocated zp ZP_WORD:61 [ startProcessing::$0 ] +Allocated zp ZP_WORD:63 [ startProcessing::$44 ] +Allocated zp ZP_WORD:65 [ startProcessing::$45 ] +Allocated zp ZP_WORD:67 [ startProcessing::$1 ] +Allocated zp ZP_WORD:69 [ startProcessing::$2 ] +Allocated zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Allocated zp ZP_WORD:73 [ startProcessing::$4 ] +Allocated zp ZP_WORD:75 [ startProcessing::$5 ] +Allocated zp ZP_BYTE:77 [ startProcessing::ch#0 ] +Allocated zp ZP_WORD:78 [ startProcessing::$7 ] +Allocated zp ZP_WORD:80 [ startProcessing::$8 ] +Allocated zp ZP_WORD:82 [ startProcessing::$10 ] +Allocated zp ZP_WORD:84 [ startProcessing::$11 ] +Allocated zp ZP_WORD:86 [ startProcessing::$12 ] +Allocated zp ZP_WORD:88 [ startProcessing::spriteX#0 ] +Allocated zp ZP_WORD:90 [ startProcessing::$14 ] +Allocated zp ZP_WORD:92 [ startProcessing::$15 ] +Allocated zp ZP_WORD:94 [ startProcessing::$16 ] +Allocated zp ZP_WORD:96 [ startProcessing::spriteY#0 ] +Allocated zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Allocated zp ZP_BYTE:99 [ startProcessing::$21 ] +Allocated zp ZP_WORD:100 [ startProcessing::$22 ] +Allocated zp ZP_BYTE:102 [ startProcessing::$47 ] +Allocated zp ZP_BYTE:103 [ startProcessing::$48 ] +Allocated zp ZP_BYTE:104 [ startProcessing::$49 ] +Allocated zp ZP_BYTE:105 [ startProcessing::$30 ] +Allocated zp ZP_BYTE:106 [ getCharToProcess::$13 ] +Allocated zp ZP_BYTE:107 [ getCharToProcess::$14 ] +Allocated zp ZP_WORD:108 [ getCharToProcess::$9 ] +Allocated zp ZP_WORD:110 [ getCharToProcess::$15 ] +Allocated zp ZP_WORD:112 [ getCharToProcess::$16 ] +Allocated zp ZP_WORD:114 [ getCharToProcess::$10 ] +Allocated zp ZP_WORD:116 [ getCharToProcess::$11 ] +Allocated zp ZP_WORD:118 [ mul8u::return#2 ] +Allocated zp ZP_WORD:120 [ initSquareTables::$6 ] +Allocated zp ZP_BYTE:122 [ initSquareTables::$16 ] +Allocated zp ZP_WORD:123 [ mul8u::return#3 ] +Allocated zp ZP_WORD:125 [ initSquareTables::$14 ] +Allocated zp ZP_BYTE:127 [ initSquareTables::$17 ] +Allocated zp ZP_BYTE:128 [ mul8u::$1 ] +Allocated zp ZP_BYTE:129 [ processChars::$64 ] +Allocated zp ZP_BYTE:130 [ processChars::$65 ] +Allocated zp ZP_BYTE:131 [ processChars::$66 ] +Allocated zp ZP_BYTE:132 [ processChars::$36 ] +Allocated zp ZP_WORD:133 [ processChars::processing#0 ] +Allocated zp ZP_BYTE:135 [ processChars::bitmask#0 ] +Allocated zp ZP_WORD:136 [ processChars::xpos#0 ] +Allocated zp ZP_BYTE:138 [ processChars::$12 ] +Allocated zp ZP_BYTE:139 [ processChars::$13 ] +Allocated zp ZP_BYTE:140 [ processChars::$18 ] +Allocated zp ZP_BYTE:141 [ processChars::$15 ] +Allocated zp ZP_WORD:142 [ processChars::$16 ] +Allocated zp ZP_BYTE:144 [ processChars::ypos#0 ] +Allocated zp ZP_WORD:145 [ processChars::$26 ] +Allocated zp ZP_BYTE:147 [ processChars::$27 ] +Allocated zp ZP_BYTE:148 [ processChars::xchar#0 ] +Allocated zp ZP_BYTE:149 [ processChars::$37 ] +Allocated zp ZP_BYTE:150 [ processChars::$31 ] +Allocated zp ZP_BYTE:151 [ processChars::ychar#0 ] +Allocated zp ZP_BYTE:152 [ processChars::$38 ] +Allocated zp ZP_BYTE:153 [ processChars::$1 ] +Allocated zp ZP_BYTE:154 [ processChars::$34 ] INITIAL ASM //SEG0 File Comments @@ -4154,18 +4240,18 @@ bend_from_b2: bend: //SEG13 main main: { - .label _16 = $2d + .label _16 = $2e .label src = 2 .label dst = 4 .label i = 6 - .label center_x = $32 - .label center_y = $33 - .label center_dist = $34 - .label _25 = $2a - .label _26 = $2b - .label _27 = $2c + .label center_x = $33 + .label center_y = $34 + .label center_dist = $35 + .label _25 = $2b + .label _26 = $2c + .label _27 = $2d //SEG14 [7] call initSquareTables - //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] @@ -4297,7 +4383,7 @@ main: { //SEG47 main::@3 b3: //SEG48 [29] call initSprites - //SEG49 [143] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] @@ -4315,7 +4401,7 @@ main: { //SEG54 main::@4 b4: //SEG55 [33] call getCharToProcess - //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 @@ -4378,44 +4464,46 @@ main: { } //SEG74 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($36) center_x, byte zeropage($37) center_y) +// startProcessing(byte zeropage($37) center_x, byte zeropage($38) center_y) startProcessing: { - .label _0 = $3c - .label _1 = $42 - .label _2 = $44 - .label _4 = $48 - .label _5 = $4a - .label _7 = $4d - .label _8 = $4f - .label _10 = $51 - .label _11 = $53 - .label _12 = $55 - .label _14 = $59 - .label _15 = $5b - .label _16 = $5d - .label _27 = $3b - .label _28 = $65 - .label center_x = $36 - .label center_y = $37 + .label _0 = $3d + .label _1 = $43 + .label _2 = $45 + .label _4 = $49 + .label _5 = $4b + .label _7 = $4e + .label _8 = $50 + .label _10 = $52 + .label _11 = $54 + .label _12 = $56 + .label _14 = $5a + .label _15 = $5c + .label _16 = $5e + .label _21 = $63 + .label _22 = $64 + .label _29 = $3c + .label _30 = $69 + .label center_x = $37 + .label center_y = $38 .label i = 8 - .label screenPtr = $46 + .label screenPtr = $47 .label spriteData = $b - .label ch = $4c + .label ch = $4d .label chargenData = 9 .label i1 = $d - .label spriteX = $57 - .label spriteY = $5f - .label spritePtr = $61 + .label spriteX = $58 + .label spriteY = $60 + .label spritePtr = $62 .label freeIdx = 8 .label freeIdx_6 = 7 - .label _38 = $38 - .label _39 = $39 - .label _40 = $3a - .label _42 = $3e - .label _43 = $40 - .label _45 = $62 - .label _46 = $63 - .label _47 = $64 + .label _40 = $39 + .label _41 = $3a + .label _42 = $3b + .label _44 = $3f + .label _45 = $41 + .label _47 = $66 + .label _48 = $67 + .label _49 = $68 .label freeIdx_7 = 7 //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: @@ -4437,28 +4525,28 @@ startProcessing: { jmp b2 //SEG82 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _38 - //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _38 - clc - adc i - sta _39 - //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _39 - asl - asl sta _40 - //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda _40 clc adc i - sta _27 - //SEG87 [53] 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 _41 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _41 + asl + asl + sta _42 + //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _42 + clc + adc i + sta _29 + //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 lda #STATUS_FREE - ldy _27 + ldy _29 cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] @@ -4480,28 +4568,28 @@ startProcessing: { sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _42 + sta _44 lda _0+1 rol - sta _42+1 - asl _42 - rol _42+1 - //SEG95 [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 - lda _42 + sta _44+1 + asl _44 + rol _44+1 + //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 + lda _44 clc adc _0 - sta _43 - lda _42+1 + sta _45 + lda _44+1 adc _0+1 - sta _43+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _43 + sta _45+1 + //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _45 asl sta _1 - lda _43+1 + lda _45+1 rol sta _1+1 asl _1 @@ -4713,109 +4801,120 @@ startProcessing: { lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda freeIdx asl - sta _45 - //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _45 - clc - adc freeIdx - sta _46 - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _46 asl asl + sta _21 + //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuz2 + lda _21 + sta _22 + lda #0 + sta _22+1 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda freeIdx + asl sta _47 - //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 lda _47 clc adc freeIdx - sta _28 - //SEG138 [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _28 + sta _48 + //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _48 + asl + asl + sta _49 + //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _49 + clc + adc freeIdx + sta _30 + //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _30 lda spriteX sta PROCESSING,y lda spriteX+1 sta PROCESSING+1,y - //SEG139 [93] *((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 + //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _30 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2 - lda _28 - ldx #$3c - tay - txa + //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _30 + lda _22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2 - lda _28 + lda _22+1 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y + //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2 + lda _30 ldx #$3c tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y - //SEG142 [96] *((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 + //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda freeIdx - ldy _28 + ldy _30 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG143 [97] *((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 + //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda spritePtr - ldy _28 + ldy _30 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG144 [98] *((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 + //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_NEW - ldy _28 + ldy _30 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG145 [99] *((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 + //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 + ldy _30 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y jmp breturn - //SEG146 startProcessing::@return + //SEG148 startProcessing::@return breturn: - //SEG147 [100] return + //SEG149 [102] return rts - //SEG148 startProcessing::@8 + //SEG150 startProcessing::@8 b8: - //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda freeIdx sta freeIdx_7 - //SEG150 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG151 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG152 startProcessing::@3 + //SEG154 startProcessing::@3 b3: - //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG154 [103] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG156 [105] 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 - //SEG155 startProcessing::@9 + //SEG157 startProcessing::@9 b9: - //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda freeIdx_6 sta freeIdx jmp b4_from_b9 } -//SEG157 getCharToProcess +//SEG159 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 = $68 - .label _10 = $6e - .label _11 = $70 - .label _13 = $66 - .label _14 = $67 - .label return_x = $2e - .label return_y = $2f - .label return_dist = $30 + .label _9 = $6c + .label _10 = $72 + .label _11 = $74 + .label _13 = $6a + .label _14 = $6b + .label return_x = $2f + .label return_y = $30 + .label return_dist = $31 .label x = $11 .label dist = $16 .label screen_line = $e @@ -4826,64 +4925,64 @@ getCharToProcess: { .label closest_dist = $12 .label closest_x = $14 .label closest_y = $15 - .label _15 = $6a - .label _16 = $6c + .label _15 = $6e + .label _16 = $70 .label return_dist_5 = $16 .label return_dist_6 = $16 .label return_x_7 = $14 .label return_y_7 = $15 - //SEG158 [106] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG159 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG161 [106] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG163 [108] 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 - //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG163 [106] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG165 [108] 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 - //SEG164 getCharToProcess::@1 + //SEG166 getCharToProcess::@1 b1: - //SEG165 [107] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG166 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG167 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG168 [107] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG169 [107] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG170 getCharToProcess::@2 + //SEG172 getCharToProcess::@2 b2: - //SEG171 [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG173 [110] 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 - //SEG172 getCharToProcess::@4 + //SEG174 getCharToProcess::@4 b4: - //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _13 - //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _14 - //SEG175 [111] (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 + //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 ldx _13 ldy _14 lda SQUARES_X,x @@ -4893,7 +4992,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG176 [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG178 [114] 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 !+ @@ -4903,34 +5002,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG177 getCharToProcess::@5 + //SEG179 getCharToProcess::@5 b5: - //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x_7 - //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y_7 - //SEG180 [115] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG182 [117] 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: - //SEG181 [115] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG182 [115] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG183 [115] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG184 getCharToProcess::@3 + //SEG186 getCharToProcess::@3 b3: - //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG187 getCharToProcess::@6 + //SEG189 getCharToProcess::@6 b6: - //SEG188 [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -4938,16 +5037,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG191 getCharToProcess::@7 + //SEG193 getCharToProcess::@7 b7: - //SEG192 [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG194 [123] 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 - //SEG199 [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG201 [129] *((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 - //SEG200 getCharToProcess::@return + //SEG202 getCharToProcess::@return breturn: - //SEG201 [128] return + //SEG203 [130] return rts - //SEG202 getCharToProcess::@9 + //SEG204 getCharToProcess::@9 b9: - //SEG203 [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG205 [131] (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 - //SEG204 [106] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG205 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG206 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG207 [106] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG208 [106] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG209 [106] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG210 getCharToProcess::@10 + //SEG212 getCharToProcess::@10 b10: - //SEG211 [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG213 [132] (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 - //SEG212 [107] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG213 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG214 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG215 [107] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG216 [107] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG217 getCharToProcess::@12 + //SEG219 getCharToProcess::@12 b12: - //SEG218 [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [133] (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 - //SEG219 getCharToProcess::@11 + //SEG221 getCharToProcess::@11 b11: - //SEG220 [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG222 [134] (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 } -//SEG221 setupRasterIrq +//SEG223 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG222 asm { sei } + //SEG224 asm { sei } sei - //SEG223 [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG225 [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG227 [138] *((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 - //SEG226 setupRasterIrq::@1 + //SEG228 setupRasterIrq::@1 b1: - //SEG227 [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG229 [139] *((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 - //SEG228 setupRasterIrq::@2 + //SEG230 setupRasterIrq::@2 b2: - //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG232 asm { cli } + //SEG234 asm { cli } cli jmp breturn - //SEG233 setupRasterIrq::@return + //SEG235 setupRasterIrq::@return breturn: - //SEG234 [142] return + //SEG236 [144] return rts } -//SEG235 initSprites +//SEG237 initSprites // Initialize sprites initSprites: { .label sp = $18 .label i = $1a - //SEG236 [144] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG237 [144] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG239 [146] 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 - //SEG238 [144] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG239 [144] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG240 initSprites::@1 + //SEG242 initSprites::@1 b1: - //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG243 [147] 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 + //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -5141,281 +5240,281 @@ initSprites: { cmp #initSprites::@2] + //SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 + //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Initialize sprite registers - //SEG246 [148] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG247 [148] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG248 initSprites::@2 + //SEG250 initSprites::@2 b2: - //SEG249 [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG251 [151] *((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 - //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG251 [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG253 [153] 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 - //SEG252 initSprites::@3 + //SEG254 initSprites::@3 b3: - //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG256 initSprites::@return + //SEG258 initSprites::@return breturn: - //SEG257 [155] return + //SEG259 [157] return rts } -//SEG258 initSquareTables +//SEG260 initSquareTables // initialize SQUARES table initSquareTables: { .label _2 = $1c .label _4 = $1c - .label _6 = $74 + .label _6 = $78 .label _10 = $1e .label _12 = $1e - .label _14 = $79 - .label _16 = $76 - .label _17 = $7b + .label _14 = $7d + .label _16 = $7a + .label _17 = $7f .label x_dist = $1c .label x = $1b .label y_dist = $1e .label y = $1d - //SEG259 [157] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG260 [157] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG261 [157] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG262 [157] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG263 initSquareTables::@1 + //SEG265 initSquareTables::@1 b1: - //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG265 initSquareTables::@3 + //SEG267 initSquareTables::@3 b3: - //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 + //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 lax x axs #$14 stx _2 - //SEG267 [160] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG268 [160] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG269 initSquareTables::@4 + //SEG271 initSquareTables::@4 b4: - //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.a - //SEG271 [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.b - //SEG272 [163] call mul8u - //SEG273 [186] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG274 [165] call mul8u + //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG274 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG275 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 + //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG276 [164] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG278 [166] (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 - //SEG277 initSquareTables::@9 + //SEG279 initSquareTables::@9 b9: - //SEG278 [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _6 lda mul8u.return+1 sta _6+1 - //SEG279 [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _16 - //SEG280 [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG282 [169] *((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 - //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG283 [170] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG284 [170] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG285 [170] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG286 [170] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG287 initSquareTables::@5 + //SEG289 initSquareTables::@5 b5: - //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG289 initSquareTables::@7 + //SEG291 initSquareTables::@7 b7: - //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 + //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 lax y axs #$c stx _10 - //SEG291 [173] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG292 [173] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG293 initSquareTables::@8 + //SEG295 initSquareTables::@8 b8: - //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.a - //SEG295 [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.b_1 - //SEG296 [176] call mul8u - //SEG297 [186] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG298 [178] call mul8u + //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG298 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG299 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 + //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b_1 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG300 [177] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG302 [179] (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 - //SEG301 initSquareTables::@10 + //SEG303 initSquareTables::@10 b10: - //SEG302 [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _14 lda mul8u.return_3+1 sta _14+1 - //SEG303 [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _17 - //SEG304 [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG306 [182] *((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 - //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG306 [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [184] 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 - //SEG307 initSquareTables::@return + //SEG309 initSquareTables::@return breturn: - //SEG308 [183] return + //SEG310 [185] return rts - //SEG309 initSquareTables::@6 + //SEG311 initSquareTables::@6 b6: - //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c sec sbc y sta _12 jmp b8_from_b6 - //SEG311 initSquareTables::@2 + //SEG313 initSquareTables::@2 b2: - //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$14 sec sbc x sta _4 jmp b4_from_b2 } -//SEG313 mul8u +//SEG315 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 = $7c + .label _1 = $80 .label mb = $24 .label a = $21 .label res = $22 .label b = $20 - .label return = $72 + .label return = $76 .label b_1 = $1f - .label return_3 = $77 - //SEG314 [187] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label return_3 = $7b + //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG315 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG316 [187] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG318 mul8u::@1 + //SEG320 mul8u::@1 b1: - //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG320 mul8u::@return + //SEG322 mul8u::@return breturn: - //SEG321 [189] return + //SEG323 [191] return rts - //SEG322 mul8u::@2 + //SEG324 mul8u::@2 b2: - //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG325 mul8u::@4 + //SEG327 mul8u::@4 b4: - //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5423,80 +5522,80 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG327 [193] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG328 [193] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG329 mul8u::@3 + //SEG331 mul8u::@3 b3: - //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG332 [187] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG333 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG334 [187] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG335 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG336 irqBottom +//SEG338 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { .label i = $26 - //SEG337 entry interrupt(HARDWARE_ALL) + //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG338 [197] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG339 [197] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 + //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG340 [197] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG341 [197] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG342 irqBottom::@1 + //SEG344 irqBottom::@1 b1: - //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 + //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG344 [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 - //SEG345 [200] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] + //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] b2_from_b1: jmp b2 - //SEG346 irqBottom::@2 + //SEG348 irqBottom::@2 b2: - //SEG347 [201] call processChars - //SEG348 [206] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG349 [203] call processChars + //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG349 irqBottom::@3 + //SEG351 irqBottom::@3 b3: - //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [204] *((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 - //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG353 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG354 [205] return - exit interrupt(HARDWARE_ALL) + //SEG356 [207] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5505,65 +5604,69 @@ irqBottom: { ldy #00 rti } -//SEG355 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _10 = $86 - .label _11 = $87 - .label _13 = $89 - .label _14 = $8a - .label _16 = $88 - .label _24 = $8d - .label _25 = $8f - .label _28 = $92 - .label _30 = $94 - .label _33 = $97 - .label _34 = $99 - .label _36 = $80 - .label _37 = $91 - .label _38 = $96 - .label processing = $81 - .label bitmask = $83 + .label _1 = $99 + .label _12 = $8a + .label _13 = $8b + .label _15 = $8d + .label _16 = $8e + .label _18 = $8c + .label _26 = $91 + .label _27 = $93 + .label _31 = $96 + .label _34 = $9a + .label _36 = $84 + .label _37 = $95 + .label _38 = $98 + .label processing = $85 + .label bitmask = $87 .label i = $27 - .label xpos = $84 - .label ypos = $8c - .label xchar = $90 - .label ychar = $95 - .label _64 = $7d - .label _65 = $7e - .label _66 = $7f - //SEG356 [207] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label xpos = $88 + .label ypos = $90 + .label xchar = $94 + .label ychar = $97 + .label numActive = $28 + .label _64 = $81 + .label _65 = $82 + .label _66 = $83 + //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG357 [207] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + lda #0 + sta numActive + //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG358 [207] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG359 [207] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG360 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _64 - //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 lda _64 clc adc i sta _65 - //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda _65 asl asl sta _66 - //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 lda _66 clc adc i sta _36 - //SEG365 [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuz2 + //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuz2 lda _36 clc adc #PROCESSING adc #0 sta processing+1 - //SEG366 [213] (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 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -5584,23 +5687,23 @@ processChars: { bne !- !e: sta bitmask - //SEG367 [214] 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 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE - beq b2 - jmp b9 - //SEG368 processChars::@9 - b9: - //SEG369 [215] 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 + beq b2_from_b1 + jmp b10 + //SEG372 processChars::@10 + b10: + //SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 - jmp b10 - //SEG370 processChars::@10 - b10: - //SEG371 [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + jmp b11 + //SEG374 processChars::@11 + b11: + //SEG375 [218] *(*((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 @@ -5612,12 +5715,12 @@ processChars: { txa !: sta $ffff - //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [219] *((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 - //SEG373 [218] *((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 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -5627,15 +5730,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [221] *((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 - //SEG375 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -5650,62 +5753,62 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 + //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 lda xpos+1 - sta _10 - //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 + sta _12 + //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 // Set sprite position lda #0 - cmp _10 + cmp _12 bne b4 - jmp b7 - //SEG379 processChars::@7 - b7: - //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + jmp b8 + //SEG383 processChars::@8 + b8: + //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask - sta _11 - //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _13 + //SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB - and _11 + and _13 sta SPRITES_XMSB jmp b5 - //SEG382 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _16 - //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 + sta _18 + //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 lda xpos - sta _13 - //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _13 - ldy _16 + sta _15 + //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _15 + ldy _18 sta SPRITES_XPOS,y - //SEG386 [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _14 + sta _16 iny lda (processing),y - sta _14+1 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - //SEG387 [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 -- vbuz1=_byte_vwuz2 - lda _14 + sta _16+1 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 + lda _16 sta ypos - //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos - ldy _16 + ldy _18 sta SPRITES_YPOS,y - //SEG389 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [233] 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 @@ -5717,10 +5820,10 @@ processChars: { cmp #(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + jmp b15 + //SEG394 processChars::@15 + b15: + //SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -5731,10 +5834,10 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b12 - //SEG392 processChars::@12 - b12: - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + jmp b14 + //SEG396 processChars::@14 + b14: + //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -5746,10 +5849,10 @@ processChars: { cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + jmp b13 + //SEG398 processChars::@13 + b13: + //SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -5761,50 +5864,43 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b8 - //SEG396 processChars::@8 - b8: - //SEG397 [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 + jmp b9 + //SEG400 processChars::@9 + b9: + //SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 lda xpos+1 lsr - sta _24+1 + sta _26+1 lda xpos ror - sta _24 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - //SEG398 [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 -- vbuz1=_byte_vwuz2 - lda _24 - sta _25 - //SEG399 [237] (byte) processChars::xchar#0 ← (byte~) processChars::$25 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 - lax _25 + sta _26 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuz1=_byte_vwuz2 + lda _26 + sta _27 + //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + lax _27 axs #BORDER_XPOS_LEFT/8 stx xchar - //SEG400 [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda xchar asl sta _37 - //SEG401 [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz3 + //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 ldx _37 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX - lda (processing),y clc + lda (processing),y adc VXSIN,x - sta _28 + sta (processing),y iny lda (processing),y adc VXSIN+1,x - sta _28+1 - //SEG402 [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX - lda _28 sta (processing),y - iny - lda _28+1 - sta (processing),y - //SEG403 [241] *((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 + //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -5818,39 +5914,32 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG404 [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda ypos lsr lsr lsr - sta _30 - //SEG405 [243] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 - lax _30 + sta _31 + //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + lax _31 axs #BORDER_YPOS_TOP/8 stx ychar - //SEG406 [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda ychar asl sta _38 - //SEG407 [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz3 + //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 ldx _38 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY - lda (processing),y clc + lda (processing),y adc VYSIN,x - sta _33 + sta (processing),y iny lda (processing),y adc VYSIN+1,x - sta _33+1 - //SEG408 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY - lda _33 sta (processing),y - iny - lda _33+1 - sta (processing),y - //SEG409 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -5862,112 +5951,131 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y + jmp b7 + //SEG412 processChars::@7 + b7: + //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + inc numActive + //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + b2_from_b1: + b2_from_b7: + //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG410 processChars::@2 + //SEG416 processChars::@2 b2: - //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG412 [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 + jmp b12 + //SEG419 processChars::@12 + b12: + //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2 + lax numActive + axs #-['0'] + stx _1 + //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1 + lda _1 + sta SCREEN+$3e7 jmp breturn - //SEG413 processChars::@return + //SEG422 processChars::@return breturn: - //SEG414 [250] return + //SEG423 [254] return rts - //SEG415 processChars::@6 + //SEG424 processChars::@6 b6: - //SEG416 [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG425 [255] *((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 - //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask sta _34 - //SEG418 [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 // Disable the sprite lda SPRITES_ENABLE and _34 sta SPRITES_ENABLE - jmp b2 - //SEG419 processChars::@4 + jmp b7 + //SEG428 processChars::@4 b4: - //SEG420 [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG429 [258] *((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 } -//SEG421 irqTop +//SEG430 irqTop // Raster Interrupt at the top of the screen irqTop: { - .label i = $28 - .label i1 = $29 - //SEG422 entry interrupt(HARDWARE_ALL) + .label i = $29 + .label i1 = $2a + //SEG431 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG423 [256] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG424 [256] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 + //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG425 [256] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG426 [256] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG427 irqTop::@1 + //SEG436 irqTop::@1 b1: - //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 + //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 - //SEG430 [259] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] + //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] b2_from_b1: - //SEG431 [259] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuz1=vbuc1 + //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuz1=vbuc1 lda #0 sta i1 jmp b2 //*BORDERCOL = WHITE; //*BGCOL = WHITE; - //SEG432 [259] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] + //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] b2_from_b2: - //SEG433 [259] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy + //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy jmp b2 - //SEG434 irqTop::@2 + //SEG443 irqTop::@2 b2: - //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 + //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 bne b2_from_b2 jmp b3 - //SEG437 irqTop::@3 + //SEG446 irqTop::@3 b3: - //SEG438 [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG447 [266] *((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 - //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG441 irqTop::@return + //SEG450 irqTop::@return breturn: - //SEG442 [265] return - exit interrupt(HARDWARE_ALL) + //SEG451 [269] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -6004,7 +6112,7 @@ Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main:: Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ main::$16 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ main::$16 ] Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a @@ -6013,26 +6121,26 @@ Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCES Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ getCharToProcess::return_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] +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 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ main::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ main::center_y#0 ] +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 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$38 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$38 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_y#0 ] +Statement [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$39 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$39 ] ) always clobbers reg byte a -Statement [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a -Statement [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ) always clobbers reg byte a +Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a +Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a +Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$42 ] ) always clobbers reg byte a -Statement [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$43 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$43 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a +Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a @@ -6044,8 +6152,8 @@ Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (b Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ startProcessing::center_y#0 ] +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 ] @@ -6060,128 +6168,132 @@ Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$45 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] -Statement [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$46 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$46 ] ) always clobbers reg byte a -Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$47 ] ) always clobbers reg byte a -Statement [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [92] *((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:4::startProcessing:45 [ 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:101 [ startProcessing::$28 ] -Statement [93] *((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:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [96] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [97] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [98] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [99] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a -Statement [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Statement [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a +Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ) always clobbers reg byte a +Statement [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ) always clobbers reg byte a +Statement [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ startProcessing::$30 ] +Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a +Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a 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 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ getCharToProcess::$13 ] -Statement [111] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a -Statement [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [125] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [126] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [145] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [147] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a +Statement [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ getCharToProcess::$13 ] +Statement [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] -Statement [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [164] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Statement [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [177] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Statement [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:163 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:176 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::$64 ] ( processChars:201 [ processChars::i#10 processChars::$64 ] ) always clobbers reg byte a +Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Statement [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::$65 ] ( processChars:201 [ processChars::i#10 processChars::$65 ] ) always clobbers reg byte a -Statement [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::$66 ] ( processChars:201 [ processChars::i#10 processChars::$66 ] ) always clobbers reg byte a -Statement [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::$36 ] ( processChars:201 [ processChars::i#10 processChars::$36 ] ) always clobbers reg byte a -Statement [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::processing#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [213] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#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:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a +Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a +Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a +Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Statement [214] 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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#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:131 [ processChars::bitmask#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:131 [ processChars::bitmask#0 ] -Statement [215] 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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] +Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:131 [ processChars::bitmask#0 ] -Statement [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [218] *((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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ) always clobbers reg byte a -Statement [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a -Statement [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$13 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:136 [ processChars::$16 ] -Statement [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$14 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$14 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:136 [ processChars::$16 ] -Statement [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ processChars::ypos#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:140 [ processChars::ypos#0 ] -Statement [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ) always clobbers reg byte a -Statement [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a -Statement [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a -Statement [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$28 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$28 ] ) always clobbers reg byte a reg byte y -Statement [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [241] *((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::processing#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::processing#0 processChars::$30 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a -Statement [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::$38 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a -Statement [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::processing#0 processChars::$33 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$33 ] ) always clobbers reg byte a reg byte y -Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 [ processChars::i#10 processChars::processing#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 ] ( processChars:201 [ processChars::i#10 ] ) always clobbers reg byte a reg byte y -Statement [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 ] ( processChars:201 [ processChars::i#1 ] ) always clobbers reg byte a -Statement [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::$34 ] ( processChars:201 [ processChars::i#10 processChars::$34 ] ) always clobbers reg byte a -Statement [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 ] ( processChars:201 [ processChars::i#10 ] ) always clobbers reg byte a -Statement [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [265] 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:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ] +Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a +Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a +Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ processChars::$18 ] +Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:140 [ processChars::$18 ] +Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ] +Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a +Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a +Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a +Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a +Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a +Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a +Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y Statement [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:4 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y Statement [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:4 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a Statement [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$25 ] ( main:4 [ main::i#2 main::$25 ] ) always clobbers reg byte a @@ -6200,15 +6312,15 @@ Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProces Statement [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a Statement [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$38 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$38 ] ) always clobbers reg byte a -Statement [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$39 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$39 ] ) always clobbers reg byte a -Statement [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a -Statement [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a +Statement [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ) always clobbers reg byte a +Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a +Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a +Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$42 ] ) always clobbers reg byte a -Statement [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$43 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$43 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a +Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a +Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a +Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a @@ -6231,111 +6343,112 @@ Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$45 ] ) always clobbers reg byte a -Statement [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$46 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$46 ] ) always clobbers reg byte a -Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$47 ] ) always clobbers reg byte a -Statement [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [92] *((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:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [93] *((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:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [96] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [97] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [98] *((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:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [99] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a -Statement [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a -Statement [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a -Statement [111] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a -Statement [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [125] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [126] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a -Statement [145] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [147] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a -Statement [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a -Statement [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a -Statement [164] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a -Statement [177] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Statement [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:4::initSquareTables:7::mul8u:163 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:4::initSquareTables:7::mul8u:176 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:163 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:176 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::$64 ] ( processChars:201 [ processChars::i#10 processChars::$64 ] ) always clobbers reg byte a -Statement [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::$65 ] ( processChars:201 [ processChars::i#10 processChars::$65 ] ) always clobbers reg byte a -Statement [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::$66 ] ( processChars:201 [ processChars::i#10 processChars::$66 ] ) always clobbers reg byte a -Statement [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::$36 ] ( processChars:201 [ processChars::i#10 processChars::$36 ] ) always clobbers reg byte a -Statement [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::processing#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [213] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [214] 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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [215] 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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [218] *((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::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ) always clobbers reg byte a -Statement [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$11 ] ) always clobbers reg byte a -Statement [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$13 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$13 ] ) always clobbers reg byte a -Statement [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$14 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::$14 ] ) always clobbers reg byte a reg byte y -Statement [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ) always clobbers reg byte a -Statement [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$25 ] ) always clobbers reg byte a -Statement [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a -Statement [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$28 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 processChars::$28 ] ) always clobbers reg byte a reg byte y -Statement [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [241] *((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::processing#0 processChars::ypos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::processing#0 processChars::$30 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$30 ] ) always clobbers reg byte a -Statement [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::processing#0 processChars::$38 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a -Statement [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::processing#0 processChars::$33 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::$33 ] ) always clobbers reg byte a reg byte y -Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 [ processChars::i#10 processChars::processing#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 ] ( processChars:201 [ processChars::i#10 ] ) always clobbers reg byte a reg byte y -Statement [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 ] ( processChars:201 [ processChars::i#1 ] ) always clobbers reg byte a -Statement [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::bitmask#0 ] ( processChars:201 [ processChars::i#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::$34 ] ( processChars:201 [ processChars::i#10 processChars::$34 ] ) always clobbers reg byte a -Statement [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 ] ( processChars:201 [ processChars::i#10 ] ) always clobbers reg byte a -Statement [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:201 [ processChars::i#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [265] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a +Statement [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a +Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ) always clobbers reg byte a +Statement [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ) always clobbers reg byte a +Statement [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a +Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a +Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a +Statement [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a +Statement [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a +Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y +Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a +Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a +Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a +Statement [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a +Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a +Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a +Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a +Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a +Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a +Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a +Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a +Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a +Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a +Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a +Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a +Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y +Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a +Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a +Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a +Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a +Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a +Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a +Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y +Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y +Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a +Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a +Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a +Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a +Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a +Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y 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 , @@ -6364,94 +6477,96 @@ Potential registers zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : z Potential registers zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:36 , Potential registers zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] : zp ZP_BYTE:39 , -Potential registers zp ZP_BYTE:40 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:41 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:42 [ main::$25 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ main::$26 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ main::$27 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ main::$16 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:48 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:48 , -Potential registers zp ZP_BYTE:50 [ main::center_x#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:51 [ main::center_y#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:52 [ main::center_dist#0 ] : zp ZP_WORD:52 , -Potential registers zp ZP_BYTE:54 [ startProcessing::center_x#0 ] : zp ZP_BYTE:54 , reg byte x , -Potential registers zp ZP_BYTE:55 [ startProcessing::center_y#0 ] : zp ZP_BYTE:55 , reg byte x , -Potential registers zp ZP_BYTE:56 [ startProcessing::$38 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ startProcessing::$39 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ startProcessing::$40 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ startProcessing::$27 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:60 [ startProcessing::$0 ] : zp ZP_WORD:60 , -Potential registers zp ZP_WORD:62 [ startProcessing::$42 ] : zp ZP_WORD:62 , -Potential registers zp ZP_WORD:64 [ startProcessing::$43 ] : zp ZP_WORD:64 , -Potential registers zp ZP_WORD:66 [ startProcessing::$1 ] : zp ZP_WORD:66 , -Potential registers zp ZP_WORD:68 [ startProcessing::$2 ] : zp ZP_WORD:68 , -Potential registers zp ZP_WORD:70 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:70 , -Potential registers zp ZP_WORD:72 [ startProcessing::$4 ] : zp ZP_WORD:72 , -Potential registers zp ZP_WORD:74 [ startProcessing::$5 ] : zp ZP_WORD:74 , -Potential registers zp ZP_BYTE:76 [ startProcessing::ch#0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:77 [ startProcessing::$7 ] : zp ZP_WORD:77 , -Potential registers zp ZP_WORD:79 [ startProcessing::$8 ] : zp ZP_WORD:79 , -Potential registers zp ZP_WORD:81 [ startProcessing::$10 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ startProcessing::$11 ] : zp ZP_WORD:83 , -Potential registers zp ZP_WORD:85 [ startProcessing::$12 ] : zp ZP_WORD:85 , -Potential registers zp ZP_WORD:87 [ startProcessing::spriteX#0 ] : zp ZP_WORD:87 , -Potential registers zp ZP_WORD:89 [ startProcessing::$14 ] : zp ZP_WORD:89 , -Potential registers zp ZP_WORD:91 [ startProcessing::$15 ] : zp ZP_WORD:91 , -Potential registers zp ZP_WORD:93 [ startProcessing::$16 ] : zp ZP_WORD:93 , -Potential registers zp ZP_WORD:95 [ startProcessing::spriteY#0 ] : zp ZP_WORD:95 , -Potential registers zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:97 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ startProcessing::$45 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ startProcessing::$46 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ startProcessing::$47 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ startProcessing::$28 ] : zp ZP_BYTE:101 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ getCharToProcess::$13 ] : zp ZP_BYTE:102 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:103 [ getCharToProcess::$14 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:104 [ getCharToProcess::$9 ] : zp ZP_WORD:104 , -Potential registers zp ZP_WORD:106 [ getCharToProcess::$15 ] : zp ZP_WORD:106 , -Potential registers zp ZP_WORD:108 [ getCharToProcess::$16 ] : zp ZP_WORD:108 , -Potential registers zp ZP_WORD:110 [ getCharToProcess::$10 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ getCharToProcess::$11 ] : zp ZP_WORD:112 , -Potential registers zp ZP_WORD:114 [ mul8u::return#2 ] : zp ZP_WORD:114 , -Potential registers zp ZP_WORD:116 [ initSquareTables::$6 ] : zp ZP_WORD:116 , -Potential registers zp ZP_BYTE:118 [ initSquareTables::$16 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:119 [ mul8u::return#3 ] : zp ZP_WORD:119 , -Potential registers zp ZP_WORD:121 [ initSquareTables::$14 ] : zp ZP_WORD:121 , -Potential registers zp ZP_BYTE:123 [ initSquareTables::$17 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ mul8u::$1 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ processChars::$64 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ processChars::$65 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ processChars::$66 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ processChars::$36 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:129 [ processChars::processing#0 ] : zp ZP_WORD:129 , -Potential registers zp ZP_BYTE:131 [ processChars::bitmask#0 ] : zp ZP_BYTE:131 , -Potential registers zp ZP_WORD:132 [ processChars::xpos#0 ] : zp ZP_WORD:132 , -Potential registers zp ZP_BYTE:134 [ processChars::$10 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ processChars::$11 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:136 [ processChars::$16 ] : zp ZP_BYTE:136 , reg byte x , -Potential registers zp ZP_BYTE:137 [ processChars::$13 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:138 [ processChars::$14 ] : zp ZP_WORD:138 , -Potential registers zp ZP_BYTE:140 [ processChars::ypos#0 ] : zp ZP_BYTE:140 , reg byte x , -Potential registers zp ZP_WORD:141 [ processChars::$24 ] : zp ZP_WORD:141 , -Potential registers zp ZP_BYTE:143 [ processChars::$25 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:144 [ processChars::xchar#0 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:145 [ processChars::$37 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:146 [ processChars::$28 ] : zp ZP_WORD:146 , -Potential registers zp ZP_BYTE:148 [ processChars::$30 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:149 [ processChars::ychar#0 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:150 [ processChars::$38 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:151 [ processChars::$33 ] : zp ZP_WORD:151 , -Potential registers zp ZP_BYTE:153 [ processChars::$34 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] : zp ZP_BYTE:40 , +Potential registers zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ main::$25 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ main::$26 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ main::$27 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ main::$16 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:49 , +Potential registers zp ZP_BYTE:51 [ main::center_x#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ main::center_y#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:53 [ main::center_dist#0 ] : zp ZP_WORD:53 , +Potential registers zp ZP_BYTE:55 [ startProcessing::center_x#0 ] : zp ZP_BYTE:55 , reg byte x , +Potential registers zp ZP_BYTE:56 [ startProcessing::center_y#0 ] : zp ZP_BYTE:56 , reg byte x , +Potential registers zp ZP_BYTE:57 [ startProcessing::$40 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ startProcessing::$41 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ startProcessing::$42 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:60 [ startProcessing::$29 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:61 [ startProcessing::$0 ] : zp ZP_WORD:61 , +Potential registers zp ZP_WORD:63 [ startProcessing::$44 ] : zp ZP_WORD:63 , +Potential registers zp ZP_WORD:65 [ startProcessing::$45 ] : zp ZP_WORD:65 , +Potential registers zp ZP_WORD:67 [ startProcessing::$1 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ startProcessing::$2 ] : zp ZP_WORD:69 , +Potential registers zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:71 , +Potential registers zp ZP_WORD:73 [ startProcessing::$4 ] : zp ZP_WORD:73 , +Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 , +Potential registers zp ZP_BYTE:77 [ startProcessing::ch#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:78 [ startProcessing::$7 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ startProcessing::$10 ] : zp ZP_WORD:82 , +Potential registers zp ZP_WORD:84 [ startProcessing::$11 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ startProcessing::$12 ] : zp ZP_WORD:86 , +Potential registers zp ZP_WORD:88 [ startProcessing::spriteX#0 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ startProcessing::$14 ] : zp ZP_WORD:90 , +Potential registers zp ZP_WORD:92 [ startProcessing::$15 ] : zp ZP_WORD:92 , +Potential registers zp ZP_WORD:94 [ startProcessing::$16 ] : zp ZP_WORD:94 , +Potential registers zp ZP_WORD:96 [ startProcessing::spriteY#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ startProcessing::$21 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:100 [ startProcessing::$22 ] : zp ZP_WORD:100 , +Potential registers zp ZP_BYTE:102 [ startProcessing::$47 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ startProcessing::$48 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ startProcessing::$49 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ startProcessing::$30 ] : zp ZP_BYTE:105 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ getCharToProcess::$13 ] : zp ZP_BYTE:106 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ getCharToProcess::$14 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:108 [ getCharToProcess::$9 ] : zp ZP_WORD:108 , +Potential registers zp ZP_WORD:110 [ getCharToProcess::$15 ] : zp ZP_WORD:110 , +Potential registers zp ZP_WORD:112 [ getCharToProcess::$16 ] : zp ZP_WORD:112 , +Potential registers zp ZP_WORD:114 [ getCharToProcess::$10 ] : zp ZP_WORD:114 , +Potential registers zp ZP_WORD:116 [ getCharToProcess::$11 ] : zp ZP_WORD:116 , +Potential registers zp ZP_WORD:118 [ mul8u::return#2 ] : zp ZP_WORD:118 , +Potential registers zp ZP_WORD:120 [ initSquareTables::$6 ] : zp ZP_WORD:120 , +Potential registers zp ZP_BYTE:122 [ initSquareTables::$16 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:123 [ mul8u::return#3 ] : zp ZP_WORD:123 , +Potential registers zp ZP_WORD:125 [ initSquareTables::$14 ] : zp ZP_WORD:125 , +Potential registers zp ZP_BYTE:127 [ initSquareTables::$17 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ mul8u::$1 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ processChars::$64 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ processChars::$65 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ processChars::$66 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ processChars::$36 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:133 [ processChars::processing#0 ] : zp ZP_WORD:133 , +Potential registers zp ZP_BYTE:135 [ processChars::bitmask#0 ] : zp ZP_BYTE:135 , +Potential registers zp ZP_WORD:136 [ processChars::xpos#0 ] : zp ZP_WORD:136 , +Potential registers zp ZP_BYTE:138 [ processChars::$12 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:139 [ processChars::$13 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:140 [ processChars::$18 ] : zp ZP_BYTE:140 , reg byte x , +Potential registers zp ZP_BYTE:141 [ processChars::$15 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:142 [ processChars::$16 ] : zp ZP_WORD:142 , +Potential registers zp ZP_BYTE:144 [ processChars::ypos#0 ] : zp ZP_BYTE:144 , reg byte x , +Potential registers zp ZP_WORD:145 [ processChars::$26 ] : zp ZP_WORD:145 , +Potential registers zp ZP_BYTE:147 [ processChars::$27 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:148 [ processChars::xchar#0 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:149 [ processChars::$37 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:150 [ processChars::$31 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:151 [ processChars::ychar#0 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:152 [ processChars::$38 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:153 [ processChars::$1 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:154 [ processChars::$34 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , 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:103 [ 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:102 [ 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:46 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:48 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:106 [ getCharToProcess::$15 ] 4: zp ZP_WORD:108 [ getCharToProcess::$16 ] 4: zp ZP_WORD:110 [ getCharToProcess::$10 ] 4: zp ZP_WORD:112 [ getCharToProcess::$11 ] 3: zp ZP_WORD:104 [ getCharToProcess::$9 ] -Uplift Scope [startProcessing] 2,735.79: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:56 [ startProcessing::$38 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$39 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$40 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$27 ] 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:62 [ startProcessing::$42 ] 4: zp ZP_WORD:64 [ startProcessing::$43 ] 4: zp ZP_WORD:66 [ startProcessing::$1 ] 4: zp ZP_WORD:72 [ startProcessing::$4 ] 4: zp ZP_WORD:74 [ startProcessing::$5 ] 4: zp ZP_WORD:77 [ startProcessing::$7 ] 4: zp ZP_WORD:79 [ startProcessing::$8 ] 4: zp ZP_WORD:81 [ startProcessing::$10 ] 4: zp ZP_WORD:83 [ startProcessing::$11 ] 4: zp ZP_WORD:85 [ startProcessing::$12 ] 4: zp ZP_WORD:89 [ startProcessing::$14 ] 4: zp ZP_WORD:91 [ startProcessing::$15 ] 4: zp ZP_WORD:93 [ startProcessing::$16 ] 4: zp ZP_BYTE:98 [ startProcessing::$45 ] 4: zp ZP_BYTE:99 [ startProcessing::$46 ] 4: zp ZP_BYTE:100 [ startProcessing::$47 ] 3: zp ZP_WORD:60 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:101 [ startProcessing::$28 ] 2: zp ZP_BYTE:76 [ startProcessing::ch#0 ] 1.2: zp ZP_WORD:68 [ startProcessing::$2 ] 0.57: zp ZP_WORD:95 [ startProcessing::spriteY#0 ] 0.4: zp ZP_WORD:87 [ startProcessing::spriteX#0 ] 0.4: zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] 0.38: zp ZP_BYTE:54 [ startProcessing::center_x#0 ] 0.26: zp ZP_BYTE:55 [ startProcessing::center_y#0 ] 0.11: zp ZP_WORD:70 [ 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:124 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:114 [ mul8u::return#2 ] 22: zp ZP_WORD:119 [ mul8u::return#3 ] -Uplift Scope [processChars] 22: zp ZP_BYTE:125 [ processChars::$64 ] 22: zp ZP_BYTE:126 [ processChars::$65 ] 22: zp ZP_BYTE:127 [ processChars::$66 ] 22: zp ZP_BYTE:128 [ processChars::$36 ] 22: zp ZP_BYTE:134 [ processChars::$10 ] 22: zp ZP_BYTE:135 [ processChars::$11 ] 22: zp ZP_BYTE:137 [ processChars::$13 ] 22: zp ZP_BYTE:143 [ processChars::$25 ] 22: zp ZP_BYTE:144 [ processChars::xchar#0 ] 22: zp ZP_BYTE:145 [ processChars::$37 ] 22: zp ZP_WORD:146 [ processChars::$28 ] 22: zp ZP_BYTE:148 [ processChars::$30 ] 22: zp ZP_BYTE:149 [ processChars::ychar#0 ] 22: zp ZP_BYTE:150 [ processChars::$38 ] 22: zp ZP_WORD:151 [ processChars::$33 ] 22: zp ZP_BYTE:153 [ processChars::$34 ] 17.97: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:138 [ processChars::$14 ] 11: zp ZP_WORD:141 [ processChars::$24 ] 6.6: zp ZP_BYTE:136 [ processChars::$16 ] 2.54: zp ZP_BYTE:140 [ processChars::ypos#0 ] 2.29: zp ZP_BYTE:131 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:132 [ processChars::xpos#0 ] 0.31: zp ZP_WORD:129 [ 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:118 [ initSquareTables::$16 ] 22: zp ZP_BYTE:123 [ initSquareTables::$17 ] 11: zp ZP_WORD:116 [ initSquareTables::$6 ] 11: zp ZP_WORD:121 [ 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:42 [ main::$25 ] 22: zp ZP_BYTE:43 [ main::$26 ] 22: zp ZP_BYTE:44 [ main::$27 ] 22: zp ZP_WORD:52 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:45 [ main::$16 ] 5.5: zp ZP_BYTE:50 [ main::center_x#0 ] 5.5: zp ZP_BYTE:51 [ main::center_y#0 ] -Uplift Scope [irqTop] 38.5: zp ZP_BYTE:40 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:41 [ irqTop::i1#2 irqTop::i1#1 ] +Uplift Scope [getCharToProcess] 4,996.99: zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,090.17: zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,820.67: zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 2,002: zp ZP_BYTE:107 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:106 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:110 [ getCharToProcess::$15 ] 4: zp ZP_WORD:112 [ getCharToProcess::$16 ] 4: zp ZP_WORD:114 [ getCharToProcess::$10 ] 4: zp ZP_WORD:116 [ getCharToProcess::$11 ] 3: zp ZP_WORD:108 [ getCharToProcess::$9 ] +Uplift Scope [startProcessing] 2,734.41: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$40 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$41 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$42 ] 2,002: zp ZP_BYTE:60 [ startProcessing::$29 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:63 [ startProcessing::$44 ] 4: zp ZP_WORD:65 [ startProcessing::$45 ] 4: zp ZP_WORD:67 [ startProcessing::$1 ] 4: zp ZP_WORD:73 [ startProcessing::$4 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:78 [ startProcessing::$7 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$10 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:90 [ startProcessing::$14 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_BYTE:102 [ startProcessing::$47 ] 4: zp ZP_BYTE:103 [ startProcessing::$48 ] 4: zp ZP_BYTE:104 [ startProcessing::$49 ] 3: zp ZP_WORD:61 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:105 [ startProcessing::$30 ] 2: zp ZP_BYTE:77 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:99 [ startProcessing::$21 ] 1.2: zp ZP_WORD:69 [ startProcessing::$2 ] 0.57: zp ZP_WORD:100 [ startProcessing::$22 ] 0.44: zp ZP_WORD:96 [ startProcessing::spriteY#0 ] 0.38: zp ZP_BYTE:55 [ startProcessing::center_x#0 ] 0.33: zp ZP_WORD:88 [ startProcessing::spriteX#0 ] 0.33: zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:56 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:128 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:118 [ mul8u::return#2 ] 22: zp ZP_WORD:123 [ mul8u::return#3 ] +Uplift Scope [processChars] 34.43: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:129 [ processChars::$64 ] 22: zp ZP_BYTE:130 [ processChars::$65 ] 22: zp ZP_BYTE:131 [ processChars::$66 ] 22: zp ZP_BYTE:132 [ processChars::$36 ] 22: zp ZP_BYTE:138 [ processChars::$12 ] 22: zp ZP_BYTE:139 [ processChars::$13 ] 22: zp ZP_BYTE:141 [ processChars::$15 ] 22: zp ZP_BYTE:147 [ processChars::$27 ] 22: zp ZP_BYTE:148 [ processChars::xchar#0 ] 22: zp ZP_BYTE:149 [ processChars::$37 ] 22: zp ZP_BYTE:150 [ processChars::$31 ] 22: zp ZP_BYTE:151 [ processChars::ychar#0 ] 22: zp ZP_BYTE:152 [ processChars::$38 ] 22: zp ZP_BYTE:154 [ processChars::$34 ] 17.97: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:142 [ processChars::$16 ] 11: zp ZP_WORD:145 [ processChars::$26 ] 6.6: zp ZP_BYTE:140 [ processChars::$18 ] 4: zp ZP_BYTE:153 [ processChars::$1 ] 2.75: zp ZP_BYTE:144 [ processChars::ypos#0 ] 2.29: zp ZP_BYTE:135 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:136 [ processChars::xpos#0 ] 0.32: zp ZP_WORD:133 [ processChars::processing#0 ] +Uplift Scope [initSquareTables] 66: zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:122 [ initSquareTables::$16 ] 22: zp ZP_BYTE:127 [ initSquareTables::$17 ] 11: zp ZP_WORD:120 [ initSquareTables::$6 ] 11: zp ZP_WORD:125 [ initSquareTables::$14 ] +Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$25 ] 22: zp ZP_BYTE:44 [ main::$26 ] 22: zp ZP_BYTE:45 [ main::$27 ] 22: zp ZP_WORD:53 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:46 [ main::$16 ] 5.5: zp ZP_BYTE:51 [ main::center_x#0 ] 5.5: zp ZP_BYTE:52 [ main::center_y#0 ] +Uplift Scope [irqTop] 38.5: zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] Uplift Scope [initSprites] 33: zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] 33: zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] Uplift Scope [ProcessingChar] @@ -6459,130 +6574,142 @@ Uplift Scope [ProcessingSprite] Uplift Scope [setupRasterIrq] Uplift Scope [] -Uplifting [getCharToProcess] best 290979 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:102 [ 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:46 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] zp ZP_WORD:48 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:106 [ getCharToProcess::$15 ] zp ZP_WORD:108 [ getCharToProcess::$16 ] zp ZP_WORD:110 [ getCharToProcess::$10 ] zp ZP_WORD:112 [ getCharToProcess::$11 ] zp ZP_WORD:104 [ getCharToProcess::$9 ] +Uplifting [getCharToProcess] best 290835 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:106 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:110 [ getCharToProcess::$15 ] zp ZP_WORD:112 [ getCharToProcess::$16 ] zp ZP_WORD:114 [ getCharToProcess::$10 ] zp ZP_WORD:116 [ getCharToProcess::$11 ] zp ZP_WORD:108 [ getCharToProcess::$9 ] Limited combination testing to 100 combinations of 8748 possible. -Uplifting [startProcessing] best 272979 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$38 ] reg byte a [ startProcessing::$39 ] reg byte a [ startProcessing::$40 ] zp ZP_BYTE:59 [ startProcessing::$27 ] 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:62 [ startProcessing::$42 ] zp ZP_WORD:64 [ startProcessing::$43 ] zp ZP_WORD:66 [ startProcessing::$1 ] zp ZP_WORD:72 [ startProcessing::$4 ] zp ZP_WORD:74 [ startProcessing::$5 ] zp ZP_WORD:77 [ startProcessing::$7 ] zp ZP_WORD:79 [ startProcessing::$8 ] zp ZP_WORD:81 [ startProcessing::$10 ] zp ZP_WORD:83 [ startProcessing::$11 ] zp ZP_WORD:85 [ startProcessing::$12 ] zp ZP_WORD:89 [ startProcessing::$14 ] zp ZP_WORD:91 [ startProcessing::$15 ] zp ZP_WORD:93 [ startProcessing::$16 ] zp ZP_BYTE:98 [ startProcessing::$45 ] zp ZP_BYTE:99 [ startProcessing::$46 ] zp ZP_BYTE:100 [ startProcessing::$47 ] zp ZP_WORD:60 [ startProcessing::$0 ] zp ZP_BYTE:101 [ startProcessing::$28 ] zp ZP_BYTE:76 [ startProcessing::ch#0 ] zp ZP_WORD:68 [ startProcessing::$2 ] zp ZP_WORD:95 [ startProcessing::spriteY#0 ] zp ZP_WORD:87 [ startProcessing::spriteX#0 ] zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:54 [ startProcessing::center_x#0 ] zp ZP_BYTE:55 [ startProcessing::center_y#0 ] zp ZP_WORD:70 [ startProcessing::screenPtr#0 ] -Limited combination testing to 100 combinations of 28311552 possible. -Uplifting [mul8u] best 271953 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:114 [ mul8u::return#2 ] zp ZP_WORD:119 [ mul8u::return#3 ] +Uplifting [startProcessing] best 272835 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$40 ] reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] zp ZP_BYTE:60 [ startProcessing::$29 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:63 [ startProcessing::$44 ] zp ZP_WORD:65 [ startProcessing::$45 ] zp ZP_WORD:67 [ startProcessing::$1 ] zp ZP_WORD:73 [ startProcessing::$4 ] zp ZP_WORD:75 [ startProcessing::$5 ] zp ZP_WORD:78 [ startProcessing::$7 ] zp ZP_WORD:80 [ startProcessing::$8 ] zp ZP_WORD:82 [ startProcessing::$10 ] zp ZP_WORD:84 [ startProcessing::$11 ] zp ZP_WORD:86 [ startProcessing::$12 ] zp ZP_WORD:90 [ startProcessing::$14 ] zp ZP_WORD:92 [ startProcessing::$15 ] zp ZP_WORD:94 [ startProcessing::$16 ] zp ZP_BYTE:102 [ startProcessing::$47 ] zp ZP_BYTE:103 [ startProcessing::$48 ] zp ZP_BYTE:104 [ startProcessing::$49 ] zp ZP_WORD:61 [ startProcessing::$0 ] zp ZP_BYTE:105 [ startProcessing::$30 ] zp ZP_BYTE:77 [ startProcessing::ch#0 ] zp ZP_BYTE:99 [ startProcessing::$21 ] zp ZP_WORD:69 [ startProcessing::$2 ] zp ZP_WORD:100 [ startProcessing::$22 ] zp ZP_WORD:96 [ startProcessing::spriteY#0 ] zp ZP_BYTE:55 [ startProcessing::center_x#0 ] zp ZP_WORD:88 [ startProcessing::spriteX#0 ] zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:56 [ startProcessing::center_y#0 ] zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] +Limited combination testing to 100 combinations of 113246208 possible. +Uplifting [mul8u] best 271809 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:118 [ mul8u::return#2 ] zp ZP_WORD:123 [ mul8u::return#3 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [processChars] best 271713 combination reg byte a [ processChars::$64 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] reg byte a [ processChars::$36 ] zp ZP_BYTE:134 [ processChars::$10 ] zp ZP_BYTE:135 [ processChars::$11 ] zp ZP_BYTE:137 [ processChars::$13 ] zp ZP_BYTE:143 [ processChars::$25 ] zp ZP_BYTE:144 [ processChars::xchar#0 ] zp ZP_BYTE:145 [ processChars::$37 ] zp ZP_WORD:146 [ processChars::$28 ] zp ZP_BYTE:148 [ processChars::$30 ] zp ZP_BYTE:149 [ processChars::ychar#0 ] zp ZP_BYTE:150 [ processChars::$38 ] zp ZP_WORD:151 [ processChars::$33 ] zp ZP_BYTE:153 [ processChars::$34 ] zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] zp ZP_WORD:138 [ processChars::$14 ] zp ZP_WORD:141 [ processChars::$24 ] zp ZP_BYTE:136 [ processChars::$16 ] zp ZP_BYTE:140 [ processChars::ypos#0 ] zp ZP_BYTE:131 [ processChars::bitmask#0 ] zp ZP_WORD:132 [ processChars::xpos#0 ] zp ZP_WORD:129 [ processChars::processing#0 ] -Limited combination testing to 100 combinations of 1073741824 possible. -Uplifting [initSquareTables] best 271553 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:118 [ initSquareTables::$16 ] zp ZP_BYTE:123 [ initSquareTables::$17 ] zp ZP_WORD:116 [ initSquareTables::$6 ] zp ZP_WORD:121 [ initSquareTables::$14 ] +Uplifting [initSquareTables] best 271649 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:122 [ initSquareTables::$16 ] zp ZP_BYTE:127 [ initSquareTables::$17 ] zp ZP_WORD:120 [ initSquareTables::$6 ] zp ZP_WORD:125 [ initSquareTables::$14 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [main] best 271373 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] zp ZP_WORD:52 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:45 [ main::$16 ] zp ZP_BYTE:50 [ main::center_x#0 ] zp ZP_BYTE:51 [ main::center_y#0 ] +Uplifting [main] best 271469 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] zp ZP_WORD:53 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:46 [ main::$16 ] zp ZP_BYTE:51 [ main::center_x#0 ] zp ZP_BYTE:52 [ main::center_y#0 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [irqTop] best 271193 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -Uplifting [initSprites] best 271073 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -Uplifting [irqBottom] best 270983 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -Uplifting [ProcessingChar] best 270983 combination -Uplifting [ProcessingSprite] best 270983 combination -Uplifting [setupRasterIrq] best 270983 combination -Uplifting [] best 270983 combination +Uplifting [irqTop] best 271289 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] +Uplifting [initSprites] best 271169 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [irqBottom] best 271079 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] +Uplifting [ProcessingChar] best 271079 combination +Uplifting [ProcessingSprite] best 271079 combination +Uplifting [setupRasterIrq] best 271079 combination +Uplifting [] best 271079 combination 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 270983 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 271079 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Uplifting [startProcessing] best 270983 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:59 [ startProcessing::$27 ] -Uplifting [startProcessing] best 266983 combination reg byte a [ startProcessing::$27 ] +Uplifting [startProcessing] best 271079 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ startProcessing::$29 ] +Uplifting [startProcessing] best 267079 combination reg byte a [ startProcessing::$29 ] 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 266983 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Uplifting [getCharToProcess] best 266983 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:102 [ getCharToProcess::$13 ] -Uplifting [getCharToProcess] best 262983 combination reg byte x [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:106 [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 263079 combination reg byte x [ getCharToProcess::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 262983 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 263079 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 262083 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 262179 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 261183 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Uplifting [startProcessing] best 261279 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [processChars] best 261279 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Uplifting [initSquareTables] best 261183 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 261279 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 261183 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ initSquareTables::$16 ] -Uplifting [initSquareTables] best 261143 combination reg byte a [ initSquareTables::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:123 [ initSquareTables::$17 ] -Uplifting [initSquareTables] best 261103 combination reg byte a [ initSquareTables::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:134 [ processChars::$10 ] -Uplifting [processChars] best 261043 combination reg byte a [ processChars::$10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::$11 ] -Uplifting [processChars] best 260983 combination reg byte a [ processChars::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:137 [ processChars::$13 ] -Uplifting [processChars] best 260923 combination reg byte a [ processChars::$13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:143 [ processChars::$25 ] -Uplifting [processChars] best 260883 combination reg byte a [ processChars::$25 ] -Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::xchar#0 ] -Uplifting [processChars] best 260823 combination reg byte a [ processChars::xchar#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:145 [ processChars::$37 ] -Uplifting [processChars] best 260783 combination reg byte a [ processChars::$37 ] -Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::$30 ] -Uplifting [processChars] best 260743 combination reg byte a [ processChars::$30 ] -Attempting to uplift remaining variables inzp ZP_BYTE:149 [ processChars::ychar#0 ] -Uplifting [processChars] best 260683 combination reg byte a [ processChars::ychar#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:150 [ processChars::$38 ] -Uplifting [processChars] best 260643 combination reg byte a [ processChars::$38 ] -Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$34 ] -Uplifting [processChars] best 260583 combination reg byte a [ processChars::$34 ] +Uplifting [initSquareTables] best 261279 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:122 [ initSquareTables::$16 ] +Uplifting [initSquareTables] best 261239 combination reg byte a [ initSquareTables::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:127 [ initSquareTables::$17 ] +Uplifting [initSquareTables] best 261199 combination reg byte a [ initSquareTables::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ processChars::$64 ] +Uplifting [processChars] best 261139 combination reg byte a [ processChars::$64 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ processChars::$65 ] +Uplifting [processChars] best 261079 combination reg byte a [ processChars::$65 ] +Attempting to uplift remaining variables inzp ZP_BYTE:131 [ processChars::$66 ] +Uplifting [processChars] best 261019 combination reg byte a [ processChars::$66 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::$36 ] +Uplifting [processChars] best 260959 combination reg byte a [ processChars::$36 ] +Attempting to uplift remaining variables inzp ZP_BYTE:138 [ processChars::$12 ] +Uplifting [processChars] best 260899 combination reg byte a [ processChars::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:139 [ processChars::$13 ] +Uplifting [processChars] best 260839 combination reg byte a [ processChars::$13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::$15 ] +Uplifting [processChars] best 260779 combination reg byte a [ processChars::$15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$27 ] +Uplifting [processChars] best 260739 combination reg byte a [ processChars::$27 ] +Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::xchar#0 ] +Uplifting [processChars] best 260679 combination reg byte a [ processChars::xchar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:149 [ processChars::$37 ] +Uplifting [processChars] best 260639 combination reg byte a [ processChars::$37 ] +Attempting to uplift remaining variables inzp ZP_BYTE:150 [ processChars::$31 ] +Uplifting [processChars] best 260599 combination reg byte a [ processChars::$31 ] +Attempting to uplift remaining variables inzp ZP_BYTE:151 [ processChars::ychar#0 ] +Uplifting [processChars] best 260539 combination reg byte a [ processChars::ychar#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:152 [ processChars::$38 ] +Uplifting [processChars] best 260499 combination reg byte a [ processChars::$38 ] +Attempting to uplift remaining variables inzp ZP_BYTE:154 [ processChars::$34 ] +Uplifting [processChars] best 260439 combination reg byte a [ processChars::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Uplifting [main] best 260583 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 260439 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Uplifting [processChars] best 260583 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ main::$16 ] -Uplifting [main] best 260453 combination reg byte x [ main::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 260393 combination reg byte x [ getCharToProcess::return_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 260333 combination reg byte y [ getCharToProcess::return_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:136 [ processChars::$16 ] -Uplifting [processChars] best 260263 combination reg byte x [ processChars::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ main::center_x#0 ] -Uplifting [main] best 260203 combination reg byte x [ main::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_y#0 ] -Uplifting [main] best 260143 combination reg byte y [ main::center_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::$45 ] -Uplifting [startProcessing] best 260137 combination reg byte a [ startProcessing::$45 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$46 ] -Uplifting [startProcessing] best 260131 combination reg byte a [ startProcessing::$46 ] -Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::$47 ] -Uplifting [startProcessing] best 260125 combination reg byte a [ startProcessing::$47 ] -Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::ypos#0 ] -Uplifting [processChars] best 260125 combination zp ZP_BYTE:140 [ processChars::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:131 [ processChars::bitmask#0 ] -Uplifting [processChars] best 260125 combination zp ZP_BYTE:131 [ processChars::bitmask#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$28 ] -Uplifting [startProcessing] best 260106 combination reg byte x [ startProcessing::$28 ] -Attempting to uplift remaining variables inzp ZP_BYTE:76 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 260100 combination reg byte a [ startProcessing::ch#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 260100 combination zp ZP_BYTE:97 [ startProcessing::spritePtr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 260100 combination zp ZP_BYTE:54 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 260100 combination zp ZP_BYTE:55 [ 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:79 [ 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:74 [ 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:48 [ 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:114 [ 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:119 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ startProcessing::$0 ] ] with [ zp ZP_WORD:64 [ startProcessing::$43 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:66 [ startProcessing::$1 ] ] with [ zp ZP_WORD:68 [ startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ startProcessing::$10 ] ] with [ zp ZP_WORD:83 [ startProcessing::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:85 [ startProcessing::$12 ] ] with [ zp ZP_WORD:87 [ startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ startProcessing::$14 ] ] with [ zp ZP_WORD:91 [ startProcessing::$15 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:93 [ startProcessing::$16 ] ] with [ zp ZP_WORD:95 [ startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:104 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:108 [ getCharToProcess::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:112 [ getCharToProcess::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:141 [ processChars::$24 ] ] - 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:77 [ 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:72 [ 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:52 [ 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:116 [ 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:121 [ initSquareTables::$14 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ startProcessing::$0 startProcessing::$43 ] ] with [ zp ZP_WORD:66 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:85 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:93 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:104 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:110 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +Uplifting [processChars] best 260439 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ main::$16 ] +Uplifting [main] best 260309 combination reg byte x [ main::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 260249 combination reg byte x [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 260189 combination reg byte y [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::$18 ] +Uplifting [processChars] best 260119 combination reg byte x [ processChars::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_x#0 ] +Uplifting [main] best 260059 combination reg byte x [ main::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ main::center_y#0 ] +Uplifting [main] best 259999 combination reg byte y [ main::center_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ startProcessing::$47 ] +Uplifting [startProcessing] best 259993 combination reg byte a [ startProcessing::$47 ] +Attempting to uplift remaining variables inzp ZP_BYTE:103 [ startProcessing::$48 ] +Uplifting [startProcessing] best 259987 combination reg byte a [ startProcessing::$48 ] +Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$49 ] +Uplifting [startProcessing] best 259981 combination reg byte a [ startProcessing::$49 ] +Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$1 ] +Uplifting [processChars] best 259975 combination reg byte x [ processChars::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::ypos#0 ] +Uplifting [processChars] best 259975 combination zp ZP_BYTE:144 [ processChars::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::bitmask#0 ] +Uplifting [processChars] best 259975 combination zp ZP_BYTE:135 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$30 ] +Uplifting [startProcessing] best 259953 combination reg byte x [ startProcessing::$30 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 259947 combination reg byte a [ startProcessing::ch#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$21 ] +Uplifting [startProcessing] best 259941 combination reg byte a [ startProcessing::$21 ] +Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:55 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:80 [ startProcessing::$8 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:75 [ startProcessing::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:118 [ mul8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:123 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 ] ] with [ zp ZP_WORD:65 [ startProcessing::$45 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ startProcessing::$1 ] ] with [ zp ZP_WORD:69 [ startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 ] ] with [ zp ZP_WORD:84 [ startProcessing::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 ] ] with [ zp ZP_WORD:92 [ startProcessing::$15 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:112 [ getCharToProcess::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:114 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:116 [ getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:136 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:145 [ processChars::$26 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:78 [ startProcessing::$7 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:73 [ startProcessing::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:53 [ main::center_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:120 [ initSquareTables::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:125 [ initSquareTables::$14 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 startProcessing::$45 ] ] with [ zp ZP_WORD:67 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:114 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 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 ] @@ -6599,23 +6726,23 @@ Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTa 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:54) zp ZP_BYTE:31 [ startProcessing::center_x#0 ] -Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_y#0 ] -Allocated (was zp ZP_WORD:60) zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$43 startProcessing::$1 startProcessing::$2 ] -Allocated (was zp ZP_WORD:62) zp ZP_WORD:35 [ startProcessing::$42 ] -Allocated (was zp ZP_WORD:70) zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] -Allocated (was zp ZP_WORD:81) zp ZP_WORD:39 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -Allocated (was zp ZP_WORD:89) zp ZP_WORD:41 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -Allocated (was zp ZP_BYTE:97) zp ZP_BYTE:43 [ startProcessing::spritePtr#0 ] -Allocated (was zp ZP_WORD:104) zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -Allocated (was zp ZP_WORD:106) zp ZP_WORD:46 [ getCharToProcess::$15 ] -Allocated (was zp ZP_WORD:129) zp ZP_WORD:48 [ processChars::processing#0 ] -Allocated (was zp ZP_BYTE:131) zp ZP_BYTE:50 [ processChars::bitmask#0 ] -Allocated (was zp ZP_WORD:132) zp ZP_WORD:51 [ processChars::xpos#0 processChars::$24 ] -Allocated (was zp ZP_WORD:138) zp ZP_WORD:53 [ processChars::$14 ] -Allocated (was zp ZP_BYTE:140) zp ZP_BYTE:55 [ processChars::ypos#0 ] -Allocated (was zp ZP_WORD:146) zp ZP_WORD:56 [ processChars::$28 ] -Allocated (was zp ZP_WORD:151) zp ZP_WORD:58 [ processChars::$33 ] +Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] +Allocated (was zp ZP_WORD:61) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] +Allocated (was zp ZP_WORD:63) zp ZP_WORD:36 [ startProcessing::$44 ] +Allocated (was zp ZP_WORD:71) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] +Allocated (was zp ZP_WORD:82) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] +Allocated (was zp ZP_WORD:90) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] +Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] +Allocated (was zp ZP_WORD:100) zp ZP_WORD:45 [ startProcessing::$22 ] +Allocated (was zp ZP_WORD:108) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +Allocated (was zp ZP_WORD:110) zp ZP_WORD:49 [ getCharToProcess::$15 ] +Allocated (was zp ZP_WORD:133) zp ZP_WORD:51 [ processChars::processing#0 ] +Allocated (was zp ZP_BYTE:135) zp ZP_BYTE:53 [ processChars::bitmask#0 ] +Allocated (was zp ZP_WORD:136) zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] +Allocated (was zp ZP_WORD:142) zp ZP_WORD:56 [ processChars::$16 ] +Allocated (was zp ZP_BYTE:144) zp ZP_BYTE:58 [ processChars::ypos#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6726,7 +6853,7 @@ main: { .label i = 6 .label center_dist = $14 //SEG14 [7] call initSquareTables - //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] @@ -6844,7 +6971,7 @@ main: { //SEG47 main::@3 b3: //SEG48 [29] call initSprites - //SEG49 [143] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] @@ -6862,7 +6989,7 @@ main: { //SEG54 main::@4 b4: //SEG55 [33] call getCharToProcess - //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 @@ -6909,33 +7036,34 @@ main: { } //SEG74 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 _0 = $22 + .label _1 = $22 + .label _2 = $22 .label _4 = $a .label _5 = $a .label _7 = 8 .label _8 = 8 - .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 _10 = $28 + .label _11 = $28 + .label _12 = $28 + .label _14 = $2a + .label _15 = $2a + .label _16 = $2a + .label _22 = $2d + .label center_x = $20 + .label center_y = $21 .label i = 7 - .label screenPtr = $25 + .label screenPtr = $26 .label spriteData = $a .label chargenData = 8 - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c .label freeIdx = 7 - .label _42 = $23 - .label _43 = $21 + .label _44 = $24 + .label _45 = $22 //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 @@ -6955,19 +7083,19 @@ startProcessing: { jmp b2 //SEG82 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y @@ -6991,24 +7119,24 @@ startProcessing: { sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _42 + sta _44 lda _0+1 rol - sta _42+1 - asl _42 - rol _42+1 - //SEG95 [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _43 + sta _44+1 + asl _44 + rol _44+1 + //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _45 clc - adc _42 - sta _43 - lda _43+1 - adc _42+1 - sta _43+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _44 + sta _45 + lda _45+1 + adc _44+1 + sta _45+1 + //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 @@ -7192,88 +7320,97 @@ startProcessing: { lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 lda freeIdx asl - //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + asl + asl + //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa + sta _22 + lda #0 + sta _22+1 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda freeIdx + asl + //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG138 [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG139 [93] *((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 + //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 - lda #$3c + //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda #0 + lda _22+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG142 [96] *((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 + //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG143 [97] *((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 + //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG144 [98] *((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 + //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG145 [99] *((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 + //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x jmp breturn - //SEG146 startProcessing::@return + //SEG148 startProcessing::@return breturn: - //SEG147 [100] return + //SEG149 [102] return rts - //SEG148 startProcessing::@8 + //SEG150 startProcessing::@8 b8: - //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG150 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG151 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG152 startProcessing::@3 + //SEG154 startProcessing::@3 b3: - //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG154 [103] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG156 [105] 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 - //SEG155 startProcessing::@9 + //SEG157 startProcessing::@9 b9: - //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4_from_b9 } -//SEG157 getCharToProcess +//SEG159 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 _9 = $2f + .label _10 = $2f + .label _11 = $2f .label return_dist = $14 .label x = $f .label dist = $14 @@ -7284,59 +7421,59 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $2e - .label _16 = $2c - //SEG158 [106] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + .label _15 = $31 + .label _16 = $2f + //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG159 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG161 [106] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG163 [108] 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 - //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG163 [106] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG165 [108] 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 - //SEG164 getCharToProcess::@1 + //SEG166 getCharToProcess::@1 b1: - //SEG165 [107] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG166 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG167 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG168 [107] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG169 [107] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG170 getCharToProcess::@2 + //SEG172 getCharToProcess::@2 b2: - //SEG171 [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG173 [110] 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 - //SEG172 getCharToProcess::@4 + //SEG174 getCharToProcess::@4 b4: - //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda x asl tax - //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG175 [111] (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 + //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -7345,7 +7482,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG176 [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG178 [114] 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 !+ @@ -7355,34 +7492,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG177 getCharToProcess::@5 + //SEG179 getCharToProcess::@5 b5: - //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG180 [115] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG182 [117] 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: - //SEG181 [115] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG182 [115] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG183 [115] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG184 getCharToProcess::@3 + //SEG186 getCharToProcess::@3 b3: - //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG187 getCharToProcess::@6 + //SEG189 getCharToProcess::@6 b6: - //SEG188 [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -7390,16 +7527,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG191 getCharToProcess::@7 + //SEG193 getCharToProcess::@7 b7: - //SEG192 [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG194 [123] 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 - //SEG199 [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG201 [129] *((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 - //SEG200 getCharToProcess::@return + //SEG202 getCharToProcess::@return breturn: - //SEG201 [128] return + //SEG203 [130] return rts - //SEG202 getCharToProcess::@9 + //SEG204 getCharToProcess::@9 b9: - //SEG203 [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG205 [131] (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 - //SEG204 [106] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG205 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG206 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG207 [106] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG208 [106] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG209 [106] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG210 getCharToProcess::@10 + //SEG212 getCharToProcess::@10 b10: - //SEG211 [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG213 [132] (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 - //SEG212 [107] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG213 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG214 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG215 [107] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG216 [107] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG217 getCharToProcess::@12 + //SEG219 getCharToProcess::@12 b12: - //SEG218 [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [133] (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 - //SEG219 getCharToProcess::@11 + //SEG221 getCharToProcess::@11 b11: - //SEG220 [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG222 [134] (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 } -//SEG221 setupRasterIrq +//SEG223 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG222 asm { sei } + //SEG224 asm { sei } sei - //SEG223 [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG225 [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG227 [138] *((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 - //SEG226 setupRasterIrq::@1 + //SEG228 setupRasterIrq::@1 b1: - //SEG227 [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG229 [139] *((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 - //SEG228 setupRasterIrq::@2 + //SEG230 setupRasterIrq::@2 b2: - //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG232 asm { cli } + //SEG234 asm { cli } cli jmp breturn - //SEG233 setupRasterIrq::@return + //SEG235 setupRasterIrq::@return breturn: - //SEG234 [142] return + //SEG236 [144] return rts } -//SEG235 initSprites +//SEG237 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG236 [144] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG237 [144] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG239 [146] 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 - //SEG238 [144] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG239 [144] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG240 initSprites::@1 + //SEG242 initSprites::@1 b1: - //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG243 [147] 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 + //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -7588,234 +7725,234 @@ initSprites: { cmp #initSprites::@2] + //SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 // Initialize sprite registers - //SEG246 [148] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG247 [148] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG248 initSprites::@2 + //SEG250 initSprites::@2 b2: - //SEG249 [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG251 [151] *((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 - //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG251 [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG252 initSprites::@3 + //SEG254 initSprites::@3 b3: - //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG256 initSprites::@return + //SEG258 initSprites::@return breturn: - //SEG257 [155] return + //SEG259 [157] return rts } -//SEG258 initSquareTables +//SEG260 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG259 [157] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG260 [157] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG261 [157] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG262 [157] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG263 initSquareTables::@1 + //SEG265 initSquareTables::@1 b1: - //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG265 initSquareTables::@3 + //SEG267 initSquareTables::@3 b3: - //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 lda x sec sbc #$14 - //SEG267 [160] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG268 [160] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG269 initSquareTables::@4 + //SEG271 initSquareTables::@4 b4: - //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG271 [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG272 [163] call mul8u - //SEG273 [186] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG274 [165] call mul8u + //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG274 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG275 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG276 [164] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG277 initSquareTables::@9 + //SEG279 initSquareTables::@9 b9: - //SEG278 [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG279 [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG280 [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG282 [169] *((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 - //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG283 [170] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG284 [170] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG285 [170] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG286 [170] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG287 initSquareTables::@5 + //SEG289 initSquareTables::@5 b5: - //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG289 initSquareTables::@7 + //SEG291 initSquareTables::@7 b7: - //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 lda y sec sbc #$c - //SEG291 [173] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG292 [173] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG293 initSquareTables::@8 + //SEG295 initSquareTables::@8 b8: - //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG295 [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG296 [176] call mul8u - //SEG297 [186] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG298 [178] call mul8u + //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG298 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG299 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG300 [177] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b10 - //SEG301 initSquareTables::@10 + //SEG303 initSquareTables::@10 b10: - //SEG302 [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG303 [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG304 [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG306 [182] *((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 - //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG306 [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [184] 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 - //SEG307 initSquareTables::@return + //SEG309 initSquareTables::@return breturn: - //SEG308 [183] return + //SEG310 [185] return rts - //SEG309 initSquareTables::@6 + //SEG311 initSquareTables::@6 b6: - //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8_from_b6 - //SEG311 initSquareTables::@2 + //SEG313 initSquareTables::@2 b2: - //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4_from_b2 } -//SEG313 mul8u +//SEG315 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $1c .label res = $1a .label return = $1a - //SEG314 [187] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG315 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG316 [187] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG318 mul8u::@1 + //SEG320 mul8u::@1 b1: - //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG320 mul8u::@return + //SEG322 mul8u::@return breturn: - //SEG321 [189] return + //SEG323 [191] return rts - //SEG322 mul8u::@2 + //SEG324 mul8u::@2 b2: - //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG325 mul8u::@4 + //SEG327 mul8u::@4 b4: - //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7823,79 +7960,79 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG327 [193] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG328 [193] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG329 mul8u::@3 + //SEG331 mul8u::@3 b3: - //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG332 [187] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG333 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG334 [187] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG335 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG336 irqBottom +//SEG338 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG337 entry interrupt(HARDWARE_ALL) + //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG338 [197] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG339 [197] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG340 [197] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG341 [197] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG342 irqBottom::@1 + //SEG344 irqBottom::@1 b1: - //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG344 [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 - //SEG345 [200] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] + //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] b2_from_b1: jmp b2 - //SEG346 irqBottom::@2 + //SEG348 irqBottom::@2 b2: - //SEG347 [201] call processChars - //SEG348 [206] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG349 [203] call processChars + //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG349 irqBottom::@3 + //SEG351 irqBottom::@3 b3: - //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG352 [204] *((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 - //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG353 irqBottom::@return + //SEG355 irqBottom::@return breturn: - //SEG354 [205] return - exit interrupt(HARDWARE_ALL) + //SEG356 [207] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7904,50 +8041,53 @@ irqBottom: { ldy #00 rti } -//SEG355 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _14 = $35 - .label _24 = $33 - .label _28 = $38 - .label _33 = $3a - .label processing = $30 - .label bitmask = $32 + .label _16 = $38 + .label _26 = $36 + .label processing = $33 + .label bitmask = $35 .label i = $1e - .label xpos = $33 - .label ypos = $37 - //SEG356 [207] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label xpos = $36 + .label ypos = $3a + .label numActive = $1f + //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG357 [207] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + lda #0 + sta numActive + //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG358 [207] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG359 [207] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy jmp b1 - //SEG360 processChars::@1 + //SEG364 processChars::@1 b1: - //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG365 [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa + //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG366 [213] (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 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -7960,23 +8100,23 @@ processChars: { bne !- !e: sta bitmask - //SEG367 [214] 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 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE - beq b2 - jmp b9 - //SEG368 processChars::@9 - b9: - //SEG369 [215] 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 + beq b2_from_b1 + jmp b10 + //SEG372 processChars::@10 + b10: + //SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 - jmp b10 - //SEG370 processChars::@10 - b10: - //SEG371 [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + jmp b11 + //SEG374 processChars::@11 + b11: + //SEG375 [218] *(*((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 @@ -7988,12 +8128,12 @@ processChars: { txa !: sta $ffff - //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [219] *((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 - //SEG373 [218] *((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 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -8003,15 +8143,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [221] *((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 - //SEG375 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -8026,54 +8166,54 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 bne b4 - jmp b7 - //SEG379 processChars::@7 - b7: - //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + jmp b8 + //SEG383 processChars::@8 + b8: + //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG385 [226] *((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 - //SEG382 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG386 [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _14 + sta _16 iny lda (processing),y - sta _14+1 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - //SEG387 [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 -- vbuz1=_byte_vwuz2 - lda _14 + sta _16+1 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 + lda _16 sta ypos - //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG389 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [233] 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 @@ -8085,10 +8225,10 @@ processChars: { cmp #(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + jmp b15 + //SEG394 processChars::@15 + b15: + //SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -8099,10 +8239,10 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b12 - //SEG392 processChars::@12 - b12: - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + jmp b14 + //SEG396 processChars::@14 + b14: + //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -8114,10 +8254,10 @@ processChars: { cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + jmp b13 + //SEG398 processChars::@13 + b13: + //SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -8129,42 +8269,35 @@ processChars: { cmp (processing),y bcc b6 !: - jmp b8 - //SEG396 processChars::@8 - b8: - //SEG397 [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - //SEG398 [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 -- vbuaa=_byte_vwuz1 - lda _24 - //SEG399 [237] (byte) processChars::xchar#0 ← (byte~) processChars::$25 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + jmp b9 + //SEG400 processChars::@9 + b9: + //SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1 + lda _26 + //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 - //SEG400 [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG401 [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax - lda (processing),y clc + lda (processing),y adc VXSIN,x - sta _28 + sta (processing),y iny lda (processing),y adc VXSIN+1,x - sta _28+1 - //SEG402 [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX - lda _28 sta (processing),y - iny - lda _28+1 - sta (processing),y - //SEG403 [241] *((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 + //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -8178,35 +8311,28 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG404 [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG405 [243] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 - //SEG406 [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG407 [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax - lda (processing),y clc + lda (processing),y adc VYSIN,x - sta _33 + sta (processing),y iny lda (processing),y adc VYSIN+1,x - sta _33+1 - //SEG408 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY - lda _33 sta (processing),y - iny - lda _33+1 - sta (processing),y - //SEG409 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -8218,104 +8344,121 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y + jmp b7 + //SEG412 processChars::@7 + b7: + //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + inc numActive + //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + b2_from_b1: + b2_from_b7: + //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG410 processChars::@2 + //SEG416 processChars::@2 b2: - //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG412 [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 + jmp b12 + //SEG419 processChars::@12 + b12: + //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 + lax numActive + axs #-['0'] + //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx + stx SCREEN+$3e7 jmp breturn - //SEG413 processChars::@return + //SEG422 processChars::@return breturn: - //SEG414 [250] return + //SEG423 [254] return rts - //SEG415 processChars::@6 + //SEG424 processChars::@6 b6: - //SEG416 [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG425 [255] *((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 - //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG418 [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE - jmp b2 - //SEG419 processChars::@4 + jmp b7 + //SEG428 processChars::@4 b4: - //SEG420 [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG429 [258] *((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 } -//SEG421 irqTop +//SEG430 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG422 entry interrupt(HARDWARE_ALL) + //SEG431 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG423 [256] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG424 [256] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG425 [256] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG426 [256] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG427 irqTop::@1 + //SEG436 irqTop::@1 b1: - //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 - //SEG430 [259] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] + //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] b2_from_b1: - //SEG431 [259] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 + //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 //*BORDERCOL = WHITE; //*BGCOL = WHITE; - //SEG432 [259] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] + //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] b2_from_b2: - //SEG433 [259] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy + //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy jmp b2 - //SEG434 irqTop::@2 + //SEG443 irqTop::@2 b2: - //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG437 irqTop::@3 + //SEG446 irqTop::@3 b3: - //SEG438 [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG447 [266] *((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 - //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG441 irqTop::@return + //SEG450 irqTop::@return breturn: - //SEG442 [265] return - exit interrupt(HARDWARE_ALL) + //SEG451 [269] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8397,16 +8540,18 @@ Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b9 Removing instruction jmp b10 -Removing instruction jmp b3 -Removing instruction jmp b7 -Removing instruction jmp b5 -Removing instruction jmp b13 -Removing instruction jmp b12 Removing instruction jmp b11 +Removing instruction jmp b3 Removing instruction jmp b8 +Removing instruction jmp b5 +Removing instruction jmp b15 +Removing instruction jmp b14 +Removing instruction jmp b13 +Removing instruction jmp b9 +Removing instruction jmp b7 Removing instruction jmp b2 +Removing instruction jmp b12 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b2 @@ -8430,6 +8575,7 @@ Replacing instruction ldy #0 with TAY Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 +Removing instruction lda #0 Removing instruction lda ypos Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 @@ -8450,6 +8596,7 @@ Replacing label b8_from_b6 with b8 Replacing label b4_from_b2 with b4 Replacing label b3_from_b2 with b3 Replacing label b1_from_b1 with b1 +Replacing label b2_from_b1 with b2 Replacing label b1_from_b2 with b1 Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 @@ -8489,6 +8636,8 @@ Removing instruction b2_from_b1: Removing instruction processChars_from_b2: Removing instruction breturn: Removing instruction b1_from_b2: +Removing instruction b2_from_b1: +Removing instruction b2_from_b7: Removing instruction b1_from_b1: Removing instruction b2_from_b2: Removing instruction breturn: @@ -8542,13 +8691,14 @@ Removing instruction b1_from_irqBottom: Removing instruction b2: Removing instruction b3: Removing instruction b1_from_processChars: -Removing instruction b9: Removing instruction b10: -Removing instruction b7: -Removing instruction b13: -Removing instruction b12: Removing instruction b11: Removing instruction b8: +Removing instruction b15: +Removing instruction b14: +Removing instruction b13: +Removing instruction b9: +Removing instruction b12: Removing instruction breturn: Removing instruction b1_from_irqTop: Removing instruction b2_from_b1: @@ -8580,23 +8730,23 @@ Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [417] bne b2 to beq -Fixing long branch [1009] bne b1 to beq -Fixing long branch [211] bne b3 to beq -Fixing long branch [217] beq b8 to bne -Fixing long branch [465] beq b11 to bne -Fixing long branch [486] beq b12 to bne -Fixing long branch [490] bcc b12 to bcs -Fixing long branch [821] beq b2 to bne -Fixing long branch [873] bne b4 to beq -Fixing long branch [907] bcc b6 to bcs -Fixing long branch [914] bcc b6 to bcs -Fixing long branch [921] bcc b6 to bcs -Fixing long branch [928] bcc b6 to bcs +Fixing long branch [425] bne b2 to beq +Fixing long branch [1007] bne b1 to beq +Fixing long branch [212] bne b3 to beq +Fixing long branch [218] beq b8 to bne +Fixing long branch [473] beq b11 to bne +Fixing long branch [494] beq b12 to bne +Fixing long branch [498] bcc b12 to bcs +Fixing long branch [829] beq b2 to bne +Fixing long branch [881] bne b4 to beq +Fixing long branch [915] bcc b6 to bcs +Fixing long branch [922] bcc b6 to bcs +Fixing long branch [929] bcc b6 to bcs Fixing long branch [936] bcc b6 to bcs -Fixing long branch [943] bcc b6 to bcs +Fixing long branch [944] bcc b6 to bcs Fixing long branch [951] bcc b6 to bcs -Fixing long branch [958] bcc b6 to bcs +Fixing long branch [959] bcc b6 to bcs +Fixing long branch [966] bcc b6 to bcs FINAL SYMBOL TABLE (label) @1 @@ -8718,13 +8868,13 @@ FINAL SYMBOL TABLE (word) YPOS_TOPMOST (const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD: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 @@ -8894,16 +9044,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$10 reg byte a 22.0 -(byte~) processChars::$11 reg byte a 22.0 +(byte~) processChars::$1 reg byte x 4.0 +(byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 -(word~) processChars::$14 $14 zp ZP_WORD:53 11.0 -(byte~) processChars::$16 reg byte x 6.6000000000000005 -(word~) processChars::$24 $24 zp ZP_WORD:51 11.0 -(byte~) processChars::$25 reg byte a 22.0 -(word~) processChars::$28 $28 zp ZP_WORD:56 22.0 -(byte~) processChars::$30 reg byte a 22.0 -(word~) processChars::$33 $33 zp ZP_WORD:58 22.0 +(byte~) processChars::$15 reg byte a 22.0 +(word~) processChars::$16 $16 zp ZP_WORD:56 11.0 +(byte~) processChars::$18 reg byte x 6.6000000000000005 +(word~) processChars::$26 $26 zp ZP_WORD:54 11.0 +(byte~) processChars::$27 reg byte a 22.0 +(byte~) processChars::$31 reg byte a 22.0 (byte~) processChars::$34 reg byte a 22.0 (byte~) processChars::$36 reg byte a 22.0 (byte~) processChars::$37 reg byte a 22.0 @@ -8916,6 +9065,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@11 (label) processChars::@12 (label) processChars::@13 +(label) processChars::@14 +(label) processChars::@15 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 @@ -8926,20 +9077,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 2.2916666666666665 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.2916666666666665 (byte) processChars::i (byte) processChars::i#1 i zp ZP_BYTE:30 16.5 (byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 +(byte) processChars::numActive +(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 +(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 0.7674418604651163 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.3055555555555556 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.3235294117647059 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:51 2.0625 +(word) processChars::xpos#0 xpos zp ZP_WORD:54 2.0625 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 22.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp ZP_BYTE:55 2.5384615384615383 +(byte) processChars::ypos#0 ypos zp ZP_BYTE:58 2.75 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -8948,26 +9103,28 @@ 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.25 -(byte) startProcessing::$38 reg byte a 2002.0 -(byte) startProcessing::$39 reg byte a 2002.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 +(byte~) startProcessing::$21 reg byte a 2.0 +(word~) startProcessing::$22 $22 zp ZP_WORD:45 0.5714285714285714 +(byte~) startProcessing::$29 reg byte a 2002.0 +(byte~) startProcessing::$30 reg byte x 2.25 (word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 (byte) startProcessing::$40 reg byte a 2002.0 -(word) startProcessing::$42 $42 zp ZP_WORD:35 4.0 -(word) startProcessing::$43 $43 zp ZP_WORD:33 4.0 -(byte) startProcessing::$45 reg byte a 4.0 -(byte) startProcessing::$46 reg byte a 4.0 +(byte) startProcessing::$41 reg byte a 2002.0 +(byte) startProcessing::$42 reg byte a 2002.0 +(word) startProcessing::$44 $44 zp ZP_WORD:36 4.0 +(word) startProcessing::$45 $45 zp ZP_WORD:34 4.0 (byte) startProcessing::$47 reg byte a 4.0 +(byte) startProcessing::$48 reg byte a 4.0 +(byte) startProcessing::$49 reg byte a 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 (word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 @@ -8984,9 +9141,9 @@ 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.3846153846153846 +(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.2619047619047619 +(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 @@ -8994,7 +9151,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (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:7 31.285714285714285 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 29.90909090909092 (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:7 202.0 @@ -9005,18 +9162,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (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.10526315789473684 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.1 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:43 0.4 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.3333333333333333 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.4 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.3333333333333333 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.5714285714285714 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.4444444444444444 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] @@ -9046,6 +9203,7 @@ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::re zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] reg byte a [ main::$25 ] @@ -9056,27 +9214,29 @@ 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::$38 ] -reg byte a [ startProcessing::$39 ] +zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +zp ZP_BYTE:33 [ startProcessing::center_y#0 ] reg byte a [ startProcessing::$40 ] -reg byte a [ startProcessing::$27 ] -zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$43 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:35 [ startProcessing::$42 ] -zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] +reg byte a [ startProcessing::$41 ] +reg byte a [ startProcessing::$42 ] +reg byte a [ startProcessing::$29 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] +zp ZP_WORD:36 [ startProcessing::$44 ] +zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] reg byte a [ startProcessing::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::$45 ] -reg byte a [ startProcessing::$46 ] +zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] +zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] +zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] +reg byte a [ startProcessing::$21 ] +zp ZP_WORD:45 [ startProcessing::$22 ] reg byte a [ startProcessing::$47 ] -reg byte x [ startProcessing::$28 ] +reg byte a [ startProcessing::$48 ] +reg byte a [ startProcessing::$49 ] +reg byte x [ startProcessing::$30 ] 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 ] @@ -9084,28 +9244,27 @@ reg byte a [ processChars::$64 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] reg byte a [ processChars::$36 ] -zp ZP_WORD:48 [ processChars::processing#0 ] -zp ZP_BYTE:50 [ processChars::bitmask#0 ] -zp ZP_WORD:51 [ processChars::xpos#0 processChars::$24 ] -reg byte a [ processChars::$10 ] -reg byte a [ processChars::$11 ] -reg byte x [ processChars::$16 ] +zp ZP_WORD:51 [ processChars::processing#0 ] +zp ZP_BYTE:53 [ processChars::bitmask#0 ] +zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] +reg byte a [ processChars::$12 ] reg byte a [ processChars::$13 ] -zp ZP_WORD:53 [ processChars::$14 ] -zp ZP_BYTE:55 [ processChars::ypos#0 ] -reg byte a [ processChars::$25 ] +reg byte x [ processChars::$18 ] +reg byte a [ processChars::$15 ] +zp ZP_WORD:56 [ processChars::$16 ] +zp ZP_BYTE:58 [ processChars::ypos#0 ] +reg byte a [ processChars::$27 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$37 ] -zp ZP_WORD:56 [ processChars::$28 ] -reg byte a [ processChars::$30 ] +reg byte a [ processChars::$31 ] reg byte a [ processChars::ychar#0 ] reg byte a [ processChars::$38 ] -zp ZP_WORD:58 [ processChars::$33 ] +reg byte x [ processChars::$1 ] reg byte a [ processChars::$34 ] FINAL ASSEMBLER -Score: 243792 +Score: 243580 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in letters @@ -9204,7 +9363,7 @@ main: { .label i = 6 .label center_dist = $14 //SEG14 [7] call initSquareTables - //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables] jsr initSquareTables //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] //SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -9299,7 +9458,7 @@ main: { //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG47 main::@3 //SEG48 [29] call initSprites - //SEG49 [143] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites] jsr initSprites //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] //SEG51 main::@8 @@ -9310,7 +9469,7 @@ main: { // Main loop //SEG54 main::@4 //SEG55 [33] call getCharToProcess - //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] jsr getCharToProcess //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x @@ -9350,33 +9509,34 @@ main: { } //SEG74 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 _0 = $22 + .label _1 = $22 + .label _2 = $22 .label _4 = $a .label _5 = $a .label _7 = 8 .label _8 = 8 - .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 _10 = $28 + .label _11 = $28 + .label _12 = $28 + .label _14 = $2a + .label _15 = $2a + .label _16 = $2a + .label _22 = $2d + .label center_x = $20 + .label center_y = $21 .label i = 7 - .label screenPtr = $25 + .label screenPtr = $26 .label spriteData = $a .label chargenData = 8 - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c .label freeIdx = 7 - .label _42 = $23 - .label _43 = $21 + .label _44 = $24 + .label _45 = $22 //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff @@ -9390,19 +9550,19 @@ startProcessing: { //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy //SEG82 startProcessing::@2 b2: - //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y @@ -9425,24 +9585,24 @@ startProcessing: { sta _0 lda #0 sta _0+1 - //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _42 + sta _44 lda _0+1 rol - sta _42+1 - asl _42 - rol _42+1 - //SEG95 [58] (word) startProcessing::$43 ← (word) startProcessing::$42 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _43 + sta _44+1 + asl _44 + rol _44+1 + //SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 + lda _45 clc - adc _42 - sta _43 - lda _43+1 - adc _42+1 - sta _43+1 - //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 -- vwuz1=vwuz1_rol_3 + adc _44 + sta _45 + lda _45+1 + adc _44+1 + sta _45+1 + //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 @@ -9619,85 +9779,94 @@ startProcessing: { lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3 lda freeIdx asl - //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + asl + asl + //SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa + sta _22 + lda #0 + sta _22+1 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda freeIdx + asl + //SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG138 [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG139 [93] *((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 + //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 - lda #$3c + //SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1 + lda _22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda #0 + lda _22+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2 lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG142 [96] *((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 + //SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG143 [97] *((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 + //SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG144 [98] *((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 + //SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG145 [99] *((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 + //SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG146 startProcessing::@return - //SEG147 [100] return + //SEG148 startProcessing::@return + //SEG149 [102] return rts - //SEG148 startProcessing::@8 + //SEG150 startProcessing::@8 b8: - //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG150 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] - //SEG151 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG152 startProcessing::@3 + //SEG154 startProcessing::@3 b3: - //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG154 [103] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG156 [105] 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: - //SEG155 startProcessing::@9 - //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG157 startProcessing::@9 + //SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4 } -//SEG157 getCharToProcess +//SEG159 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 _9 = $2f + .label _10 = $2f + .label _11 = $2f .label return_dist = $14 .label x = $f .label dist = $14 @@ -9708,54 +9877,54 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $2e - .label _16 = $2c - //SEG158 [106] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] - //SEG159 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + .label _15 = $31 + .label _16 = $2f + //SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta closest_x - //SEG161 [106] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG163 [108] 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 - //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG163 [106] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG165 [108] 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 - //SEG164 getCharToProcess::@1 + //SEG166 getCharToProcess::@1 b1: - //SEG165 [107] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] - //SEG166 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG167 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG168 [107] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG169 [107] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x - //SEG170 getCharToProcess::@2 + //SEG172 getCharToProcess::@2 b2: - //SEG171 [108] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG173 [110] 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: - //SEG172 getCharToProcess::@4 - //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG174 getCharToProcess::@4 + //SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG175 [111] (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 + //SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -9764,7 +9933,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG176 [112] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG178 [114] 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 !+ @@ -9777,41 +9946,41 @@ getCharToProcess: { bcs !b12+ jmp b12 !b12: - //SEG177 getCharToProcess::@5 - //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG179 getCharToProcess::@5 + //SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG180 [115] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] - //SEG181 [115] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG182 [115] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG183 [115] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy - //SEG184 getCharToProcess::@3 + //SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG186 getCharToProcess::@3 b3: - //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 - //SEG187 getCharToProcess::@6 - //SEG188 [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG189 getCharToProcess::@6 + //SEG190 [120] (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 !: - //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 - //SEG191 getCharToProcess::@7 - //SEG192 [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG193 getCharToProcess::@7 + //SEG194 [123] 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 !: - //SEG193 getCharToProcess::@8 - //SEG194 [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + //SEG195 getCharToProcess::@8 + //SEG196 [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda return_y sta _9 lda #0 sta _9+1 - //SEG195 [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG197 [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _9 asl sta _15 @@ -9834,7 +10003,7 @@ getCharToProcess: { sta _15+1 asl _15 rol _15+1 - //SEG196 [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 + //SEG198 [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 lda _16 clc adc _15 @@ -9842,14 +10011,14 @@ getCharToProcess: { lda _16+1 adc _15+1 sta _16+1 - //SEG197 [125] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG199 [127] (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 - //SEG198 [126] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 + //SEG200 [128] (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 - //SEG199 [127] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG201 [129] *((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 - //SEG200 getCharToProcess::@return + //SEG202 getCharToProcess::@return breturn: - //SEG201 [128] return + //SEG203 [130] return rts - //SEG202 getCharToProcess::@9 + //SEG204 getCharToProcess::@9 b9: - //SEG203 [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG205 [131] (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 - //SEG204 [106] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] - //SEG205 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG206 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG207 [106] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG208 [106] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG209 [106] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG210 getCharToProcess::@10 + //SEG212 getCharToProcess::@10 b10: - //SEG211 [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG213 [132] (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 - //SEG212 [107] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] - //SEG213 [107] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG214 [107] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG215 [107] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG216 [107] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG217 getCharToProcess::@12 + //SEG219 getCharToProcess::@12 b12: - //SEG218 [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [133] (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 - //SEG219 getCharToProcess::@11 + //SEG221 getCharToProcess::@11 b11: - //SEG220 [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG222 [134] (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 } -//SEG221 setupRasterIrq +//SEG223 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG222 asm { sei } + //SEG224 asm { sei } sei - //SEG223 [134] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG225 [136] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG227 [138] *((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 - //SEG226 setupRasterIrq::@1 - //SEG227 [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG228 setupRasterIrq::@1 + //SEG229 [139] *((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 - //SEG228 setupRasterIrq::@2 - //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG230 setupRasterIrq::@2 + //SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG232 asm { cli } + //SEG234 asm { cli } cli - //SEG233 setupRasterIrq::@return - //SEG234 [142] return + //SEG235 setupRasterIrq::@return + //SEG236 [144] return rts } -//SEG235 initSprites +//SEG237 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG236 [144] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] - //SEG237 [144] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA sta sp+1 // Clear sprite data - //SEG238 [144] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] - //SEG239 [144] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy - //SEG240 initSprites::@1 + //SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG242 initSprites::@1 b1: - //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (sp),y - //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG243 [147] 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 + //SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1 @@ -9985,189 +10154,189 @@ initSprites: { cmp #initSprites::@2] - //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] + //SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 // Initialize sprite registers - //SEG246 [148] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] - //SEG247 [148] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy - //SEG248 initSprites::@2 + //SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG250 initSprites::@2 b2: - //SEG249 [149] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG251 [151] *((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 - //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG251 [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG252 initSprites::@3 - //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 initSprites::@3 + //SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG256 initSprites::@return - //SEG257 [155] return + //SEG258 initSprites::@return + //SEG259 [157] return rts } -//SEG258 initSquareTables +//SEG260 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG259 [157] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] - //SEG260 [157] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG261 [157] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] - //SEG262 [157] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy - //SEG263 initSquareTables::@1 + //SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG265 initSquareTables::@1 b1: - //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 - //SEG265 initSquareTables::@3 - //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG267 initSquareTables::@3 + //SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$14 - //SEG267 [160] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] - //SEG268 [160] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy - //SEG269 initSquareTables::@4 + //SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG271 initSquareTables::@4 b4: - //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG271 [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG272 [163] call mul8u - //SEG273 [186] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] - //SEG274 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG275 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG274 [165] call mul8u + //SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG276 [164] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG277 initSquareTables::@9 - //SEG278 [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG279 [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG279 initSquareTables::@9 + //SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG280 [167] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG282 [169] *((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 - //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1 - //SEG283 [170] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] - //SEG284 [170] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG285 [170] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] - //SEG286 [170] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy - //SEG287 initSquareTables::@5 + //SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG289 initSquareTables::@5 b5: - //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 - //SEG289 initSquareTables::@7 - //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG291 initSquareTables::@7 + //SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$c - //SEG291 [173] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] - //SEG292 [173] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy - //SEG293 initSquareTables::@8 + //SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG295 initSquareTables::@8 b8: - //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG295 [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG296 [176] call mul8u - //SEG297 [186] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] - //SEG298 [186] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG299 [186] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG298 [178] call mul8u + //SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG300 [177] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG301 initSquareTables::@10 - //SEG302 [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG303 [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG303 initSquareTables::@10 + //SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG304 [180] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG306 [182] *((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 - //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG306 [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5 - //SEG307 initSquareTables::@return - //SEG308 [183] return + //SEG309 initSquareTables::@return + //SEG310 [185] return rts - //SEG309 initSquareTables::@6 + //SEG311 initSquareTables::@6 b6: - //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8 - //SEG311 initSquareTables::@2 + //SEG313 initSquareTables::@2 b2: - //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4 } -//SEG313 mul8u +//SEG315 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $1c .label res = $1a .label return = $1a - //SEG314 [187] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG315 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG316 [187] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG318 mul8u::@1 + //SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG320 mul8u::@1 b1: - //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG320 mul8u::@return - //SEG321 [189] return + //SEG322 mul8u::@return + //SEG323 [191] return rts - //SEG322 mul8u::@2 + //SEG324 mul8u::@2 b2: - //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG325 mul8u::@4 - //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG327 mul8u::@4 + //SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -10175,63 +10344,63 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG327 [193] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG328 [193] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG329 mul8u::@3 + //SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG331 mul8u::@3 b3: - //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG332 [187] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG333 [187] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG334 [187] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG335 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG336 irqBottom +//SEG338 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG337 entry interrupt(HARDWARE_ALL) + //SEG339 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG338 [197] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] - //SEG339 [197] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG340 [197] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - //SEG341 [197] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - //SEG342 irqBottom::@1 + //SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG344 irqBottom::@1 b1: - //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG344 [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG345 [200] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] - //SEG346 irqBottom::@2 - //SEG347 [201] call processChars - //SEG348 [206] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2] + //SEG348 irqBottom::@2 + //SEG349 [203] call processChars + //SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] jsr processChars - //SEG349 irqBottom::@3 - //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG351 irqBottom::@3 + //SEG352 [204] *((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 - //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG353 irqBottom::@return - //SEG354 [205] return - exit interrupt(HARDWARE_ALL) + //SEG355 irqBottom::@return + //SEG356 [207] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -10240,46 +10409,48 @@ irqBottom: { ldy #00 rti } -//SEG355 processChars +//SEG357 processChars // Process any chars in the PROCESSING array processChars: { - .label _14 = $35 - .label _24 = $33 - .label _28 = $38 - .label _33 = $3a - .label processing = $30 - .label bitmask = $32 + .label _16 = $38 + .label _26 = $36 + .label processing = $33 + .label bitmask = $35 .label i = $1e - .label xpos = $33 - .label ypos = $37 - //SEG356 [207] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] - //SEG357 [207] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + .label xpos = $36 + .label ypos = $3a + .label numActive = $1f + //SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 + sta numActive + //SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 sta i - //SEG358 [207] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] - //SEG359 [207] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG360 processChars::@1 + //SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG364 processChars::@1 b1: - //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG365 [212] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa + //SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa clc adc #PROCESSING adc #0 sta processing+1 - //SEG366 [213] (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 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -10292,20 +10463,20 @@ processChars: { bne !- !e: sta bitmask - //SEG367 [214] 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 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE bne !b2+ jmp b2 !b2: - //SEG368 processChars::@9 - //SEG369 [215] 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 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 lda (processing),y cmp #STATUS_NEW bne b3 - //SEG370 processChars::@10 - //SEG371 [216] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG374 processChars::@11 + //SEG375 [218] *(*((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 @@ -10317,12 +10488,12 @@ processChars: { txa !: sta $ffff - //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG376 [219] *((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 - //SEG373 [218] *((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 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -10332,14 +10503,14 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG378 [221] *((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 - //SEG375 processChars::@3 + //SEG379 processChars::@3 b3: - //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -10354,52 +10525,52 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 beq !b4+ jmp b4 !b4: - //SEG379 processChars::@7 - //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG383 processChars::@8 + //SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG385 [226] *((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 - //SEG382 processChars::@5 + //SEG386 processChars::@5 b5: - //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG386 [228] (word~) processChars::$14 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _14 + sta _16 iny lda (processing),y - sta _14+1 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - lsr _14+1 - ror _14 - //SEG387 [229] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$14 -- vbuz1=_byte_vwuz2 - lda _14 + sta _16+1 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + lsr _16+1 + ror _16 + //SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2 + lda _16 sta ypos - //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta SPRITES_YPOS,x - //SEG389 [231] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG393 [233] 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 @@ -10415,8 +10586,8 @@ processChars: { jmp b6 !b6: !: - //SEG390 processChars::@13 - //SEG391 [232] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + //SEG394 processChars::@15 + //SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -10431,8 +10602,8 @@ processChars: { jmp b6 !b6: !: - //SEG392 processChars::@12 - //SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG396 processChars::@14 + //SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -10448,8 +10619,8 @@ processChars: { jmp b6 !b6: !: - //SEG394 processChars::@11 - //SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + //SEG398 processChars::@13 + //SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -10465,40 +10636,33 @@ processChars: { jmp b6 !b6: !: - //SEG396 processChars::@8 - //SEG397 [235] (word~) processChars::$24 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - lsr _24+1 - ror _24 - //SEG398 [236] (byte~) processChars::$25 ← (byte)(word~) processChars::$24 -- vbuaa=_byte_vwuz1 - lda _24 - //SEG399 [237] (byte) processChars::xchar#0 ← (byte~) processChars::$25 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG400 processChars::@9 + //SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + lsr _26+1 + ror _26 + //SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1 + lda _26 + //SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 - //SEG400 [238] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG401 [239] (word~) processChars::$28 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax - lda (processing),y clc + lda (processing),y adc VXSIN,x - sta _28 + sta (processing),y iny lda (processing),y adc VXSIN+1,x - sta _28+1 - //SEG402 [240] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← (word~) processChars::$28 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX - lda _28 sta (processing),y - iny - lda _28+1 - sta (processing),y - //SEG403 [241] *((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 + //SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -10512,35 +10676,28 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG404 [242] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + //SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda ypos lsr lsr lsr - //SEG405 [243] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + //SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 - //SEG406 [244] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG407 [245] (word~) processChars::$33 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- vwuz1=pwuz2_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + //SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax - lda (processing),y clc + lda (processing),y adc VYSIN,x - sta _33 + sta (processing),y iny lda (processing),y adc VYSIN+1,x - sta _33+1 - //SEG408 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← (word~) processChars::$33 -- pwuz1_derefidx_vbuc1=vwuz2 - ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY - lda _33 sta (processing),y - iny - lda _33+1 - sta (processing),y - //SEG409 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -10552,91 +10709,103 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - //SEG410 processChars::@2 + //SEG412 processChars::@7 + b7: + //SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + inc numActive + //SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + //SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + //SEG416 processChars::@2 b2: - //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG412 [249] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG418 [251] 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: - //SEG413 processChars::@return - //SEG414 [250] return + //SEG419 processChars::@12 + //SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 + lax numActive + axs #-['0'] + //SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx + stx SCREEN+$3e7 + //SEG422 processChars::@return + //SEG423 [254] return rts - //SEG415 processChars::@6 + //SEG424 processChars::@6 b6: - //SEG416 [251] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG425 [255] *((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 - //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG418 [253] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE - jmp b2 - //SEG419 processChars::@4 + jmp b7 + //SEG428 processChars::@4 b4: - //SEG420 [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG429 [258] *((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 } -//SEG421 irqTop +//SEG430 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG422 entry interrupt(HARDWARE_ALL) + //SEG431 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG423 [256] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - //SEG424 [256] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG425 [256] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - //SEG426 [256] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - //SEG427 irqTop::@1 + //SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG436 irqTop::@1 b1: - //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG430 [259] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] - //SEG431 [259] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 + //SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2] + //SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1 ldx #0 //*BORDERCOL = WHITE; //*BGCOL = WHITE; - //SEG432 [259] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] - //SEG433 [259] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy - //SEG434 irqTop::@2 + //SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2] + //SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy + //SEG443 irqTop::@2 b2: - //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG437 irqTop::@3 - //SEG438 [262] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG446 irqTop::@3 + //SEG447 [266] *((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 - //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG441 irqTop::@return - //SEG442 [265] return - exit interrupt(HARDWARE_ALL) + //SEG450 irqTop::@return + //SEG451 [269] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: diff --git a/src/test/ref/complex/blackhole/blackhole.sym b/src/test/ref/complex/blackhole/blackhole.sym index c542ffa8c..10fcb7fb4 100644 --- a/src/test/ref/complex/blackhole/blackhole.sym +++ b/src/test/ref/complex/blackhole/blackhole.sym @@ -117,13 +117,13 @@ (word) YPOS_TOPMOST (const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD: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 @@ -293,16 +293,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$10 reg byte a 22.0 -(byte~) processChars::$11 reg byte a 22.0 +(byte~) processChars::$1 reg byte x 4.0 +(byte~) processChars::$12 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 -(word~) processChars::$14 $14 zp ZP_WORD:53 11.0 -(byte~) processChars::$16 reg byte x 6.6000000000000005 -(word~) processChars::$24 $24 zp ZP_WORD:51 11.0 -(byte~) processChars::$25 reg byte a 22.0 -(word~) processChars::$28 $28 zp ZP_WORD:56 22.0 -(byte~) processChars::$30 reg byte a 22.0 -(word~) processChars::$33 $33 zp ZP_WORD:58 22.0 +(byte~) processChars::$15 reg byte a 22.0 +(word~) processChars::$16 $16 zp ZP_WORD:56 11.0 +(byte~) processChars::$18 reg byte x 6.6000000000000005 +(word~) processChars::$26 $26 zp ZP_WORD:54 11.0 +(byte~) processChars::$27 reg byte a 22.0 +(byte~) processChars::$31 reg byte a 22.0 (byte~) processChars::$34 reg byte a 22.0 (byte~) processChars::$36 reg byte a 22.0 (byte~) processChars::$37 reg byte a 22.0 @@ -315,6 +314,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@11 (label) processChars::@12 (label) processChars::@13 +(label) processChars::@14 +(label) processChars::@15 (label) processChars::@2 (label) processChars::@3 (label) processChars::@4 @@ -325,20 +326,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 2.2916666666666665 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.2916666666666665 (byte) processChars::i (byte) processChars::i#1 i zp ZP_BYTE:30 16.5 (byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 +(byte) processChars::numActive +(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 +(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 0.7674418604651163 +(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.3055555555555556 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.3235294117647059 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:51 2.0625 +(word) processChars::xpos#0 xpos zp ZP_WORD:54 2.0625 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 22.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp ZP_BYTE:55 2.5384615384615383 +(byte) processChars::ypos#0 ypos zp ZP_BYTE:58 2.75 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -347,26 +352,28 @@ 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.25 -(byte) startProcessing::$38 reg byte a 2002.0 -(byte) startProcessing::$39 reg byte a 2002.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 +(byte~) startProcessing::$21 reg byte a 2.0 +(word~) startProcessing::$22 $22 zp ZP_WORD:45 0.5714285714285714 +(byte~) startProcessing::$29 reg byte a 2002.0 +(byte~) startProcessing::$30 reg byte x 2.25 (word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0 (byte) startProcessing::$40 reg byte a 2002.0 -(word) startProcessing::$42 $42 zp ZP_WORD:35 4.0 -(word) startProcessing::$43 $43 zp ZP_WORD:33 4.0 -(byte) startProcessing::$45 reg byte a 4.0 -(byte) startProcessing::$46 reg byte a 4.0 +(byte) startProcessing::$41 reg byte a 2002.0 +(byte) startProcessing::$42 reg byte a 2002.0 +(word) startProcessing::$44 $44 zp ZP_WORD:36 4.0 +(word) startProcessing::$45 $45 zp ZP_WORD:34 4.0 (byte) startProcessing::$47 reg byte a 4.0 +(byte) startProcessing::$48 reg byte a 4.0 +(byte) startProcessing::$49 reg byte a 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 (word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 @@ -383,9 +390,9 @@ 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.3846153846153846 +(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.2619047619047619 +(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 @@ -393,7 +400,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (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:7 31.285714285714285 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 29.90909090909092 (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:7 202.0 @@ -404,18 +411,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (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.10526315789473684 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.1 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:43 0.4 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.3333333333333333 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.4 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.3333333333333333 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.5714285714285714 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.4444444444444444 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] @@ -445,6 +452,7 @@ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::re zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ] +zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] reg byte a [ main::$25 ] @@ -455,27 +463,29 @@ 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::$38 ] -reg byte a [ startProcessing::$39 ] +zp ZP_BYTE:32 [ startProcessing::center_x#0 ] +zp ZP_BYTE:33 [ startProcessing::center_y#0 ] reg byte a [ startProcessing::$40 ] -reg byte a [ startProcessing::$27 ] -zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$43 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:35 [ startProcessing::$42 ] -zp ZP_WORD:37 [ startProcessing::screenPtr#0 ] +reg byte a [ startProcessing::$41 ] +reg byte a [ startProcessing::$42 ] +reg byte a [ startProcessing::$29 ] +zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ] +zp ZP_WORD:36 [ startProcessing::$44 ] +zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] reg byte a [ startProcessing::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::$45 ] -reg byte a [ startProcessing::$46 ] +zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] +zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] +zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] +reg byte a [ startProcessing::$21 ] +zp ZP_WORD:45 [ startProcessing::$22 ] reg byte a [ startProcessing::$47 ] -reg byte x [ startProcessing::$28 ] +reg byte a [ startProcessing::$48 ] +reg byte a [ startProcessing::$49 ] +reg byte x [ startProcessing::$30 ] 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 ] @@ -483,21 +493,20 @@ reg byte a [ processChars::$64 ] reg byte a [ processChars::$65 ] reg byte a [ processChars::$66 ] reg byte a [ processChars::$36 ] -zp ZP_WORD:48 [ processChars::processing#0 ] -zp ZP_BYTE:50 [ processChars::bitmask#0 ] -zp ZP_WORD:51 [ processChars::xpos#0 processChars::$24 ] -reg byte a [ processChars::$10 ] -reg byte a [ processChars::$11 ] -reg byte x [ processChars::$16 ] +zp ZP_WORD:51 [ processChars::processing#0 ] +zp ZP_BYTE:53 [ processChars::bitmask#0 ] +zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ] +reg byte a [ processChars::$12 ] reg byte a [ processChars::$13 ] -zp ZP_WORD:53 [ processChars::$14 ] -zp ZP_BYTE:55 [ processChars::ypos#0 ] -reg byte a [ processChars::$25 ] +reg byte x [ processChars::$18 ] +reg byte a [ processChars::$15 ] +zp ZP_WORD:56 [ processChars::$16 ] +zp ZP_BYTE:58 [ processChars::ypos#0 ] +reg byte a [ processChars::$27 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$37 ] -zp ZP_WORD:56 [ processChars::$28 ] -reg byte a [ processChars::$30 ] +reg byte a [ processChars::$31 ] reg byte a [ processChars::ychar#0 ] reg byte a [ processChars::$38 ] -zp ZP_WORD:58 [ processChars::$33 ] +reg byte x [ processChars::$1 ] reg byte a [ processChars::$34 ]