From ba9b11f77b9babd1a978d426acde6efe846754dc Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 16 Jun 2019 00:31:43 +0200 Subject: [PATCH] Added 2D-acceleration. Added more fragments. Improved word ror'ing. --- .../_deref_pwuz1_gt_vwuc1_then_la1.asm | 10 + ...pwuz1_derefidx_vbuyy_gt_vwuc1_then_la1.asm | 10 + .../fragment/unused/vwuz1=vwuz2_ror_1.asm | 2 +- ...refidx_vbuyy_plus_pwuc2_derefidx_vbuxx.asm | 9 + src/main/fragment/vwuz1=vwuz1_ror_1.asm | 3 +- src/main/fragment/vwuz1=vwuz1_ror_3.asm | 6 + src/main/fragment/vwuz1=vwuz2_ror_2.asm | 8 + src/main/fragment/vwuz1=vwuz2_ror_3.asm | 10 + src/main/kc/stdlib/c64.kc | 2 + src/test/kc/complex/blackhole/blackhole.kc | 51 +- src/test/ref/complex/blackhole/blackhole.asm | 280 +- src/test/ref/complex/blackhole/blackhole.cfg | 624 +- src/test/ref/complex/blackhole/blackhole.log | 7782 +++++++++-------- src/test/ref/complex/blackhole/blackhole.sym | 220 +- .../ref/examples/scrolllogo/scrolllogo.asm | 3 +- .../ref/examples/scrolllogo/scrolllogo.log | 73 +- .../ref/examples/sinplotter/sine-plotter.asm | 3 +- .../ref/examples/sinplotter/sine-plotter.log | 51 +- src/test/ref/sinusgen16.asm | 3 +- src/test/ref/sinusgen16.log | 41 +- src/test/ref/sinusgen16b.asm | 3 +- src/test/ref/sinusgen16b.log | 49 +- src/test/ref/sinusgen8b.asm | 3 +- src/test/ref/sinusgen8b.log | 81 +- src/test/ref/test-multiply-16bit.asm | 3 +- src/test/ref/test-multiply-16bit.log | 69 +- 26 files changed, 4937 insertions(+), 4462 deletions(-) create mode 100644 src/main/fragment/_deref_pwuz1_gt_vwuc1_then_la1.asm create mode 100644 src/main/fragment/pwuz1_derefidx_vbuyy_gt_vwuc1_then_la1.asm create mode 100644 src/main/fragment/vwuz1=pwuz2_derefidx_vbuyy_plus_pwuc2_derefidx_vbuxx.asm create mode 100644 src/main/fragment/vwuz1=vwuz1_ror_3.asm create mode 100644 src/main/fragment/vwuz1=vwuz2_ror_2.asm create mode 100644 src/main/fragment/vwuz1=vwuz2_ror_3.asm diff --git a/src/main/fragment/_deref_pwuz1_gt_vwuc1_then_la1.asm b/src/main/fragment/_deref_pwuz1_gt_vwuc1_then_la1.asm new file mode 100644 index 000000000..9a23b704e --- /dev/null +++ b/src/main/fragment/_deref_pwuz1_gt_vwuc1_then_la1.asm @@ -0,0 +1,10 @@ +ldy #1 +lda #>{c1} +cmp ({z1}),y +bcc {la1} +bne !+ +dey +lda #<{c1} +cmp ({z1}),y +bcc {la1} +!: diff --git a/src/main/fragment/pwuz1_derefidx_vbuyy_gt_vwuc1_then_la1.asm b/src/main/fragment/pwuz1_derefidx_vbuyy_gt_vwuc1_then_la1.asm new file mode 100644 index 000000000..53d5abda8 --- /dev/null +++ b/src/main/fragment/pwuz1_derefidx_vbuyy_gt_vwuc1_then_la1.asm @@ -0,0 +1,10 @@ +iny +lda #>{c1} +cmp ({z1}),y +bcc {la1} +bne !+ +dey +lda #<{c1} +cmp ({z1}),y +bcc {la1} +!: diff --git a/src/main/fragment/unused/vwuz1=vwuz2_ror_1.asm b/src/main/fragment/unused/vwuz1=vwuz2_ror_1.asm index 0e46c68cb..f218ce807 100644 --- a/src/main/fragment/unused/vwuz1=vwuz2_ror_1.asm +++ b/src/main/fragment/unused/vwuz1=vwuz2_ror_1.asm @@ -1,5 +1,5 @@ lda {z2}+1 -ror +lsr sta {z1}+1 lda {z2} ror diff --git a/src/main/fragment/vwuz1=pwuz2_derefidx_vbuyy_plus_pwuc2_derefidx_vbuxx.asm b/src/main/fragment/vwuz1=pwuz2_derefidx_vbuyy_plus_pwuc2_derefidx_vbuxx.asm new file mode 100644 index 000000000..13a232598 --- /dev/null +++ b/src/main/fragment/vwuz1=pwuz2_derefidx_vbuyy_plus_pwuc2_derefidx_vbuxx.asm @@ -0,0 +1,9 @@ +lda ({z2}),y +clc +adc {c2},x +sta {z1} +iny +lda ({z2}),y +adc {c2}+1,x +sta {z1}+1 + diff --git a/src/main/fragment/vwuz1=vwuz1_ror_1.asm b/src/main/fragment/vwuz1=vwuz1_ror_1.asm index 5526e49d9..99b5fc9f8 100644 --- a/src/main/fragment/vwuz1=vwuz1_ror_1.asm +++ b/src/main/fragment/vwuz1=vwuz1_ror_1.asm @@ -1,3 +1,2 @@ -clc -ror {z1}+1 +lsr {z1}+1 ror {z1} \ No newline at end of file diff --git a/src/main/fragment/vwuz1=vwuz1_ror_3.asm b/src/main/fragment/vwuz1=vwuz1_ror_3.asm new file mode 100644 index 000000000..137c8d1fe --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz1_ror_3.asm @@ -0,0 +1,6 @@ +lsr {z1}+1 +ror {z1} +lsr {z1}+1 +ror {z1} +lsr {z1}+1 +ror {z1} \ No newline at end of file diff --git a/src/main/fragment/vwuz1=vwuz2_ror_2.asm b/src/main/fragment/vwuz1=vwuz2_ror_2.asm new file mode 100644 index 000000000..cbc69faab --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz2_ror_2.asm @@ -0,0 +1,8 @@ +lda {z2}+1 +lsr +sta {z1}+1 +lda {z2} +ror +sta {z1} +lsr {z1}+1 +ror {z1} \ No newline at end of file diff --git a/src/main/fragment/vwuz1=vwuz2_ror_3.asm b/src/main/fragment/vwuz1=vwuz2_ror_3.asm new file mode 100644 index 000000000..de570882b --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz2_ror_3.asm @@ -0,0 +1,10 @@ +lda {z2}+1 +lsr +sta {z1}+1 +lda {z2} +ror +sta {z1} +lsr {z1}+1 +ror {z1} +lsr {z1}+1 +ror {z1} \ No newline at end of file diff --git a/src/main/kc/stdlib/c64.kc b/src/main/kc/stdlib/c64.kc index 2ada54165..1bcbe7535 100644 --- a/src/main/kc/stdlib/c64.kc +++ b/src/main/kc/stdlib/c64.kc @@ -23,7 +23,9 @@ const byte* CHARGEN = $d000; // Positions of the border (in sprite positions) const byte BORDER_XPOS_LEFT=24; +const word BORDER_XPOS_RIGHT=344; const byte BORDER_YPOS_TOP=50; +const byte BORDER_YPOS_BOTTOM=250; // The offset of the sprite pointers from the screen start address const word SPRITE_PTRS = $3f8; diff --git a/src/test/kc/complex/blackhole/blackhole.kc b/src/test/kc/complex/blackhole/blackhole.kc index 5954cb927..c4d506b81 100644 --- a/src/test/kc/complex/blackhole/blackhole.kc +++ b/src/test/kc/complex/blackhole/blackhole.kc @@ -1,5 +1,4 @@ // Black Hole at the center of the BASIC screen sucking in letters - import "c64" import "multiply" @@ -7,6 +6,10 @@ import "multiply" const byte* SCREEN = 0x0400; // Sprite data for the animating sprites const byte* SPRITE_DATA = 0x2000; +// Values added to VX +const word* VXSIN = 0x2200; +// Values added to VY +const word* VYSIN = 0x2280; // Copy of the screen used for finding chars to process byte[1000] SCREEN_COPY; @@ -14,7 +17,6 @@ byte[1000] SCREEN_COPY; // Max number of chars processed at once const byte NUM_PROCESSING = 8; - // Struct holding char being processed struct ProcessingChar { // x-position (0-39) @@ -75,6 +77,7 @@ void main() { break; startProcessing(center); } while(true); + (*(SCREEN+999)) = '.'; do { (*(COLS+999))++; } while (true); @@ -136,11 +139,24 @@ void startProcessing(struct ProcessingChar center) { word spriteY = (BORDER_YPOS_TOP + (word)center.y*8) << 4; byte spritePtr = (byte)(SPRITE_DATA/64)+spriteIdx; // Put the sprite into the PROCESSING array - PROCESSING[spriteIdx] = { spriteX, spriteY, (word)-((signed byte)spriteIdx*2-8), (word)-16, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; + PROCESSING[spriteIdx] = { spriteX, spriteY, 60, 60, spriteIdx, spritePtr, STATUS_NEW, screenPtr }; } const word XPOS_LEFTMOST = (word)(BORDER_XPOS_LEFT-8)<<4; -const word YPOS_UPMOST = (word)(BORDER_YPOS_TOP-8)<<4; +const word XPOS_RIGHTMOST = (word)(BORDER_XPOS_RIGHT)<<4; +const word YPOS_TOPMOST = (word)(BORDER_YPOS_TOP-8)<<4; +const word YPOS_BOTTOMMOST = (word)(BORDER_YPOS_BOTTOM)<<4; + +kickasm(pc VXSIN) {{ + .for(var i=0; i<40; i++) { + .word -sin(toRadians([i*360]/40))*4 + } +}} +kickasm(pc VYSIN) {{ + .for(var i=0; i<25; i++) { + .word -sin(toRadians([i*360]/25))*4 + } +}} // Process any chars in the PROCESSING array void processChars() { @@ -167,22 +183,27 @@ void processChars() { *SPRITES_XMSB &= 0xff ^ bitmask; } SPRITES_XPOS[i*2] = (byte)xpos; - SPRITES_YPOS[i*2] = (byte)(processing->y>>4); + byte ypos = (byte)(processing->y>>4); + SPRITES_YPOS[i*2] = ypos; // Move sprite - if(processing->x < XPOS_LEFTMOST || processing->y < YPOS_UPMOST) { + if(processing->x < XPOS_LEFTMOST || processing->x > XPOS_RIGHTMOST || processing->y < YPOS_TOPMOST|| processing->y > YPOS_BOTTOMMOST ) { // Set status to FREE processing->status = STATUS_FREE; // Disable the sprite *SPRITES_ENABLE &= 0xff ^ bitmask; } else { + byte xchar = (byte)(xpos/8) - BORDER_XPOS_LEFT/8; + processing->vx = processing->vx + VXSIN[xchar]; processing->x += processing->vx; + byte ychar = (byte)(ypos/8) - BORDER_YPOS_TOP/8; + processing->vy = processing->vy + VYSIN[ychar]; processing->y += processing->vy; } numActive++; } } - *(SCREEN+999) = '0'+numActive; + //*(SCREEN+999) = '0'+numActive; } // SQUARES_X[i] = (i-20)*(i-20) @@ -241,11 +262,11 @@ const byte RASTER_IRQ_TOP = 0x30; // Raster Interrupt at the top of the screen interrupt(hardware_all) void irqTop() { for( byte i: 0..4) {} - *BORDERCOL = WHITE; - *BGCOL = WHITE; + //*BORDERCOL = WHITE; + //*BGCOL = WHITE; for( byte i: 0..7) {} - *BORDERCOL = LIGHT_BLUE; - *BGCOL = BLUE; + //*BORDERCOL = LIGHT_BLUE; + //*BGCOL = BLUE; // Trigger IRQ at the middle of the screen *RASTER = RASTER_IRQ_MIDDLE; @@ -259,11 +280,11 @@ const byte RASTER_IRQ_MIDDLE = 0xff; // Raster Interrupt at the middle of the screen interrupt(hardware_all) void irqBottom() { for( byte i: 0..4) {} - *BORDERCOL = WHITE; - *BGCOL = WHITE; + //*BORDERCOL = WHITE; + //*BGCOL = WHITE; processChars(); - *BORDERCOL = LIGHT_BLUE; - *BGCOL = BLUE; + //*BORDERCOL = LIGHT_BLUE; + //*BGCOL = BLUE; // Trigger IRQ at the top of the screen *RASTER = RASTER_IRQ_TOP; diff --git a/src/test/ref/complex/blackhole/blackhole.asm b/src/test/ref/complex/blackhole/blackhole.asm index 8c17f8780..d92da0130 100644 --- a/src/test/ref/complex/blackhole/blackhole.asm +++ b/src/test/ref/complex/blackhole/blackhole.asm @@ -23,7 +23,9 @@ .label CHARGEN = $d000 // Positions of the border (in sprite positions) .const BORDER_XPOS_LEFT = $18 + .const BORDER_XPOS_RIGHT = $158 .const BORDER_YPOS_TOP = $32 + .const BORDER_YPOS_BOTTOM = $fa // The offset of the sprite pointers from the screen start address .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 @@ -34,8 +36,6 @@ .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 - .label BGCOL = $d021 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register @@ -52,13 +52,15 @@ .const CIA_INTERRUPT_CLEAR = $7f // The vector used when the HARDWARE serves IRQ interrupts .label HARDWARE_IRQ = $fffe - .const WHITE = 1 - .const BLUE = 6 .const LIGHT_BLUE = $e // Address of the screen .label SCREEN = $400 // Sprite data for the animating sprites .label SPRITE_DATA = $2000 + // Values added to VX + .label VXSIN = $2200 + // Values added to VY + .label VYSIN = $2280 // Max number of chars processed at once .const NUM_PROCESSING = 8 // Distance value meaning not found @@ -69,8 +71,10 @@ .const STATUS_PROCESSING = 2 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff + .const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4 + .const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4 .const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4 - .const YPOS_UPMOST = BORDER_YPOS_TOP-8<<4 + .const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4 main: { .label src = 2 .label dst = 4 @@ -150,9 +154,11 @@ main: { lda center_dist cmp #-$10 + lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x @@ -436,9 +428,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 = $2f - .label _10 = $2f - .label _11 = $2f + .label _9 = $2c + .label _10 = $2c + .label _11 = $2c .label return_dist = $14 .label x = $f .label dist = $14 @@ -449,8 +441,8 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $31 - .label _16 = $2f + .label _15 = $2e + .label _16 = $2c lda #0 sta closest_y sta closest_x @@ -765,14 +757,7 @@ irqBottom: { inx cpx #5 bne b1 - lda #WHITE - sta BORDERCOL - sta BGCOL jsr processChars - lda #LIGHT_BLUE - sta BORDERCOL - lda #BLUE - sta BGCOL // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER @@ -793,14 +778,16 @@ irqBottom: { } // Process any chars in the PROCESSING array processChars: { - .label _17 = $38 - .label processing = $33 - .label bitmask = $35 + .label _14 = $35 + .label _24 = $33 + .label _28 = $38 + .label _33 = $3a + .label processing = $30 + .label bitmask = $32 .label i = $1e - .label xpos = $36 - .label numActive = $1f + .label xpos = $33 + .label ypos = $37 lda #0 - sta numActive sta i b1: lda i @@ -899,42 +886,106 @@ processChars: { sta SPRITES_XPOS,x ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _17 + sta _14 iny lda (processing),y - sta _17+1 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lda _17 + 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 ypos sta SPRITES_YPOS,x // Move sprite ldy #1 lda (processing),y cmp #>XPOS_LEFTMOST - bcc b6 + bcs !b6+ + jmp b6 + !b6: bne !+ dey lda (processing),y cmp #XPOS_RIGHTMOST + cmp (processing),y + bcs !b6+ + jmp b6 + !b6: + bne !+ + dey + lda #YPOS_UPMOST - bcc b6 + cmp #>YPOS_TOPMOST + bcs !b6+ + jmp b6 + !b6: bne !+ dey lda (processing),y - cmp #YPOS_BOTTOMMOST + cmp (processing),y + bcs !b6+ + jmp b6 + !b6: + bne !+ + dey + lda #=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [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 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [116] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) - [116] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) - [116] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) - [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [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 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [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 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [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) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [129] return + [128] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 -setupRasterIrq: scope:[setupRasterIrq] from main::@7 +setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [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 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [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 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [143] return + [142] return to:@return initSprites: scope:[initSprites] from main::@3 - [144] phi() + [143] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [145] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [146] *((byte*) initSprites::sp#2) ← (byte) 0 - [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [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 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [149] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [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 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [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 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [156] return + [155] return to:@return initSquareTables: scope:[initSquareTables] from main - [157] phi() + [156] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [158] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [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 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [161] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [164] call mul8u - [165] (word) mul8u::return#2 ← (word) mul8u::res#2 + [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 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [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 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [171] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [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 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [174] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [177] call mul8u - [178] (word) mul8u::return#3 ← (word) mul8u::res#2 + [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 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [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 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [184] return + [183] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [187] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [187] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [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 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [188] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [188] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [188] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [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 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [190] return + [189] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [194] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [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 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [197] phi() + [196] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [198] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [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 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [203] call processChars + [200] phi() + [201] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [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 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [209] return + [205] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [210] phi() + [206] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [211] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [211] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 - [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 - [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 - [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 - [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 - [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [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 to:processChars::@10 -processChars::@10: scope:[processChars] from processChars::@1 - [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 - to:processChars::@11 -processChars::@11: scope:[processChars] from processChars::@10 - [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) - [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 +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::@11 - [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 - to:processChars::@8 -processChars::@8: scope:[processChars] from processChars::@3 - [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 +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::@8 - [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 - [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 - [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 - [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 +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 - [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 - to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@13 - [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 - to:processChars::@2 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [240] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + [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::@2 - [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 +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 + 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 + 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 + [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::@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 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@12 - [245] return +processChars::@return: scope:[processChars] from processChars::@2 + [250] return to:@return -processChars::@6: scope:[processChars] from processChars::@13 processChars::@5 - [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 - to:processChars::@7 +processChars::@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::@4: scope:[processChars] from processChars::@3 - [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [250] phi() + [255] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [251] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [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 to:irqTop::@2 -irqTop::@2: scope:[irqTop] from irqTop::@1 - [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 +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 to:irqTop::@3 -irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [256] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 - to:irqTop::@4 -irqTop::@4: scope:[irqTop] from irqTop::@3 - [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +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 to:irqTop::@return -irqTop::@return: scope:[irqTop] from irqTop::@4 - [264] return +irqTop::@return: scope:[irqTop] from irqTop::@3 + [265] return to:@return diff --git a/src/test/ref/complex/blackhole/blackhole.log b/src/test/ref/complex/blackhole/blackhole.log index b506fcd99..ccaef0935 100644 --- a/src/test/ref/complex/blackhole/blackhole.log +++ b/src/test/ref/complex/blackhole/blackhole.log @@ -4,22 +4,24 @@ Resolved forward reference SQUARES_X to (word[$28]) SQUARES_X Resolved forward reference SQUARES_Y to (word[$19]) SQUARES_Y Resolved forward reference RASTER_IRQ_MIDDLE to (byte) RASTER_IRQ_MIDDLE Resolved forward reference irqBottom to interrupt(HARDWARE_ALL)(void()) irqBottom() -Fixing pointer addition (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i +Fixing pointer addition (struct ProcessingSprite*~) processChars::$1 ← (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) Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::i) Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::spriteIdx) +Fixing pointer array-indexing *((word*) VXSIN + (byte) processChars::xchar) +Fixing pointer array-indexing *((word*) VYSIN + (byte) processChars::ychar) Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) initSquareTables::x) Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) initSquareTables::y) Created struct value member variable (byte) main::center_x Created struct value member variable (byte) main::center_y Created struct value member variable (word) main::center_dist Converted struct value to member variables (struct ProcessingChar) main::center -Created struct value member variable (byte) main::$8_x -Created struct value member variable (byte) main::$8_y -Created struct value member variable (word) main::$8_dist -Converted struct value to member variables (struct ProcessingChar~) main::$8 +Created struct value member variable (byte) main::$9_x +Created struct value member variable (byte) main::$9_y +Created struct value member variable (word) main::$9_dist +Converted struct value to member variables (struct ProcessingChar~) main::$9 Created struct value member variable (byte) getCharToProcess::return_x Created struct value member variable (byte) getCharToProcess::return_y Created struct value member variable (word) getCharToProcess::return_dist @@ -33,19 +35,19 @@ Created struct value member variable (byte) startProcessing::center_y Created struct value member variable (word) startProcessing::center_dist Converted struct value to member variables (struct ProcessingChar) startProcessing::center Converted procedure struct value parameter to member variables (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -Adding struct value list initializer *((word*) main::$16 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((word*) main::$17 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((word*) main::$18 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((word*) main::$19 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 -Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$15) ← (byte) STATUS_FREE -Adding struct value list initializer *((byte**) main::$23 + (byte~) main::$15) ← (number) 0 -Converted procedure call LValue to member variables { (byte) main::$8_x, (byte) main::$8_y, (word) main::$8_dist } ← call getCharToProcess -Adding struct value member variable copy (byte) main::center_x ← (byte) main::$8_x -Adding struct value member variable copy (byte) main::center_y ← (byte) main::$8_y -Adding struct value member variable copy (word) main::center_dist ← (word) main::$8_dist -Converted procedure struct value parameter to member variables in call (void~) main::$11 ← call startProcessing (byte) main::center_x (byte) main::center_y (word) main::center_dist +Adding struct value list initializer *((word*) main::$17 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((word*) main::$18 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((word*) main::$19 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((word*) main::$20 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 +Adding struct value list initializer *((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE +Adding struct value list initializer *((byte**) main::$24 + (byte~) main::$16) ← (number) 0 +Converted procedure call LValue to member variables { (byte) main::$9_x, (byte) main::$9_y, (word) main::$9_dist } ← call getCharToProcess +Adding struct value member variable copy (byte) main::center_x ← (byte) main::$9_x +Adding struct value member variable copy (byte) main::center_y ← (byte) main::$9_y +Adding struct value member variable copy (word) main::center_dist ← (word) main::$9_dist +Converted procedure struct value parameter to member variables in call (void~) main::$12 ← call startProcessing (byte) main::center_x (byte) main::center_y (word) main::center_dist Adding struct value list initializer (byte) getCharToProcess::closest_x ← (number) 0 Adding struct value list initializer (byte) getCharToProcess::closest_y ← (number) 0 Adding struct value list initializer (word) getCharToProcess::closest_dist ← (word) NOT_FOUND @@ -59,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::$35 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX -Adding struct value list initializer *((word*) startProcessing::$36 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY -Adding struct value list initializer *((word*) startProcessing::$37 + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -Adding struct value list initializer *((word*) startProcessing::$38 + (byte~) startProcessing::$34) ← (word~) startProcessing::$26 -Adding struct value list initializer *((byte*) startProcessing::$39 + (byte~) startProcessing::$34) ← (byte) startProcessing::spriteIdx -Adding struct value list initializer *((byte*) startProcessing::$40 + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr -Adding struct value list initializer *((byte*) startProcessing::$41 + (byte~) startProcessing::$34) ← (byte) STATUS_NEW -Adding struct value list initializer *((byte**) startProcessing::$42 + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr +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 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 @@ -76,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::$33).status +Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$27).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 @@ -87,15 +89,21 @@ Rewriting struct pointer member access *((struct ProcessingSprite*) processChars Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy +Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y -Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$12 +Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$10 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 @@ -142,7 +150,9 @@ Adding pointer type conversion cast (void()**) KERNEL_IRQ in (void()**) KERNEL_I Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWARE_IRQ ← (number) $fffe Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 Adding pointer type conversion cast (byte*) SPRITE_DATA in (byte*) SPRITE_DATA ← (number) $2000 -Adding pointer type conversion cast (byte*) *(main::$23 + main::$15) in *((byte**) main::$23 + (byte~) main::$15) ← (number) 0 +Adding pointer type conversion cast (word*) VXSIN in (word*) VXSIN ← (number) $2200 +Adding pointer type conversion cast (word*) VYSIN in (word*) VYSIN ← (number) $2280 +Adding pointer type conversion cast (byte*) *(main::$24 + main::$16) in *((byte**) main::$24 + (byte~) main::$16) ← (number) 0 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Culled Empty Block (label) @1 Culled Empty Block (label) @2 @@ -157,7 +167,6 @@ Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 Culled Empty Block (label) main::@8 -Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@9 Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@12 @@ -168,7 +177,9 @@ 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 @@ -177,7 +188,7 @@ Culled Empty Block (label) initSquareTables::@14 Culled Empty Block (label) @14 Culled Empty Block (label) @15 Culled Empty Block (label) setupRasterIrq::@4 -Unwinding list assignment { (byte) main::$8_x, (byte) main::$8_y, (word) main::$8_dist } ← { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist } +Unwinding list assignment { (byte) main::$9_x, (byte) main::$9_y, (word) main::$9_dist } ← { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist } Unwinding list assignment { (byte) getCharToProcess::return_x#0, (byte) getCharToProcess::return_y#0, (word) getCharToProcess::return_dist#0 } ← { (byte) getCharToProcess::return_x#2, (byte) getCharToProcess::return_y#2, (word) getCharToProcess::return_dist#2 } CONTROL FLOW GRAPH SSA @@ -189,7 +200,9 @@ CONTROL FLOW GRAPH SSA (byte) PROCPORT_RAM_CHARROM#0 ← (number) $31 (byte*) CHARGEN#0 ← ((byte*)) (number) $d000 (byte) BORDER_XPOS_LEFT#0 ← (number) $18 + (word) BORDER_XPOS_RIGHT#0 ← (number) $158 (byte) BORDER_YPOS_TOP#0 ← (number) $32 + (byte) BORDER_YPOS_BOTTOM#0 ← (number) $fa (word) SPRITE_PTRS#0 ← (number) $3f8 (byte*) SPRITES_XPOS#0 ← ((byte*)) (number) $d000 (byte*) SPRITES_YPOS#0 ← ((byte*)) (number) $d001 @@ -199,8 +212,6 @@ CONTROL FLOW GRAPH SSA (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (number) $d017 (byte*) SPRITES_MC#0 ← ((byte*)) (number) $d01c (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (number) $d01d - (byte*) BORDERCOL#0 ← ((byte*)) (number) $d020 - (byte*) BGCOL#0 ← ((byte*)) (number) $d021 (byte*) SPRITES_COLS#0 ← ((byte*)) (number) $d027 (byte*) VIC_CONTROL#0 ← ((byte*)) (number) $d011 (byte*) IRQ_STATUS#0 ← ((byte*)) (number) $d019 @@ -210,8 +221,6 @@ CONTROL FLOW GRAPH SSA (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (number) $dc0d (byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f (void()**) HARDWARE_IRQ#0 ← ((void()**)) (number) $fffe - (byte) WHITE#0 ← (number) 1 - (byte) BLUE#0 ← (number) 6 (byte) LIGHT_BLUE#0 ← (number) $e to:@9 mul8u: scope:[mul8u] from initSquareTables::@11 initSquareTables::@4 @@ -264,6 +273,8 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 @9: scope:[] from @begin (byte*) SCREEN#0 ← ((byte*)) (number) $400 (byte*) SPRITE_DATA#0 ← ((byte*)) (number) $2000 + (word*) VXSIN#0 ← ((word*)) (number) $2200 + (word*) VYSIN#0 ← ((word*)) (number) $2280 (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } (byte) NUM_PROCESSING#0 ← (number) 8 (word) NOT_FOUND#0 ← (number) $ffff @@ -285,36 +296,36 @@ main::@1: scope:[main] from main::@1 main::@13 *((byte*) main::dst#2) ← *((byte*) main::src#2) (byte*) main::src#1 ← ++ (byte*) main::src#2 (byte*) main::dst#1 ← ++ (byte*) main::dst#2 - (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e8 - (bool~) main::$5 ← (byte*) main::src#1 != (byte*~) main::$4 - if((bool~) main::$5) goto main::@1 + (byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8 + (bool~) main::$6 ← (byte*) main::src#1 != (byte*~) main::$5 + if((bool~) main::$6) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 - (number~) main::$6 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) main::$7 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) main::i#0 ← (byte) 0 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 (byte) main::i#2 ← phi( main::@2/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte~) main::$15 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (word*) main::$16 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) main::$16 + (byte~) main::$15) ← (number) 0 - (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) main::$17 + (byte~) main::$15) ← (number) 0 - (word*) main::$18 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) main::$18 + (byte~) main::$15) ← (number) 0 - (word*) main::$19 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) main::$19 + (byte~) main::$15) ← (number) 0 - (byte*) main::$20 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 - (byte*) main::$21 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 - (byte*) main::$22 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) main::$22 + (byte~) main::$15) ← (byte) STATUS_FREE#0 - (byte**) main::$23 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) main::$23 + (byte~) main::$15) ← ((byte*)) (number) 0 - (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$6) - (bool~) main::$7 ← (byte) main::i#1 != rangelast(0,main::$6) - if((bool~) main::$7) goto main::@3 + (byte~) main::$16 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE + (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X + *((word*) main::$17 + (byte~) main::$16) ← (number) 0 + (word*) main::$18 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + *((word*) main::$18 + (byte~) main::$16) ← (number) 0 + (word*) main::$19 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + *((word*) main::$19 + (byte~) main::$16) ← (number) 0 + (word*) main::$20 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + *((word*) main::$20 + (byte~) main::$16) ← (number) 0 + (byte*) main::$21 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 + (byte*) main::$22 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 + (byte*) main::$23 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + *((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE#0 + (byte**) main::$24 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *((byte**) main::$24 + (byte~) main::$16) ← ((byte*)) (number) 0 + (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$7) + (bool~) main::$8 ← (byte) main::i#1 != rangelast(0,main::$7) + if((bool~) main::$8) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 call initSprites @@ -337,16 +348,16 @@ main::@16: scope:[main] from main::@5 (word) getCharToProcess::return_dist#3 ← phi( main::@5/(word) getCharToProcess::return_dist#0 ) (byte) getCharToProcess::return_y#3 ← phi( main::@5/(byte) getCharToProcess::return_y#0 ) (byte) getCharToProcess::return_x#3 ← phi( main::@5/(byte) getCharToProcess::return_x#0 ) - (byte) main::$8_x ← (byte) getCharToProcess::return_x#3 - (byte) main::$8_y ← (byte) getCharToProcess::return_y#3 - (word) main::$8_dist ← (word) getCharToProcess::return_dist#3 - (byte) main::center_x#0 ← (byte) main::$8_x - (byte) main::center_y#0 ← (byte) main::$8_y - (word) main::center_dist#0 ← (word) main::$8_dist - (bool~) main::$9 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 - (bool~) main::$10 ← ! (bool~) main::$9 - if((bool~) main::$10) goto main::@6 - to:main::@11 + (byte) main::$9_x ← (byte) getCharToProcess::return_x#3 + (byte) main::$9_y ← (byte) getCharToProcess::return_y#3 + (word) main::$9_dist ← (word) getCharToProcess::return_dist#3 + (byte) main::center_x#0 ← (byte) main::$9_x + (byte) main::center_y#0 ← (byte) main::$9_y + (word) main::center_dist#0 ← (word) main::$9_dist + (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 + (bool~) main::$11 ← ! (bool~) main::$10 + if((bool~) main::$11) goto main::@6 + to:main::@7 main::@6: scope:[main] from main::@16 (word) main::center_dist#1 ← phi( main::@16/(word) main::center_dist#0 ) (byte) main::center_y#1 ← phi( main::@16/(byte) main::center_y#0 ) @@ -358,10 +369,14 @@ main::@6: scope:[main] from main::@16 to:main::@17 main::@17: scope:[main] from main::@6 if(true) goto main::@5 + to:main::@7 +main::@7: scope:[main] from main::@16 main::@17 + (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7 + *((byte*~) main::$4) ← (byte) '.' to:main::@11 -main::@11: scope:[main] from main::@11 main::@16 main::@17 - (byte*~) main::$14 ← (byte*) COLS#0 + (number) $3e7 - *((byte*~) main::$14) ← ++ *((byte*~) main::$14) +main::@11: scope:[main] from main::@11 main::@7 + (byte*~) main::$15 ← (byte*) COLS#0 + (number) $3e7 + *((byte*~) main::$15) ← ++ *((byte*~) main::$15) if(true) goto main::@11 to:main::@return main::@return: scope:[main] from main::@11 @@ -483,7 +498,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::$27 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) startProcessing::$21 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) startProcessing::i#0 ← (byte) 0 to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 @@ -491,20 +506,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::$33 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (byte*) startProcessing::$43 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) startProcessing::$28 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) == (byte) STATUS_FREE#0 - (bool~) startProcessing::$29 ← ! (bool~) startProcessing::$28 - if((bool~) startProcessing::$29) goto startProcessing::@3 + (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 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::$27) - (bool~) startProcessing::$30 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$27) - if((bool~) startProcessing::$30) goto startProcessing::@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 to:startProcessing::@4 startProcessing::@5: scope:[startProcessing] from startProcessing::@2 (byte) startProcessing::center_x#6 ← phi( startProcessing::@2/(byte) startProcessing::center_x#7 ) @@ -516,8 +531,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::$31 ← (byte) startProcessing::freeIdx#2 == (number) $ff - if((bool~) startProcessing::$31) goto startProcessing::@1 + (bool~) startProcessing::$25 ← (byte) startProcessing::freeIdx#2 == (number) $ff + if((bool~) startProcessing::$25) 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 ) @@ -554,8 +569,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::$32 ← (byte) startProcessing::i1#1 != rangelast(0,7) - if((bool~) startProcessing::$32) goto startProcessing::@9 + (bool~) startProcessing::$26 ← (byte) startProcessing::i1#1 != rangelast(0,7) + if((bool~) startProcessing::$26) goto startProcessing::@9 to:startProcessing::@10 startProcessing::@10: scope:[startProcessing] from startProcessing::@9 (byte*) startProcessing::screenPtr#1 ← phi( startProcessing::@9/(byte*) startProcessing::screenPtr#2 ) @@ -578,29 +593,23 @@ 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 - (signed byte~) startProcessing::$21 ← ((signed byte)) (byte) startProcessing::spriteIdx#1 - (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (number) 2 - (number~) startProcessing::$23 ← (number~) startProcessing::$22 - (number) 8 - (number~) startProcessing::$24 ← - (number~) startProcessing::$23 - (word~) startProcessing::$25 ← ((word)) (number~) startProcessing::$24 - (word~) startProcessing::$26 ← ((word)) (number) -$10 - (byte~) startProcessing::$34 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (word*) startProcessing::$35 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) startProcessing::$35 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 - (word*) startProcessing::$36 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) startProcessing::$36 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 - (word*) startProcessing::$37 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - *((word*) startProcessing::$37 + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 - (word*) startProcessing::$38 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - *((word*) startProcessing::$38 + (byte~) startProcessing::$34) ← (word~) startProcessing::$26 - (byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - *((byte*) startProcessing::$39 + (byte~) startProcessing::$34) ← (byte) startProcessing::spriteIdx#1 - (byte*) startProcessing::$40 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*) startProcessing::$40 + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 - (byte*) startProcessing::$41 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) startProcessing::$41 + (byte~) startProcessing::$34) ← (byte) STATUS_NEW#0 - (byte**) startProcessing::$42 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *((byte**) startProcessing::$42 + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#1 + (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 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@10 return @@ -610,148 +619,169 @@ startProcessing::@return: scope:[startProcessing] from startProcessing::@10 (word~) $1 ← ((word)) (number~) $0 (word~) $2 ← (word~) $1 << (number) 4 (word) XPOS_LEFTMOST#0 ← (word~) $2 - (number~) $3 ← (byte) BORDER_YPOS_TOP#0 - (number) 8 - (word~) $4 ← ((word)) (number~) $3 - (word~) $5 ← (word~) $4 << (number) 4 - (word) YPOS_UPMOST#0 ← (word~) $5 + (word~) $3 ← ((word)) (word) BORDER_XPOS_RIGHT#0 + (word~) $4 ← (word~) $3 << (number) 4 + (word) XPOS_RIGHTMOST#0 ← (word~) $4 + (number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (number) 8 + (word~) $6 ← ((word)) (number~) $5 + (word~) $7 ← (word~) $6 << (number) 4 + (word) YPOS_TOPMOST#0 ← (word~) $7 + (word~) $8 ← ((word)) (byte) BORDER_YPOS_BOTTOM#0 + (word~) $9 ← (word~) $8 << (number) 4 + (word) YPOS_BOTTOMMOST#0 ← (word~) $9 + kickasm(location (word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { + .word -sin(toRadians([i*360]/40))*4 + } + }} + kickasm(location (word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { + .word -sin(toRadians([i*360]/25))*4 + } + }} to:@13 processChars: scope:[processChars] from irqBottom::@2 - (byte) processChars::numActive#0 ← (number) 0 - (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 + (number~) processChars::$0 ← (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::$24 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE - (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 - (struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$3 - (byte*) processChars::$25 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$25) - (byte) processChars::bitmask#0 ← (number~) processChars::$4 - (byte*) processChars::$26 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$5 ← *((byte*) processChars::$26) != (byte) STATUS_FREE#0 - (bool~) processChars::$6 ← ! (bool~) processChars::$5 - if((bool~) processChars::$6) goto processChars::@2 + (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 + (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 + (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 to:processChars::@12 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - (byte) processChars::numActive#6 ← phi( processChars::@1/(byte) processChars::numActive#7 processChars::@7/(byte) processChars::numActive#1 ) - (byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@7/(byte) processChars::i#5 ) - (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$2) - (bool~) processChars::$23 ← (byte) processChars::i#1 != rangelast(0,processChars::$2) - if((bool~) processChars::$23) goto processChars::@1 - to:processChars::@14 +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) + if((bool~) processChars::$35) goto processChars::@1 + to:processChars::@return processChars::@12: scope:[processChars] from processChars::@1 - (byte) processChars::numActive#12 ← phi( processChars::@1/(byte) processChars::numActive#7 ) - (byte) processChars::i#11 ← phi( processChars::@1/(byte) processChars::i#2 ) + (byte) processChars::i#10 ← 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::$27 ← (byte*)(struct ProcessingSprite*) processChars::processing#1 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - (bool~) processChars::$7 ← *((byte*) processChars::$27) == (byte) STATUS_NEW#0 - (bool~) processChars::$8 ← ! (bool~) processChars::$7 - if((bool~) processChars::$8) goto processChars::@3 + (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 to:processChars::@13 processChars::@3: scope:[processChars] from processChars::@12 processChars::@13 - (byte) processChars::numActive#11 ← phi( processChars::@12/(byte) processChars::numActive#12 processChars::@13/(byte) processChars::numActive#13 ) - (byte) processChars::i#8 ← phi( processChars::@12/(byte) processChars::i#11 processChars::@13/(byte) processChars::i#12 ) + (byte) processChars::i#9 ← phi( processChars::@12/(byte) processChars::i#10 processChars::@13/(byte) processChars::i#11 ) (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::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#2 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word~) processChars::$11 ← *((word*) processChars::$28) >> (number) 4 - (word) processChars::xpos#0 ← (word~) processChars::$11 - (byte~) processChars::$12 ← > (word) processChars::xpos#0 - (bool~) processChars::$43 ← (number) 0 != (byte~) processChars::$12 - if((bool~) processChars::$43) goto processChars::@4 + (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 + if((bool~) processChars::$63) goto processChars::@4 to:processChars::@8 processChars::@13: scope:[processChars] from processChars::@12 - (byte) processChars::numActive#13 ← phi( processChars::@12/(byte) processChars::numActive#12 ) - (byte) processChars::i#12 ← phi( processChars::@12/(byte) processChars::i#11 ) + (byte) processChars::i#11 ← phi( processChars::@12/(byte) processChars::i#10 ) (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::$29 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR - *(*((byte**) processChars::$29)) ← (byte) ' ' + (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + *(*((byte**) processChars::$43)) ← (byte) ' ' *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#1 - (byte*~) processChars::$9 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0 - (byte*) processChars::$30 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID - (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$30) - (byte*) processChars::$31 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR - *((byte*~) processChars::$10) ← *((byte*) processChars::$31) - (byte*) processChars::$32 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) processChars::$32) ← (byte) STATUS_PROCESSING#0 + (byte*~) processChars::$7 ← (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::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + *((byte*~) processChars::$8) ← *((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#2 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#6 ← phi( processChars::@3/(byte) processChars::i#8 ) + (word) processChars::xpos#3 ← phi( processChars::@3/(word) processChars::xpos#0 ) + (byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#9 ) (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#3 ← phi( processChars::@3/(word) processChars::xpos#0 ) - (byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#8 ) + (word) processChars::xpos#4 ← phi( processChars::@3/(word) processChars::xpos#0 ) + (byte) processChars::i#8 ← phi( processChars::@3/(byte) processChars::i#9 ) (byte) processChars::bitmask#3 ← phi( processChars::@3/(byte) processChars::bitmask#6 ) - (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$13 + (number~) processChars::$11 ← (number) $ff ^ (byte) processChars::bitmask#3 + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$11 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#2 processChars::@8/(word) processChars::xpos#3 ) - (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::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 + (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 - (word*) processChars::$33 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word~) processChars::$17 ← *((word*) processChars::$33) >> (number) 4 - (byte~) processChars::$18 ← ((byte)) (word~) processChars::$17 - *((byte*) SPRITES_YPOS#0 + (number~) processChars::$16) ← (byte~) processChars::$18 - (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (bool~) processChars::$19 ← *((word*) processChars::$34) < (word) XPOS_LEFTMOST#0 - (word*) processChars::$35 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (bool~) processChars::$20 ← *((word*) processChars::$35) < (word) YPOS_UPMOST#0 + *((byte*) SPRITES_YPOS#0 + (number~) processChars::$16) ← (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 + (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::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 - if((bool~) processChars::$21) goto processChars::@6 + (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 + (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22 + if((bool~) processChars::$23) goto processChars::@6 to:processChars::@10 processChars::@6: scope:[processChars] from processChars::@5 - (byte) processChars::i#10 ← phi( processChars::@5/(byte) processChars::i#4 ) - (byte) processChars::numActive#5 ← phi( processChars::@5/(byte) processChars::numActive#8 ) + (byte) processChars::i#6 ← phi( processChars::@5/(byte) processChars::i#4 ) (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::$36 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS - *((byte*) processChars::$36) ← (byte) STATUS_FREE#0 - (number~) processChars::$22 ← (number) $ff ^ (byte) processChars::bitmask#4 - *((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) & (number~) processChars::$22 - to:processChars::@7 -processChars::@10: scope:[processChars] from processChars::@5 - (byte) processChars::i#9 ← phi( processChars::@5/(byte) processChars::i#4 ) - (byte) processChars::numActive#4 ← phi( processChars::@5/(byte) processChars::numActive#8 ) - (struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 ) - (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX - (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X - *((word*) processChars::$39) ← *((word*) processChars::$37) + *((word*) processChars::$38) - (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - (word*) processChars::$41 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY - (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y - *((word*) processChars::$42) ← *((word*) processChars::$40) + *((word*) processChars::$41) - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@10 processChars::@6 - (byte) processChars::i#5 ← phi( processChars::@10/(byte) processChars::i#9 processChars::@6/(byte) processChars::i#10 ) - (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 + (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 -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 +processChars::@10: scope:[processChars] from processChars::@5 + (byte) processChars::i#5 ← phi( processChars::@5/(byte) processChars::i#4 ) + (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 + (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::$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 + (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::$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::@2 +processChars::@return: scope:[processChars] from processChars::@2 return to:@return @13: scope:[] from @12 @@ -910,8 +940,6 @@ irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 if((bool~) irqTop::$1) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 - *((byte*) BORDERCOL#0) ← (byte) WHITE#0 - *((byte*) BGCOL#0) ← (byte) WHITE#0 (byte) irqTop::i1#0 ← (byte) 0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 @@ -921,8 +949,6 @@ irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 if((bool~) irqTop::$2) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0 - *((byte*) BGCOL#0) ← (byte) BLUE#0 *((byte*) RASTER#0) ← (byte) RASTER_IRQ_MIDDLE#0 (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqTop::$0 @@ -944,13 +970,9 @@ irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 if((bool~) irqBottom::$2) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - *((byte*) BORDERCOL#0) ← (byte) WHITE#0 - *((byte*) BGCOL#0) ← (byte) WHITE#0 call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0 - *((byte*) BGCOL#0) ← (byte) BLUE#0 *((byte*) RASTER#0) ← (byte) RASTER_IRQ_TOP#0 (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() *((void()**) HARDWARE_IRQ#0) ← (void()*~) irqBottom::$1 @@ -970,9 +992,13 @@ SYMBOL TABLE SSA (number~) $0 (word~) $1 (word~) $2 -(number~) $3 +(word~) $3 (word~) $4 -(word~) $5 +(number~) $5 +(word~) $6 +(word~) $7 +(word~) $8 +(word~) $9 (label) @12 (label) @13 (label) @16 @@ -982,14 +1008,12 @@ SYMBOL TABLE SSA (label) @9 (label) @begin (label) @end -(byte*) BGCOL -(byte*) BGCOL#0 -(byte) BLUE -(byte) BLUE#0 -(byte*) BORDERCOL -(byte*) BORDERCOL#0 (byte) BORDER_XPOS_LEFT (byte) BORDER_XPOS_LEFT#0 +(word) BORDER_XPOS_RIGHT +(word) BORDER_XPOS_RIGHT#0 +(byte) BORDER_YPOS_BOTTOM +(byte) BORDER_YPOS_BOTTOM#0 (byte) BORDER_YPOS_TOP (byte) BORDER_YPOS_TOP#0 (byte*) CHARGEN @@ -1089,12 +1113,18 @@ SYMBOL TABLE SSA (byte) STATUS_PROCESSING#0 (byte*) VIC_CONTROL (byte*) VIC_CONTROL#0 -(byte) WHITE -(byte) WHITE#0 +(word*) VXSIN +(word*) VXSIN#0 +(word*) VYSIN +(word*) VYSIN#0 (word) XPOS_LEFTMOST (word) XPOS_LEFTMOST#0 -(word) YPOS_UPMOST -(word) YPOS_UPMOST#0 +(word) XPOS_RIGHTMOST +(word) XPOS_RIGHTMOST#0 +(word) YPOS_BOTTOMMOST +(word) YPOS_BOTTOMMOST#0 +(word) YPOS_TOPMOST +(word) YPOS_TOPMOST#0 (struct ProcessingChar()) getCharToProcess() (bool~) getCharToProcess::$0 (bool~) getCharToProcess::$1 @@ -1301,26 +1331,27 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#2 (void()) main() (bool~) main::$10 -(byte*~) main::$14 -(byte~) main::$15 -(word*) main::$16 +(bool~) main::$11 +(byte*~) main::$15 +(byte~) main::$16 (word*) main::$17 (word*) main::$18 (word*) main::$19 (void()*~) main::$2 -(byte*) main::$20 +(word*) main::$20 (byte*) main::$21 (byte*) main::$22 -(byte**) main::$23 +(byte*) main::$23 +(byte**) main::$24 (byte*~) main::$4 -(bool~) main::$5 -(number~) main::$6 -(bool~) main::$7 -(struct ProcessingChar~) main::$8 -(word) main::$8_dist -(byte) main::$8_x -(byte) main::$8_y -(bool~) main::$9 +(byte*~) main::$5 +(bool~) main::$6 +(number~) main::$7 +(bool~) main::$8 +(struct ProcessingChar~) main::$9 +(word) main::$9_dist +(byte) main::$9_x +(byte) main::$9_y (label) main::@1 (label) main::@11 (label) main::@13 @@ -1333,6 +1364,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@4 (label) main::@5 (label) main::@6 +(label) main::@7 (label) main::@return (struct ProcessingChar) main::center (word) main::center_dist @@ -1407,61 +1439,79 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#5 (word) mul8u::return#6 (void()) processChars() -(byte*~) processChars::$0 -(byte~) processChars::$1 -(byte*~) processChars::$10 -(word~) processChars::$11 -(byte~) processChars::$12 -(number~) processChars::$13 -(number~) processChars::$14 +(number~) processChars::$0 +(struct ProcessingSprite*~) processChars::$1 +(byte~) processChars::$10 +(number~) processChars::$11 +(number~) processChars::$12 +(byte~) processChars::$13 +(word~) processChars::$14 (byte~) processChars::$15 (number~) processChars::$16 -(word~) processChars::$17 -(byte~) processChars::$18 +(bool~) processChars::$17 +(bool~) processChars::$18 (bool~) processChars::$19 (number~) processChars::$2 (bool~) processChars::$20 (bool~) processChars::$21 -(number~) processChars::$22 +(bool~) processChars::$22 (bool~) processChars::$23 -(byte~) processChars::$24 -(byte*) processChars::$25 -(byte*) processChars::$26 -(byte*) processChars::$27 -(word*) processChars::$28 -(byte**) processChars::$29 -(struct ProcessingSprite*~) processChars::$3 -(byte*) processChars::$30 -(byte*) processChars::$31 -(byte*) processChars::$32 -(word*) processChars::$33 -(word*) processChars::$34 -(word*) processChars::$35 -(byte*) processChars::$36 -(word*) processChars::$37 -(word*) processChars::$38 -(word*) processChars::$39 -(number~) processChars::$4 -(word*) processChars::$40 -(word*) processChars::$41 +(number~) processChars::$24 +(byte~) processChars::$25 +(number~) processChars::$26 +(number~) processChars::$27 +(word~) processChars::$28 +(number~) processChars::$29 +(bool~) processChars::$3 +(byte~) processChars::$30 +(number~) processChars::$31 +(number~) processChars::$32 +(word~) processChars::$33 +(number~) processChars::$34 +(bool~) processChars::$35 +(byte~) processChars::$36 +(byte~) processChars::$37 +(byte~) processChars::$38 +(byte*) processChars::$39 +(bool~) processChars::$4 +(byte*) processChars::$40 +(byte*) processChars::$41 (word*) processChars::$42 -(bool~) processChars::$43 +(byte**) processChars::$43 +(byte*) processChars::$44 +(byte*) processChars::$45 +(byte*) processChars::$46 +(word*) processChars::$47 +(word*) processChars::$48 +(word*) processChars::$49 (bool~) processChars::$5 +(word*) processChars::$50 +(word*) processChars::$51 +(byte*) processChars::$52 +(word*) processChars::$53 +(word*) processChars::$54 +(word*) processChars::$55 +(word*) processChars::$56 +(word*) processChars::$57 +(word*) processChars::$58 +(word*) processChars::$59 (bool~) processChars::$6 -(bool~) processChars::$7 -(bool~) processChars::$8 -(byte*~) processChars::$9 +(word*) processChars::$60 +(word*) processChars::$61 +(word*) processChars::$62 +(bool~) processChars::$63 +(byte*~) processChars::$7 +(byte*~) processChars::$8 +(word~) 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 @@ -1478,7 +1528,6 @@ 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 @@ -1487,21 +1536,6 @@ 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 @@ -1512,11 +1546,19 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingSprite*) processChars::processing#6 (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8 +(byte) processChars::xchar +(byte) processChars::xchar#0 (word) processChars::xpos (word) processChars::xpos#0 (word) processChars::xpos#1 (word) processChars::xpos#2 (word) processChars::xpos#3 +(word) processChars::xpos#4 +(byte) processChars::ychar +(byte) processChars::ychar#0 +(byte) processChars::ypos +(byte) processChars::ypos#0 +(byte) processChars::ypos#1 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (bool~) setupRasterIrq::$0 (byte~) setupRasterIrq::$1 @@ -1551,31 +1593,25 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) startProcessing::$19 (byte*~) startProcessing::$2 (byte~) startProcessing::$20 -(signed byte~) startProcessing::$21 -(number~) startProcessing::$22 -(number~) startProcessing::$23 -(number~) startProcessing::$24 -(word~) startProcessing::$25 -(word~) startProcessing::$26 -(number~) startProcessing::$27 -(bool~) startProcessing::$28 -(bool~) startProcessing::$29 +(number~) startProcessing::$21 +(bool~) startProcessing::$22 +(bool~) startProcessing::$23 +(bool~) startProcessing::$24 +(bool~) startProcessing::$25 +(bool~) startProcessing::$26 +(byte~) startProcessing::$27 +(byte~) startProcessing::$28 +(word*) startProcessing::$29 (byte*~) startProcessing::$3 -(bool~) startProcessing::$30 -(bool~) startProcessing::$31 -(bool~) startProcessing::$32 -(byte~) startProcessing::$33 -(byte~) startProcessing::$34 -(word*) startProcessing::$35 -(word*) startProcessing::$36 -(word*) startProcessing::$37 -(word*) startProcessing::$38 -(byte*) startProcessing::$39 +(word*) startProcessing::$30 +(word*) startProcessing::$31 +(word*) startProcessing::$32 +(byte*) startProcessing::$33 +(byte*) startProcessing::$34 +(byte*) startProcessing::$35 +(byte**) startProcessing::$36 +(byte*) startProcessing::$37 (word~) startProcessing::$4 -(byte*) startProcessing::$40 -(byte*) startProcessing::$41 -(byte**) startProcessing::$42 -(byte*) startProcessing::$43 (number~) startProcessing::$5 (byte*~) startProcessing::$6 (word~) startProcessing::$7 @@ -1662,12 +1698,12 @@ Adding number conversion cast (unumber) 7 in (byte) PROCPORT_DDR_MEMORY_MASK#0 Adding number conversion cast (unumber) $35 in (byte) PROCPORT_RAM_IO#0 ← (number) $35 Adding number conversion cast (unumber) $31 in (byte) PROCPORT_RAM_CHARROM#0 ← (number) $31 Adding number conversion cast (unumber) $18 in (byte) BORDER_XPOS_LEFT#0 ← (number) $18 +Adding number conversion cast (unumber) $158 in (word) BORDER_XPOS_RIGHT#0 ← (number) $158 Adding number conversion cast (unumber) $32 in (byte) BORDER_YPOS_TOP#0 ← (number) $32 +Adding number conversion cast (unumber) $fa in (byte) BORDER_YPOS_BOTTOM#0 ← (number) $fa Adding number conversion cast (unumber) $3f8 in (word) SPRITE_PTRS#0 ← (number) $3f8 Adding number conversion cast (unumber) 1 in (byte) IRQ_RASTER#0 ← (number) 1 Adding number conversion cast (unumber) $7f in (byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f -Adding number conversion cast (unumber) 1 in (byte) WHITE#0 ← (number) 1 -Adding number conversion cast (unumber) 6 in (byte) BLUE#0 ← (number) 6 Adding number conversion cast (unumber) $e in (byte) LIGHT_BLUE#0 ← (number) $e Adding number conversion cast (unumber) 0 in (word) mul8u::res#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (number) 0 @@ -1681,25 +1717,26 @@ Adding number conversion cast (unumber) $ffff in (word) NOT_FOUND#0 ← (number) Adding number conversion cast (unumber) 0 in (byte) STATUS_FREE#0 ← (number) 0 Adding number conversion cast (unumber) 1 in (byte) STATUS_NEW#0 ← (number) 1 Adding number conversion cast (unumber) 2 in (byte) STATUS_PROCESSING#0 ← (number) 2 -Adding number conversion cast (unumber) $3e8 in (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e8 -Adding number conversion cast (unumber) 1 in (number~) main::$6 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) 0 in *((word*) main::$16 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((word*) main::$17 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((word*) main::$18 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((word*) main::$19 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte*) main::$20 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte*) main::$21 + (byte~) main::$15) ← (number) 0 -Adding number conversion cast (unumber) $3e7 in (byte*~) main::$14 ← (byte*) COLS#0 + (number) $3e7 +Adding number conversion cast (unumber) $3e8 in (byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8 +Adding number conversion cast (unumber) 1 in (number~) main::$7 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) main::$7 in (number~) main::$7 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((word*) main::$17 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((word*) main::$18 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((word*) main::$19 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((word*) main::$20 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$21 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$22 + (byte~) main::$16) ← (number) 0 +Adding number conversion cast (unumber) $3e7 in (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7 +Adding number conversion cast (unumber) $3e7 in (byte*~) main::$15 ← (byte*) COLS#0 + (number) $3e7 Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_x#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_y#0 ← (number) 0 Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#3 + (number) $28 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::$27 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) startProcessing::$27 in (number~) startProcessing::$27 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$31 ← (byte) startProcessing::freeIdx#2 == (number) $ff +Adding number conversion cast (unumber) 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) $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 @@ -1718,34 +1755,41 @@ Adding number conversion cast (unumber) startProcessing::$16 in (number~) startP Adding number conversion cast (unumber) 4 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (number) 4 Adding number conversion cast (unumber) startProcessing::$17 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (unumber)(number) 4 Adding number conversion cast (unumber) $40 in (byte*~) startProcessing::$18 ← (byte*) SPRITE_DATA#0 / (number) $40 -Adding number conversion cast (snumber) 2 in (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (number) 2 -Adding number conversion cast (snumber) startProcessing::$22 in (number~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (snumber)(number) 2 -Adding number conversion cast (snumber) 8 in (number~) startProcessing::$23 ← (snumber~) startProcessing::$22 - (number) 8 -Adding number conversion cast (snumber) startProcessing::$23 in (number~) startProcessing::$23 ← (snumber~) startProcessing::$22 - (snumber)(number) 8 -Adding number conversion cast (snumber) startProcessing::$24 in (number~) startProcessing::$24 ← - (snumber~) startProcessing::$23 +Adding number conversion cast (unumber) $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~) $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 -Adding number conversion cast (unumber) 8 in (number~) $3 ← (byte) BORDER_YPOS_TOP#0 - (number) 8 -Adding number conversion cast (unumber) $3 in (number~) $3 ← (byte) BORDER_YPOS_TOP#0 - (unumber)(number) 8 -Adding number conversion cast (unumber) 4 in (word~) $5 ← (word~) $4 << (number) 4 -Adding number conversion cast (unumber) 0 in (byte) processChars::numActive#0 ← (number) 0 -Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1 -Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$25) -Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (unumber)(number) 1 << *((byte*) processChars::$25) -Adding number conversion cast (unumber) 4 in (word~) processChars::$11 ← *((word*) processChars::$28) >> (number) 4 -Adding number conversion cast (unumber) 0 in (bool~) processChars::$43 ← (number) 0 != (byte~) processChars::$12 -Adding number conversion cast (unumber) $ff in (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3 -Adding number conversion cast (unumber) 2 in (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2 -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~) $4 ← (word~) $3 << (number) 4 +Adding number conversion cast (unumber) 8 in (number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (number) 8 +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) 4 in (word~) processChars::$17 ← *((word*) processChars::$33) >> (number) 4 -Adding number conversion cast (unumber) $ff in (number~) processChars::$22 ← (number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) processChars::$22 in (number~) processChars::$22 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4 -Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7 +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) $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 @@ -1783,7 +1827,9 @@ Inlining cast (byte) PROCPORT_RAM_IO#0 ← (unumber)(number) $35 Inlining cast (byte) PROCPORT_RAM_CHARROM#0 ← (unumber)(number) $31 Inlining cast (byte*) CHARGEN#0 ← (byte*)(number) $d000 Inlining cast (byte) BORDER_XPOS_LEFT#0 ← (unumber)(number) $18 +Inlining cast (word) BORDER_XPOS_RIGHT#0 ← (unumber)(number) $158 Inlining cast (byte) BORDER_YPOS_TOP#0 ← (unumber)(number) $32 +Inlining cast (byte) BORDER_YPOS_BOTTOM#0 ← (unumber)(number) $fa Inlining cast (word) SPRITE_PTRS#0 ← (unumber)(number) $3f8 Inlining cast (byte*) SPRITES_XPOS#0 ← (byte*)(number) $d000 Inlining cast (byte*) SPRITES_YPOS#0 ← (byte*)(number) $d001 @@ -1793,8 +1839,6 @@ Inlining cast (byte*) SPRITES_ENABLE#0 ← (byte*)(number) $d015 Inlining cast (byte*) SPRITES_EXPAND_Y#0 ← (byte*)(number) $d017 Inlining cast (byte*) SPRITES_MC#0 ← (byte*)(number) $d01c Inlining cast (byte*) SPRITES_EXPAND_X#0 ← (byte*)(number) $d01d -Inlining cast (byte*) BORDERCOL#0 ← (byte*)(number) $d020 -Inlining cast (byte*) BGCOL#0 ← (byte*)(number) $d021 Inlining cast (byte*) SPRITES_COLS#0 ← (byte*)(number) $d027 Inlining cast (byte*) VIC_CONTROL#0 ← (byte*)(number) $d011 Inlining cast (byte*) IRQ_STATUS#0 ← (byte*)(number) $d019 @@ -1804,24 +1848,24 @@ Inlining cast (byte*) COLS#0 ← (byte*)(number) $d800 Inlining cast (byte*) CIA1_INTERRUPT#0 ← (byte*)(number) $dc0d Inlining cast (byte) CIA_INTERRUPT_CLEAR#0 ← (unumber)(number) $7f Inlining cast (void()**) HARDWARE_IRQ#0 ← (void()**)(number) $fffe -Inlining cast (byte) WHITE#0 ← (unumber)(number) 1 -Inlining cast (byte) BLUE#0 ← (unumber)(number) 6 Inlining cast (byte) LIGHT_BLUE#0 ← (unumber)(number) $e Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 Inlining cast (byte*) SPRITE_DATA#0 ← (byte*)(number) $2000 +Inlining cast (word*) VXSIN#0 ← (word*)(number) $2200 +Inlining cast (word*) VYSIN#0 ← (word*)(number) $2280 Inlining cast (byte) NUM_PROCESSING#0 ← (unumber)(number) 8 Inlining cast (word) NOT_FOUND#0 ← (unumber)(number) $ffff Inlining cast (byte) STATUS_FREE#0 ← (unumber)(number) 0 Inlining cast (byte) STATUS_NEW#0 ← (unumber)(number) 1 Inlining cast (byte) STATUS_PROCESSING#0 ← (unumber)(number) 2 -Inlining cast *((word*) main::$16 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((word*) main::$17 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((word*) main::$18 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((word*) main::$19 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte*) main::$20 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte*) main::$21 + (byte~) main::$15) ← (unumber)(number) 0 -Inlining cast *((byte**) main::$23 + (byte~) main::$15) ← (byte*)(number) 0 +Inlining cast *((word*) main::$17 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((word*) main::$18 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((word*) main::$19 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((word*) main::$20 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$21 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$22 + (byte~) main::$16) ← (unumber)(number) 0 +Inlining cast *((byte**) main::$24 + (byte~) main::$16) ← (byte*)(number) 0 Inlining cast (byte) getCharToProcess::closest_x#0 ← (unumber)(number) 0 Inlining cast (byte) getCharToProcess::closest_y#0 ← (unumber)(number) 0 Inlining cast (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::closest_y#3 @@ -1832,14 +1876,16 @@ Inlining cast (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 Inlining cast (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#2 Inlining cast (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#2 Inlining cast (byte~) startProcessing::$19 ← (byte)(byte*~) startProcessing::$18 -Inlining cast (signed byte~) startProcessing::$21 ← (signed byte)(byte) startProcessing::spriteIdx#1 -Inlining cast (word~) startProcessing::$25 ← (word)(snumber~) startProcessing::$24 -Inlining cast (word~) startProcessing::$26 ← (word)(number) -$10 +Inlining cast *((word*) startProcessing::$31 + (byte~) startProcessing::$28) ← (unumber)(number) $3c +Inlining cast *((word*) startProcessing::$32 + (byte~) startProcessing::$28) ← (unumber)(number) $3c Inlining cast (word~) $1 ← (word)(unumber~) $0 -Inlining cast (word~) $4 ← (word)(unumber~) $3 -Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0 -Inlining cast (byte~) processChars::$15 ← (byte)(word) processChars::xpos#1 -Inlining cast (byte~) processChars::$18 ← (byte)(word~) processChars::$17 +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*) 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 @@ -1854,7 +1900,9 @@ Simplifying constant integer cast $35 Simplifying constant integer cast $31 Simplifying constant pointer cast (byte*) 53248 Simplifying constant integer cast $18 +Simplifying constant integer cast $158 Simplifying constant integer cast $32 +Simplifying constant integer cast $fa Simplifying constant integer cast $3f8 Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 @@ -1864,8 +1912,6 @@ Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 Simplifying constant pointer cast (byte*) 53277 -Simplifying constant pointer cast (byte*) 53280 -Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53273 @@ -1875,8 +1921,6 @@ Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (byte*) 56333 Simplifying constant integer cast $7f Simplifying constant pointer cast (void()**) 65534 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 Simplifying constant integer cast $e Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -1886,6 +1930,8 @@ Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 +Simplifying constant pointer cast (word*) 8704 +Simplifying constant pointer cast (word*) 8832 Simplifying constant integer cast 8 Simplifying constant integer cast $ffff Simplifying constant integer cast 0 @@ -1901,6 +1947,7 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast $3e7 +Simplifying constant integer cast $3e7 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $28 @@ -1917,24 +1964,28 @@ Simplifying constant integer cast 4 Simplifying constant integer cast 8 Simplifying constant integer cast 4 Simplifying constant integer cast $40 -Simplifying constant integer cast 2 -Simplifying constant integer cast 8 -Simplifying constant integer cast -$10 +Simplifying constant integer cast $3c +Simplifying constant integer cast $3c Simplifying constant integer cast 8 Simplifying constant integer cast 4 +Simplifying constant integer cast (word) BORDER_XPOS_RIGHT#0 +Simplifying constant integer cast 4 Simplifying constant integer cast 8 Simplifying constant integer cast 4 -Simplifying constant integer cast 0 +Simplifying constant integer cast 4 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 4 Simplifying constant integer cast 0 Simplifying constant integer cast $ff Simplifying constant integer cast 2 -Simplifying constant integer cast 2 Simplifying constant integer cast 4 +Simplifying constant integer cast 2 Simplifying constant integer cast $ff -Simplifying constant integer cast $3e7 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 Simplifying constant integer cast $14 Simplifying constant integer cast $14 Simplifying constant integer cast $14 @@ -1956,12 +2007,12 @@ Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) $35 Finalized unsigned number type (byte) $31 Finalized unsigned number type (byte) $18 +Finalized unsigned number type (word) $158 Finalized unsigned number type (byte) $32 +Finalized unsigned number type (byte) $fa Finalized unsigned number type (word) $3f8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $7f -Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) $e Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -1983,6 +2034,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (word) $3e7 +Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 @@ -1999,23 +2051,27 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $40 -Finalized signed number type (signed byte) 2 -Finalized signed number type (signed byte) 8 +Finalized unsigned number type (byte) $3c +Finalized unsigned number type (byte) $3c Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 4 -Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $ff Finalized unsigned number type (byte) 2 -Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) $ff -Finalized unsigned number type (word) $3e7 +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 (byte) $14 Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $14 @@ -2034,9 +2090,9 @@ Finalized unsigned number type (byte) $30 Finalized unsigned number type (byte) $ff Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1 -Inferred type updated to byte in (unumber~) main::$6 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to 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::$27 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) startProcessing::$21 ← (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 @@ -2046,17 +2102,20 @@ Inferred type updated to word in (unumber~) startProcessing::$13 ← (word~) sta Inferred type updated to word in (unumber~) startProcessing::$15 ← (word~) startProcessing::$14 * (byte) 8 Inferred type updated to word in (unumber~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 Inferred type updated to word in (unumber~) startProcessing::$17 ← (word~) startProcessing::$16 << (byte) 4 -Inferred type updated to signed byte in (snumber~) startProcessing::$22 ← (signed byte~) startProcessing::$21 * (signed byte) 2 -Inferred type updated to signed byte in (snumber~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -Inferred type updated to signed byte in (snumber~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 Inferred type updated to byte in (unumber~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (byte) 8 -Inferred type updated to byte in (unumber~) $3 ← (byte) BORDER_YPOS_TOP#0 - (byte) 8 -Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (byte) 1 -Inferred type updated to byte in (unumber~) processChars::$4 ← (byte) 1 << *((byte*) processChars::$25) -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~) $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::$22 ← (byte) $ff ^ (byte) processChars::bitmask#4 +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 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 @@ -2068,14 +2127,14 @@ Inferred type updated to byte in (unumber~) initSquareTables::$9 ← (byte) init Inferred type updated to byte in (unumber~) initSquareTables::$10 ← (byte~) initSquareTables::$9 Inferred type updated to byte for (unumber~) initSquareTables::$13 Inferred type updated to byte in (unumber~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (byte) $40 -Inversing boolean not [40] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [39] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [114] (bool~) main::$10 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [113] (bool~) main::$9 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 -Inversing boolean not [135] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [134] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' -Inversing boolean not [147] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [146] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 -Inversing boolean not [160] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [159] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 -Inversing boolean not [186] (bool~) startProcessing::$29 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) != (byte) STATUS_FREE#0 from [185] (bool~) startProcessing::$28 ← *((byte*) startProcessing::$43 + (byte~) startProcessing::$33) == (byte) STATUS_FREE#0 -Inversing boolean not [284] (bool~) processChars::$6 ← *((byte*) processChars::$26) == (byte) STATUS_FREE#0 from [283] (bool~) processChars::$5 ← *((byte*) processChars::$26) != (byte) STATUS_FREE#0 -Inversing boolean not [293] (bool~) processChars::$8 ← *((byte*) processChars::$27) != (byte) STATUS_NEW#0 from [292] (bool~) processChars::$7 ← *((byte*) processChars::$27) == (byte) STATUS_NEW#0 +Inversing boolean not [38] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [37] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 +Inversing boolean not [114] (bool~) main::$11 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [113] (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 +Inversing boolean not [137] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [136] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' +Inversing boolean not [149] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [148] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 +Inversing boolean not [162] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [161] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 +Inversing boolean not [188] (bool~) startProcessing::$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 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 @@ -2088,9 +2147,9 @@ Alias (void()*) setupRasterIrq::irqRoutine#0 = (void()*~) main::$2 Alias (byte) getCharToProcess::return_x#0 = (byte) getCharToProcess::return_x#3 Alias (byte) getCharToProcess::return_y#0 = (byte) getCharToProcess::return_y#3 Alias (word) getCharToProcess::return_dist#0 = (word) getCharToProcess::return_dist#3 -Alias (byte) main::center_x#0 = (byte) main::$8_x (byte) main::center_x#1 -Alias (byte) main::center_y#0 = (byte) main::$8_y (byte) main::center_y#1 -Alias (word) main::center_dist#0 = (word) main::$8_dist (word) main::center_dist#1 +Alias (byte) main::center_x#0 = (byte) main::$9_x (byte) main::center_x#1 +Alias (byte) main::center_y#0 = (byte) main::$9_y (byte) main::center_y#1 +Alias (word) main::center_dist#0 = (word) main::$9_dist (word) main::center_dist#1 Alias (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#4 (byte) getCharToProcess::x#5 (byte) getCharToProcess::closest_x#1 Alias (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#5 (byte) getCharToProcess::y#3 (byte) getCharToProcess::closest_y#1 Alias (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#5 @@ -2124,21 +2183,24 @@ Alias (word) startProcessing::spriteX#0 = (word~) startProcessing::$13 Alias (word) startProcessing::spriteY#0 = (word~) startProcessing::$17 Alias (byte) startProcessing::spritePtr#0 = (byte~) startProcessing::$20 Alias (word) XPOS_LEFTMOST#0 = (word~) $2 -Alias (word) YPOS_UPMOST#0 = (word~) $5 -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#2 (word) processChars::xpos#3 +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 (byte) processChars::bitmask#2 = (byte) processChars::bitmask#6 (byte) processChars::bitmask#3 -Alias (byte) processChars::i#6 = (byte) processChars::i#8 (byte) processChars::i#7 +Alias (byte) processChars::i#7 = (byte) processChars::i#9 (byte) processChars::i#8 Alias (struct ProcessingSprite*) processChars::processing#2 = (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#9 (byte) processChars::numActive#11 +Alias (byte) processChars::ypos#0 = (byte~) processChars::$15 (byte) processChars::ypos#1 Alias (struct ProcessingSprite*) processChars::processing#4 = (struct ProcessingSprite*) processChars::processing#5 (struct ProcessingSprite*) processChars::processing#6 Alias (byte) processChars::bitmask#4 = (byte) processChars::bitmask#7 -Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#8 -Alias (byte) processChars::i#10 = (byte) processChars::i#4 (byte) processChars::i#9 -Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6 +Alias (byte) processChars::i#4 = (byte) processChars::i#6 (byte) processChars::i#5 +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) 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 @@ -2168,8 +2230,7 @@ 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#6 (byte) processChars::i#11 (byte) processChars::i#5 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#4 (byte) processChars::numActive#2 +Alias (byte) processChars::i#10 = (byte) processChars::i#7 (byte) processChars::i#4 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 @@ -2210,45 +2271,49 @@ 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 [322] (byte~) processChars::$16 ← (byte) processChars::i#10 * (byte) 2 +Identified duplicate assignment right side [329] (byte~) processChars::$16 ← (byte) processChars::i#10 * (byte) 2 Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) mul8u::$0 [36] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -Simple Condition (bool~) mul8u::$3 [41] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 -Simple Condition (bool~) main::$5 [73] if((byte*) main::src#1!=(byte*~) main::$4) goto main::@1 -Simple Condition (bool~) main::$7 [96] if((byte) main::i#1!=rangelast(0,main::$6)) goto main::@3 -Simple Condition (bool~) main::$10 [115] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 -Simple Condition (bool~) getCharToProcess::$3 [136] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$7 [140] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 -Simple Condition (bool~) getCharToProcess::$6 [148] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 -Simple Condition (bool~) getCharToProcess::$8 [157] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 -Simple Condition (bool~) getCharToProcess::$1 [161] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 -Simple Condition (bool~) startProcessing::$29 [187] if(*((byte*) startProcessing::$43 + (byte~) startProcessing::$33)!=(byte) STATUS_FREE#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$30 [191] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$27)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$31 [196] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) startProcessing::$32 [222] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 -Simple Condition (bool~) processChars::$6 [285] if(*((byte*) processChars::$26)==(byte) STATUS_FREE#0) goto processChars::@2 -Simple Condition (bool~) processChars::$23 [289] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 -Simple Condition (bool~) processChars::$8 [294] if(*((byte*) processChars::$27)!=(byte) STATUS_NEW#0) goto processChars::@3 -Simple Condition (bool~) processChars::$43 [301] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -Simple Condition (bool~) initSquareTables::$0 [359] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [378] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [382] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [401] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) initSprites::$2 [410] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1 -Simple Condition (bool~) initSprites::$3 [416] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 -Simple Condition (bool~) setupRasterIrq::$0 [427] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$1 [444] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 -Simple Condition (bool~) irqTop::$2 [451] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 -Simple Condition (bool~) irqBottom::$2 [464] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 +Simple Condition (bool~) mul8u::$0 [34] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 +Simple Condition (bool~) mul8u::$3 [39] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 +Simple Condition (bool~) main::$6 [73] if((byte*) main::src#1!=(byte*~) main::$5) goto main::@1 +Simple Condition (bool~) main::$8 [96] if((byte) main::i#1!=rangelast(0,main::$7)) goto main::@3 +Simple Condition (bool~) main::$11 [115] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 +Simple Condition (bool~) getCharToProcess::$3 [138] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$7 [142] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 +Simple Condition (bool~) getCharToProcess::$6 [150] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$8 [159] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 +Simple Condition (bool~) getCharToProcess::$1 [163] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 +Simple Condition (bool~) startProcessing::$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 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting || if()-condition to two if()s [331] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20 +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 [354] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [355] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [455] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [471] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +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() Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) PROCPORT_DDR#0 = (byte*) 0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -2257,7 +2322,9 @@ Constant (const byte) PROCPORT_RAM_IO#0 = $35 Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31 Constant (const byte*) CHARGEN#0 = (byte*) 53248 Constant (const byte) BORDER_XPOS_LEFT#0 = $18 +Constant (const word) BORDER_XPOS_RIGHT#0 = $158 Constant (const byte) BORDER_YPOS_TOP#0 = $32 +Constant (const byte) BORDER_YPOS_BOTTOM#0 = $fa Constant (const word) SPRITE_PTRS#0 = $3f8 Constant (const byte*) SPRITES_XPOS#0 = (byte*) 53248 Constant (const byte*) SPRITES_YPOS#0 = (byte*) 53249 @@ -2267,8 +2334,6 @@ Constant (const byte*) SPRITES_ENABLE#0 = (byte*) 53269 Constant (const byte*) SPRITES_EXPAND_Y#0 = (byte*) 53271 Constant (const byte*) SPRITES_MC#0 = (byte*) 53276 Constant (const byte*) SPRITES_EXPAND_X#0 = (byte*) 53277 -Constant (const byte*) BORDERCOL#0 = (byte*) 53280 -Constant (const byte*) BGCOL#0 = (byte*) 53281 Constant (const byte*) SPRITES_COLS#0 = (byte*) 53287 Constant (const byte*) VIC_CONTROL#0 = (byte*) 53265 Constant (const byte*) IRQ_STATUS#0 = (byte*) 53273 @@ -2278,12 +2343,12 @@ Constant (const byte*) COLS#0 = (byte*) 55296 Constant (const byte*) CIA1_INTERRUPT#0 = (byte*) 56333 Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f Constant (const void()**) HARDWARE_IRQ#0 = (void()**) 65534 -Constant (const byte) WHITE#0 = 1 -Constant (const byte) BLUE#0 = 6 Constant (const byte) LIGHT_BLUE#0 = $e Constant (const word) mul8u::res#0 = 0 Constant (const byte*) SCREEN#0 = (byte*) 1024 Constant (const byte*) SPRITE_DATA#0 = (byte*) 8192 +Constant (const word*) VXSIN#0 = (word*) 8704 +Constant (const word*) VYSIN#0 = (word*) 8832 Constant (const byte[$3e8]) SCREEN_COPY#0 = { fill( $3e8, 0) } Constant (const byte) NUM_PROCESSING#0 = 8 Constant (const word) NOT_FOUND#0 = $ffff @@ -2299,8 +2364,6 @@ Constant (const byte) getCharToProcess::x#0 = 0 Constant (const byte) startProcessing::freeIdx#0 = $ff Constant (const byte) startProcessing::i#0 = 0 Constant (const byte) startProcessing::i1#0 = 0 -Constant (const word) startProcessing::$26 = -$10 -Constant (const byte) processChars::numActive#0 = 0 Constant (const byte) processChars::i#0 = 0 Constant (const word[$28]) SQUARES_X#0 = { fill( $28, 0) } Constant (const word[$19]) SQUARES_Y#0 = { fill( $19, 0) } @@ -2323,83 +2386,98 @@ 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 Successful SSA optimization Pass2ConstantValues if() condition always true - replacing block destination [121] if(true) goto main::@5 -if() condition always true - replacing block destination [124] if(true) goto main::@11 -if() condition always true - replacing block destination [427] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +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 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [138] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ -Resolved ranged comparison value [140] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 -Resolved ranged next value [155] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ -Resolved ranged comparison value [157] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 -Resolved ranged next value [220] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ -Resolved ranged comparison value [222] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 -Resolved ranged next value [376] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [378] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [399] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [401] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [414] initSprites::i#1 ← ++ initSprites::i#2 to ++ -Resolved ranged comparison value [416] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8 -Resolved ranged next value [442] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [444] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 -Resolved ranged next value [449] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [451] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 -Resolved ranged next value [462] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [464] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 -Converting *(pointer+n) to pointer[n] [171] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) -Converting *(pointer+n) to pointer[n] [208] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8) -Converting *(pointer+n) to pointer[n] [280] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$25) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [285] if(*((byte*) processChars::$26)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [294] if(*((byte*) processChars::$27)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [297] (word) processChars::xpos#0 ← *((word*) processChars::$28) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [304] *(*((byte**) processChars::$29)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR) -Converting *(pointer+n) to pointer[n] [308] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$30) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Converting *(pointer+n) to pointer[n] [310] *((byte*~) processChars::$10) ← *((byte*) processChars::$31) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -Converting *(pointer+n) to pointer[n] [310] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)) -Converting *(pointer+n) to pointer[n] [312] *((byte*) processChars::$32) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [324] (word~) processChars::$17 ← *((word*) processChars::$33) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [328] (bool~) processChars::$19 ← *((word*) processChars::$34) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [330] (bool~) processChars::$20 ← *((word*) processChars::$35) < (word) YPOS_UPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [335] *((byte*) processChars::$36) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) -Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((word*) processChars::$37) + *((word*) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Converting *(pointer+n) to pointer[n] [342] *((word*) processChars::$39) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X) -Converting *(pointer+n) to pointer[n] [346] *((word*) processChars::$42) ← *((word*) processChars::$40) + *((word*) processChars::$41) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) -Converting *(pointer+n) to pointer[n] [346] *((word*) processChars::$42) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$41) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY) -Converting *(pointer+n) to pointer[n] [346] *((word*) processChars::$42) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y) +Resolved ranged next value [140] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ +Resolved ranged comparison value [142] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 +Resolved ranged next value [157] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ +Resolved ranged comparison value [159] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 +Resolved ranged next value [222] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++ +Resolved ranged comparison value [224] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8 +Resolved ranged next value [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 +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) Successful SSA optimization Pass2InlineDerefIdx -Simplifying expression containing zero (word*)PROCESSING#0 in [78] (word*) main::$16 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)PROCESSING#0 in [247] (word*) startProcessing::$35 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [296] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [297] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) >> (byte) 4 -Simplifying expression containing zero (word*)processChars::processing#0 in [327] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [328] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0 -Simplifying expression containing zero (word*)processChars::processing#0 in [339] (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [341] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X -Simplifying expression containing zero (word*)processChars::processing#0 in [342] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -Simplifying expression containing zero (word*)processChars::processing#0 in [342] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) +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) 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 [73] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 -Eliminating unused variable (byte*) processChars::$25 and assignment [151] (byte*) processChars::$25 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*) processChars::$26 and assignment [153] (byte*) processChars::$26 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (byte*) processChars::$27 and assignment [158] (byte*) processChars::$27 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$28 and assignment [160] (word*) processChars::$28 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (byte**) processChars::$29 and assignment [164] (byte**) processChars::$29 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR -Eliminating unused variable (byte*) processChars::$30 and assignment [168] (byte*) processChars::$30 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID -Eliminating unused variable (byte*~) processChars::$10 and assignment [169] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -Eliminating unused variable (byte*) processChars::$31 and assignment [170] (byte*) processChars::$31 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR -Eliminating unused variable (byte*) processChars::$32 and assignment [172] (byte*) processChars::$32 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$33 and assignment [181] (word*) processChars::$33 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$34 and assignment [185] (word*) processChars::$34 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$35 and assignment [187] (word*) processChars::$35 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (byte*) processChars::$36 and assignment [190] (byte*) processChars::$36 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS -Eliminating unused variable (word*) processChars::$37 and assignment [194] (word*) processChars::$37 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$38 and assignment [195] (word*) processChars::$38 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX -Eliminating unused variable (word*) processChars::$39 and assignment [196] (word*) processChars::$39 ← (word*)(struct ProcessingSprite*) processChars::processing#0 -Eliminating unused variable (word*) processChars::$40 and assignment [198] (word*) processChars::$40 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y -Eliminating unused variable (word*) processChars::$41 and assignment [199] (word*) processChars::$41 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY -Eliminating unused variable (word*) processChars::$42 and assignment [200] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y +Eliminating unused 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 constant (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -2418,6 +2496,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 $28 Simplifying constant integer cast $19 Simplifying constant integer cast 8 @@ -2435,7 +2514,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::$14 +Alias (byte~) processChars::$16 = (byte~) processChars::$12 +Alias (byte~) processChars::$30 = (byte~) processChars::$29 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) getCharToProcess::y#2 Self Phi Eliminated (byte) startProcessing::center_y#8 @@ -2445,144 +2525,156 @@ Identical Phi Values (byte) getCharToProcess::y#2 (byte) getCharToProcess::y#7 Identical Phi Values (byte) startProcessing::center_y#8 (byte) startProcessing::center_y#0 Identical Phi Values (byte) startProcessing::center_x#8 (byte) startProcessing::center_x#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) processChars::$19 [174] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6 -Simple Condition (bool~) processChars::$20 [266] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_UPMOST#0) goto processChars::@6 +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 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [16] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e8 -Constant right-side identified [18] (byte~) main::$6 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [52] (byte*~) main::$14 ← (const byte*) COLS#0 + (word) $3e7 -Constant right-side identified [74] (byte~) startProcessing::$27 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [112] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40 -Constant right-side identified [138] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8 -Constant right-side identified [141] (byte~) $3 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8 -Constant right-side identified [144] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1 -Constant right-side identified [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0 -Constant right-side identified [181] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [217] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40 -Constant right-side identified [233] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 +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 [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 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 = { fill( NUM_PROCESSING#0, 0) } -Constant (const byte*) main::$4 = SCREEN#0+$3e8 -Constant (const byte) main::$6 = NUM_PROCESSING#0-1 -Constant (const byte*) main::$14 = COLS#0+$3e7 -Constant (const byte) startProcessing::$27 = NUM_PROCESSING#0-1 +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::$18 = SPRITE_DATA#0/$40 Constant (const byte) $0 = BORDER_XPOS_LEFT#0-8 -Constant (const byte) $3 = 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::$0 = SCREEN#0+$3e7 +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) initSprites::$0 = NUM_PROCESSING#0*$40 Constant (const byte) setupRasterIrq::$1 = =(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [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 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [116] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) - [116] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) - [116] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) - [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [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 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [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 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + [121] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 - [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 - [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 - [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 - [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 - [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [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) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [129] return + [128] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + [129] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + [130] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + [131] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + [132] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 -setupRasterIrq: scope:[setupRasterIrq] from main::@7 +setupRasterIrq: scope:[setupRasterIrq] from main::@8 asm { sei } - [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [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 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [137] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [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 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [143] return + [142] return to:@return initSprites: scope:[initSprites] from main::@3 - [144] phi() + [143] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@1 - [145] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 ) - [146] *((byte*) initSprites::sp#2) ← (byte) 0 - [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 - [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 + [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 to:initSprites::@2 initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2 - [149] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 ) - [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 - [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 + [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 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@2 - [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 - [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 + [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 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@3 - [156] return + [155] return to:@return initSquareTables: scope:[initSquareTables] from main - [157] phi() + [156] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [158] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [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 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [161] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [164] call mul8u - [165] (word) mul8u::return#2 ← (word) mul8u::res#2 + [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 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [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 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [171] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [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 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [174] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [177] call mul8u - [178] (word) mul8u::return#3 ← (word) mul8u::res#2 + [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 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [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 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [184] return + [183] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [187] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [187] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [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 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [188] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [188] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [188] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [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 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [190] return + [189] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [194] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [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 to:mul8u::@1 irqBottom: scope:[irqBottom] from - [197] phi() + [196] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [198] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [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 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [203] call processChars + [200] phi() + [201] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [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 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [209] return + [205] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [210] phi() + [206] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [211] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) - [211] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 - [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 - [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 - [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 - [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 - [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) - [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 + [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 to:processChars::@10 -processChars::@10: scope:[processChars] from processChars::@1 - [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 - to:processChars::@11 -processChars::@11: scope:[processChars] from processChars::@10 - [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' - [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 - [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) - [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 +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::@11 - [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 - [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 - [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 - to:processChars::@8 -processChars::@8: scope:[processChars] from processChars::@3 - [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 +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::@8 - [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 - [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 - [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 - [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 - [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 - [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 +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 - [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 - to:processChars::@9 -processChars::@9: scope:[processChars] from processChars::@13 - [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) - to:processChars::@7 -processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 - to:processChars::@2 -processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [240] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 + [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::@2 - [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 - [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 +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 + 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 + 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 + [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::@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 to:processChars::@return -processChars::@return: scope:[processChars] from processChars::@12 - [245] return +processChars::@return: scope:[processChars] from processChars::@2 + [250] return to:@return -processChars::@6: scope:[processChars] from processChars::@13 processChars::@5 - [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 - [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 - to:processChars::@7 +processChars::@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::@4: scope:[processChars] from processChars::@3 - [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 + [254] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 to:processChars::@5 irqTop: scope:[irqTop] from - [250] phi() + [255] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [251] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [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 to:irqTop::@2 -irqTop::@2: scope:[irqTop] from irqTop::@1 - [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 +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 to:irqTop::@3 -irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [256] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 - to:irqTop::@4 -irqTop::@4: scope:[irqTop] from irqTop::@3 - [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +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 to:irqTop::@return -irqTop::@return: scope:[irqTop] from irqTop::@4 - [264] return +irqTop::@return: scope:[irqTop] from irqTop::@3 + [265] return to:@return VARIABLE REGISTER WEIGHTS -(byte*) BGCOL -(byte) BLUE -(byte*) BORDERCOL (byte) BORDER_XPOS_LEFT +(word) BORDER_XPOS_RIGHT +(byte) BORDER_YPOS_BOTTOM (byte) BORDER_YPOS_TOP (byte*) CHARGEN (byte*) CIA1_INTERRUPT @@ -3393,9 +3495,12 @@ VARIABLE REGISTER WEIGHTS (byte) STATUS_NEW (byte) STATUS_PROCESSING (byte*) VIC_CONTROL -(byte) WHITE +(word*) VXSIN +(word*) VYSIN (word) XPOS_LEFTMOST -(word) YPOS_UPMOST +(word) XPOS_RIGHTMOST +(word) YPOS_BOTTOMMOST +(word) YPOS_TOPMOST (struct ProcessingChar()) getCharToProcess() (word~) getCharToProcess::$10 4.0 (byte*~) getCharToProcess::$11 4.0 @@ -3479,11 +3584,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 16.5 (byte) irqTop::i1#2 22.0 (void()) main() -(byte~) main::$15 12.375 -(byte) main::$24 22.0 +(byte~) main::$16 12.375 (byte) main::$25 22.0 (byte) main::$26 22.0 -(struct ProcessingChar~) main::$8 +(byte) main::$27 22.0 +(struct ProcessingChar~) main::$9 (struct ProcessingChar) main::center (word) main::center_dist (word) main::center_dist#0 22.0 @@ -3523,31 +3628,38 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 22.0 (word) mul8u::return#3 22.0 (void()) processChars() -(byte~) processChars::$1 4.0 -(byte~) processChars::$12 22.0 +(byte~) processChars::$10 22.0 +(byte~) processChars::$11 22.0 (byte~) processChars::$13 22.0 -(byte~) processChars::$15 22.0 +(word~) processChars::$14 11.0 (byte~) processChars::$16 6.6000000000000005 -(word~) processChars::$17 11.0 -(byte~) processChars::$18 22.0 -(byte~) processChars::$22 22.0 -(byte~) processChars::$24 22.0 -(byte) processChars::$44 22.0 -(byte) processChars::$45 22.0 -(byte) processChars::$46 22.0 +(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::$34 22.0 +(byte~) processChars::$36 22.0 +(byte~) processChars::$37 22.0 +(byte~) processChars::$38 22.0 +(byte) processChars::$64 22.0 +(byte) processChars::$65 22.0 +(byte) processChars::$66 22.0 (byte) processChars::bitmask -(byte) processChars::bitmask#0 2.5 +(byte) processChars::bitmask#0 2.2916666666666665 (byte) processChars::i (byte) processChars::i#1 16.5 -(byte) processChars::i#10 1.9411764705882353 -(byte) processChars::numActive -(byte) processChars::numActive#1 22.0 -(byte) processChars::numActive#10 1.03125 -(byte) processChars::numActive#3 11.666666666666666 +(byte) processChars::i#10 1.4666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 0.4782608695652174 +(struct ProcessingSprite*) processChars::processing#0 0.3055555555555556 +(byte) processChars::xchar +(byte) processChars::xchar#0 22.0 (word) processChars::xpos -(word) processChars::xpos#0 3.142857142857143 +(word) processChars::xpos#0 2.0625 +(byte) processChars::ychar +(byte) processChars::ychar#0 22.0 +(byte) processChars::ypos +(byte) processChars::ypos#0 2.5384615384615383 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (void()*) setupRasterIrq::irqRoutine (word) setupRasterIrq::raster @@ -3561,22 +3673,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word~) startProcessing::$15 4.0 (word~) startProcessing::$16 4.0 (byte*~) startProcessing::$2 1.2000000000000002 -(signed byte~) startProcessing::$22 4.0 -(signed byte~) startProcessing::$23 4.0 -(signed byte~) startProcessing::$24 2.0 -(word~) startProcessing::$25 0.5714285714285714 -(byte~) startProcessing::$33 2002.0 -(byte~) startProcessing::$34 2.25 +(byte~) startProcessing::$27 2002.0 +(byte~) startProcessing::$28 2.25 +(byte) startProcessing::$38 2002.0 +(byte) startProcessing::$39 2002.0 (word~) startProcessing::$4 4.0 -(byte) startProcessing::$44 2002.0 -(byte) startProcessing::$45 2002.0 -(byte) startProcessing::$46 2002.0 -(word) startProcessing::$48 4.0 -(word) startProcessing::$49 4.0 +(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::$47 4.0 (word~) startProcessing::$5 4.0 -(byte) startProcessing::$51 4.0 -(byte) startProcessing::$52 4.0 -(byte) startProcessing::$53 4.0 (word~) startProcessing::$7 4.0 (word~) startProcessing::$8 4.0 (struct ProcessingChar) startProcessing::center @@ -3592,7 +3700,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 28.56521739130435 +(byte) startProcessing::freeIdx#2 31.285714285714285 (byte) startProcessing::freeIdx#6 22.444444444444443 (byte~) startProcessing::freeIdx#7 202.0 (byte~) startProcessing::freeIdx#8 202.0 @@ -3603,18 +3711,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.09523809523809523 +(byte*) startProcessing::screenPtr#0 0.10526315789473684 (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.2857142857142857 +(byte) startProcessing::spritePtr#0 0.4 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 0.2857142857142857 +(word) startProcessing::spriteX#0 0.4 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 0.36363636363636365 +(word) startProcessing::spriteY#0 0.5714285714285714 Not consolidating phi with different size mul8u::mb#0 mul8u::b#1 Not consolidating phi with different size mul8u::mb#0 mul8u::b#0 @@ -3647,13 +3755,12 @@ 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::$24 to zero page equivalence class [ main::$24 ] Added variable main::$25 to zero page equivalence class [ main::$25 ] Added variable main::$26 to zero page equivalence class [ main::$26 ] -Added variable main::$15 to zero page equivalence class [ main::$15 ] +Added variable main::$27 to zero page equivalence class [ main::$27 ] +Added variable main::$16 to zero page equivalence class [ main::$16 ] Added variable getCharToProcess::return_x#0 to zero page equivalence class [ getCharToProcess::return_x#0 ] Added variable getCharToProcess::return_y#0 to zero page equivalence class [ getCharToProcess::return_y#0 ] Added variable getCharToProcess::return_dist#0 to zero page equivalence class [ getCharToProcess::return_dist#0 ] @@ -3662,13 +3769,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::$44 to zero page equivalence class [ startProcessing::$44 ] -Added variable startProcessing::$45 to zero page equivalence class [ startProcessing::$45 ] -Added variable startProcessing::$46 to zero page equivalence class [ startProcessing::$46 ] -Added variable startProcessing::$33 to zero page equivalence class [ startProcessing::$33 ] +Added variable startProcessing::$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::$48 to zero page equivalence class [ startProcessing::$48 ] -Added variable startProcessing::$49 to zero page equivalence class [ startProcessing::$49 ] +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::$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 ] @@ -3686,14 +3793,10 @@ 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::$22 to zero page equivalence class [ startProcessing::$22 ] -Added variable startProcessing::$23 to zero page equivalence class [ startProcessing::$23 ] -Added variable startProcessing::$24 to zero page equivalence class [ startProcessing::$24 ] -Added variable startProcessing::$25 to zero page equivalence class [ startProcessing::$25 ] -Added variable startProcessing::$51 to zero page equivalence class [ startProcessing::$51 ] -Added variable startProcessing::$52 to zero page equivalence class [ startProcessing::$52 ] -Added variable startProcessing::$53 to zero page equivalence class [ startProcessing::$53 ] -Added variable startProcessing::$34 to zero page equivalence class [ startProcessing::$34 ] +Added variable startProcessing::$45 to zero page equivalence class [ startProcessing::$45 ] +Added variable startProcessing::$46 to zero page equivalence class [ startProcessing::$46 ] +Added variable startProcessing::$47 to zero page equivalence class [ startProcessing::$47 ] +Added variable startProcessing::$28 to zero page equivalence class [ startProcessing::$28 ] 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 ] @@ -3708,21 +3811,29 @@ Added variable mul8u::return#3 to zero page equivalence class [ mul8u::return#3 Added variable initSquareTables::$14 to zero page equivalence class [ initSquareTables::$14 ] Added variable initSquareTables::$17 to zero page equivalence class [ initSquareTables::$17 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] -Added variable processChars::$44 to zero page equivalence class [ processChars::$44 ] -Added variable processChars::$45 to zero page equivalence class [ processChars::$45 ] -Added variable processChars::$46 to zero page equivalence class [ processChars::$46 ] -Added variable processChars::$24 to zero page equivalence class [ processChars::$24 ] +Added variable processChars::$64 to zero page equivalence class [ processChars::$64 ] +Added variable processChars::$65 to zero page equivalence class [ processChars::$65 ] +Added variable processChars::$66 to zero page equivalence class [ processChars::$66 ] +Added variable processChars::$36 to zero page equivalence class [ processChars::$36 ] Added variable processChars::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::$12 to zero page equivalence class [ processChars::$12 ] -Added variable processChars::$13 to zero page equivalence class [ processChars::$13 ] +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::$15 to zero page equivalence class [ processChars::$15 ] -Added variable processChars::$17 to zero page equivalence class [ processChars::$17 ] -Added variable processChars::$18 to zero page equivalence class [ processChars::$18 ] -Added variable processChars::$1 to zero page equivalence class [ processChars::$1 ] -Added variable processChars::$22 to zero page equivalence class [ processChars::$22 ] +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::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::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::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::$34 to zero page equivalence class [ processChars::$34 ] Complete equivalence classes [ main::src#2 main::src#1 ] [ main::dst#2 main::dst#1 ] @@ -3752,13 +3863,12 @@ 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::$24 ] [ main::$25 ] [ main::$26 ] -[ main::$15 ] +[ main::$27 ] +[ main::$16 ] [ getCharToProcess::return_x#0 ] [ getCharToProcess::return_y#0 ] [ getCharToProcess::return_dist#0 ] @@ -3767,13 +3877,13 @@ Complete equivalence classes [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] -[ startProcessing::$44 ] -[ startProcessing::$45 ] -[ startProcessing::$46 ] -[ startProcessing::$33 ] +[ startProcessing::$38 ] +[ startProcessing::$39 ] +[ startProcessing::$40 ] +[ startProcessing::$27 ] [ startProcessing::$0 ] -[ startProcessing::$48 ] -[ startProcessing::$49 ] +[ startProcessing::$42 ] +[ startProcessing::$43 ] [ startProcessing::$1 ] [ startProcessing::$2 ] [ startProcessing::screenPtr#0 ] @@ -3791,14 +3901,10 @@ Complete equivalence classes [ startProcessing::$16 ] [ startProcessing::spriteY#0 ] [ startProcessing::spritePtr#0 ] -[ startProcessing::$22 ] -[ startProcessing::$23 ] -[ startProcessing::$24 ] -[ startProcessing::$25 ] -[ startProcessing::$51 ] -[ startProcessing::$52 ] -[ startProcessing::$53 ] -[ startProcessing::$34 ] +[ startProcessing::$45 ] +[ startProcessing::$46 ] +[ startProcessing::$47 ] +[ startProcessing::$28 ] [ getCharToProcess::$13 ] [ getCharToProcess::$14 ] [ getCharToProcess::$9 ] @@ -3813,21 +3919,29 @@ Complete equivalence classes [ initSquareTables::$14 ] [ initSquareTables::$17 ] [ mul8u::$1 ] -[ processChars::$44 ] -[ processChars::$45 ] -[ processChars::$46 ] -[ processChars::$24 ] +[ processChars::$64 ] +[ processChars::$65 ] +[ processChars::$66 ] +[ processChars::$36 ] [ processChars::processing#0 ] [ processChars::bitmask#0 ] [ processChars::xpos#0 ] -[ processChars::$12 ] -[ processChars::$13 ] +[ processChars::$10 ] +[ processChars::$11 ] [ processChars::$16 ] -[ processChars::$15 ] -[ processChars::$17 ] -[ processChars::$18 ] -[ processChars::$1 ] -[ processChars::$22 ] +[ processChars::$13 ] +[ processChars::$14 ] +[ processChars::ypos#0 ] +[ processChars::$24 ] +[ processChars::$25 ] +[ processChars::xchar#0 ] +[ processChars::$37 ] +[ processChars::$28 ] +[ processChars::$30 ] +[ processChars::ychar#0 ] +[ processChars::$38 ] +[ processChars::$33 ] +[ processChars::$34 ] Allocated zp ZP_WORD:2 [ main::src#2 main::src#1 ] Allocated zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] Allocated zp ZP_BYTE:6 [ main::i#2 main::i#1 ] @@ -3856,82 +3970,85 @@ Allocated zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] Allocated zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] Allocated zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] Allocated zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Allocated zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Allocated zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] -Allocated zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] -Allocated zp ZP_BYTE:43 [ main::$24 ] -Allocated zp ZP_BYTE:44 [ main::$25 ] -Allocated zp ZP_BYTE:45 [ main::$26 ] -Allocated zp ZP_BYTE:46 [ main::$15 ] -Allocated zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Allocated zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] -Allocated zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] -Allocated zp ZP_BYTE:51 [ main::center_x#0 ] -Allocated zp ZP_BYTE:52 [ main::center_y#0 ] -Allocated zp ZP_WORD:53 [ main::center_dist#0 ] -Allocated zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Allocated zp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Allocated zp ZP_BYTE:57 [ startProcessing::$44 ] -Allocated zp ZP_BYTE:58 [ startProcessing::$45 ] -Allocated zp ZP_BYTE:59 [ startProcessing::$46 ] -Allocated zp ZP_BYTE:60 [ startProcessing::$33 ] -Allocated zp ZP_WORD:61 [ startProcessing::$0 ] -Allocated zp ZP_WORD:63 [ startProcessing::$48 ] -Allocated zp ZP_WORD:65 [ startProcessing::$49 ] -Allocated zp ZP_WORD:67 [ startProcessing::$1 ] -Allocated zp ZP_WORD:69 [ startProcessing::$2 ] -Allocated zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] -Allocated zp ZP_WORD:73 [ startProcessing::$4 ] -Allocated zp ZP_WORD:75 [ startProcessing::$5 ] -Allocated zp ZP_BYTE:77 [ startProcessing::ch#0 ] -Allocated zp ZP_WORD:78 [ startProcessing::$7 ] -Allocated zp ZP_WORD:80 [ startProcessing::$8 ] -Allocated zp ZP_WORD:82 [ startProcessing::$10 ] -Allocated zp ZP_WORD:84 [ startProcessing::$11 ] -Allocated zp ZP_WORD:86 [ startProcessing::$12 ] -Allocated zp ZP_WORD:88 [ startProcessing::spriteX#0 ] -Allocated zp ZP_WORD:90 [ startProcessing::$14 ] -Allocated zp ZP_WORD:92 [ startProcessing::$15 ] -Allocated zp ZP_WORD:94 [ startProcessing::$16 ] -Allocated zp ZP_WORD:96 [ startProcessing::spriteY#0 ] -Allocated zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Allocated zp ZP_BYTE:99 [ startProcessing::$22 ] -Allocated zp ZP_BYTE:100 [ startProcessing::$23 ] -Allocated zp ZP_BYTE:101 [ startProcessing::$24 ] -Allocated zp ZP_WORD:102 [ startProcessing::$25 ] -Allocated zp ZP_BYTE:104 [ startProcessing::$51 ] -Allocated zp ZP_BYTE:105 [ startProcessing::$52 ] -Allocated zp ZP_BYTE:106 [ startProcessing::$53 ] -Allocated zp ZP_BYTE:107 [ startProcessing::$34 ] -Allocated zp ZP_BYTE:108 [ getCharToProcess::$13 ] -Allocated zp ZP_BYTE:109 [ getCharToProcess::$14 ] -Allocated zp ZP_WORD:110 [ getCharToProcess::$9 ] -Allocated zp ZP_WORD:112 [ getCharToProcess::$15 ] -Allocated zp ZP_WORD:114 [ getCharToProcess::$16 ] -Allocated zp ZP_WORD:116 [ getCharToProcess::$10 ] -Allocated zp ZP_WORD:118 [ getCharToProcess::$11 ] -Allocated zp ZP_WORD:120 [ mul8u::return#2 ] -Allocated zp ZP_WORD:122 [ initSquareTables::$6 ] -Allocated zp ZP_BYTE:124 [ initSquareTables::$16 ] -Allocated zp ZP_WORD:125 [ mul8u::return#3 ] -Allocated zp ZP_WORD:127 [ initSquareTables::$14 ] -Allocated zp ZP_BYTE:129 [ initSquareTables::$17 ] -Allocated zp ZP_BYTE:130 [ mul8u::$1 ] -Allocated zp ZP_BYTE:131 [ processChars::$44 ] -Allocated zp ZP_BYTE:132 [ processChars::$45 ] -Allocated zp ZP_BYTE:133 [ processChars::$46 ] -Allocated zp ZP_BYTE:134 [ processChars::$24 ] -Allocated zp ZP_WORD:135 [ processChars::processing#0 ] -Allocated zp ZP_BYTE:137 [ processChars::bitmask#0 ] -Allocated zp ZP_WORD:138 [ processChars::xpos#0 ] -Allocated zp ZP_BYTE:140 [ processChars::$12 ] -Allocated zp ZP_BYTE:141 [ processChars::$13 ] -Allocated zp ZP_BYTE:142 [ processChars::$16 ] -Allocated zp ZP_BYTE:143 [ processChars::$15 ] -Allocated zp ZP_WORD:144 [ processChars::$17 ] -Allocated zp ZP_BYTE:146 [ processChars::$18 ] -Allocated zp ZP_BYTE:147 [ processChars::$1 ] -Allocated zp ZP_BYTE:148 [ processChars::$22 ] +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 ] INITIAL ASM //SEG0 File Comments @@ -3962,7 +4079,9 @@ INITIAL ASM .label CHARGEN = $d000 // Positions of the border (in sprite positions) .const BORDER_XPOS_LEFT = $18 + .const BORDER_XPOS_RIGHT = $158 .const BORDER_YPOS_TOP = $32 + .const BORDER_YPOS_BOTTOM = $fa // The offset of the sprite pointers from the screen start address .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 @@ -3973,8 +4092,6 @@ INITIAL ASM .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 - .label BGCOL = $d021 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register @@ -3991,13 +4108,15 @@ INITIAL ASM .const CIA_INTERRUPT_CLEAR = $7f // The vector used when the HARDWARE serves IRQ interrupts .label HARDWARE_IRQ = $fffe - .const WHITE = 1 - .const BLUE = 6 .const LIGHT_BLUE = $e // Address of the screen .label SCREEN = $400 // Sprite data for the animating sprites .label SPRITE_DATA = $2000 + // Values added to VX + .label VXSIN = $2200 + // Values added to VY + .label VYSIN = $2280 // Max number of chars processed at once .const NUM_PROCESSING = 8 // Distance value meaning not found @@ -4008,216 +4127,223 @@ INITIAL ASM .const STATUS_PROCESSING = 2 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff + .const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4 + .const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4 .const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4 - .const YPOS_UPMOST = BORDER_YPOS_TOP-8<<4 + .const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4 //SEG3 @begin bbegin: -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] -b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG4 @1 b1: -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: +//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }} +//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }} +//SEG7 [3] phi from @1 to @2 [phi:@1->@2] +b2_from_b1: + jmp b2 +//SEG8 @2 +b2: +//SEG9 [4] call main +//SEG10 [6] phi from @2 to main [phi:@2->main] +main_from_b2: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -bend_from_b1: +//SEG11 [5] phi from @2 to @end [phi:@2->@end] +bend_from_b2: jmp bend -//SEG9 @end +//SEG12 @end bend: -//SEG10 main +//SEG13 main main: { - .label _15 = $2e + .label _16 = $2d .label src = 2 .label dst = 4 .label i = 6 - .label center_x = $33 - .label center_y = $34 - .label center_dist = $35 - .label _24 = $2b - .label _25 = $2c - .label _26 = $2d - //SEG11 [5] call initSquareTables - //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] + .label center_x = $32 + .label center_y = $33 + .label center_dist = $34 + .label _25 = $2a + .label _26 = $2b + .label _27 = $2c + //SEG14 [7] call initSquareTables + //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG14 [6] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN_COPY sta dst+1 - //SEG15 [6] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 jmp b1 // Copy screen to screen copy - //SEG16 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG17 [6] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG18 [6] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG19 main::@1 + //SEG22 main::@1 b1: - //SEG20 [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG21 [8] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG22 [9] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG23 [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda src+1 cmp #>SCREEN+$3e8 bne b1_from_b1 lda src cmp #main::@2] + //SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Init processing array - //SEG26 [11] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG27 [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG28 main::@2 + //SEG31 main::@2 b2: - //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _24 - //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _24 - clc - adc i sta _25 - //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda _25 - asl - asl - sta _26 - //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _26 clc adc i - sta _15 - //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 - lda _15 + sta _26 + //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _26 + asl + asl + sta _27 + //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _27 + clc + adc i + sta _16 + //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _16 ldx #0 tay txa sta PROCESSING,y - //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 - lda _15 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y - //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 - lda _15 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y - //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 - lda _15 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + lda _16 ldx #0 tay txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y - //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 - ldy _15 + ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 - ldy _15 + ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_FREE - ldy _15 + ldy _16 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 - ldy _15 + //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2 + ldy _16 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda #>0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y - //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG42 [25] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b2 - //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG44 main::@3 + //SEG47 main::@3 b3: - //SEG45 [27] call initSprites - //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG48 [29] call initSprites + //SEG49 [143] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] - b7_from_b3: - jmp b7 - //SEG48 main::@7 - b7: - //SEG49 [29] call setupRasterIrq + //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + b8_from_b3: + jmp b8 + //SEG51 main::@8 + b8: + //SEG52 [31] call setupRasterIrq jsr setupRasterIrq - //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b4_from_b5: - b4_from_b7: + b4_from_b8: jmp b4 // Main loop - //SEG51 main::@4 + //SEG54 main::@4 b4: - //SEG52 [31] call getCharToProcess - //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG55 [33] call getCharToProcess + //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 + //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 lda getCharToProcess.return_x_1 sta getCharToProcess.return_x - //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 + //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 lda getCharToProcess.return_y_1 sta getCharToProcess.return_y - //SEG56 [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda getCharToProcess.return_dist_1 sta getCharToProcess.return_dist lda getCharToProcess.return_dist_1+1 sta getCharToProcess.return_dist+1 - jmp b8 - //SEG57 main::@8 - b8: - //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 + jmp b9 + //SEG60 main::@9 + b9: + //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 lda getCharToProcess.return_x sta center_x - //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 + //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 lda getCharToProcess.return_y sta center_y - //SEG60 [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 + //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 lda getCharToProcess.return_dist sta center_dist lda getCharToProcess.return_dist+1 sta center_dist+1 - //SEG61 [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 @@ -4225,162 +4351,164 @@ main: { cmp #startProcessing] + //SEG72 [45] call startProcessing + //SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG69 startProcessing +//SEG74 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($37) center_x, byte zeropage($38) center_y) +// startProcessing(byte zeropage($36) center_x, byte zeropage($37) center_y) startProcessing: { - .label _0 = $3d - .label _1 = $43 - .label _2 = $45 - .label _4 = $49 - .label _5 = $4b - .label _7 = $4e - .label _8 = $50 - .label _10 = $52 - .label _11 = $54 - .label _12 = $56 - .label _14 = $5a - .label _15 = $5c - .label _16 = $5e - .label _22 = $63 - .label _23 = $64 - .label _24 = $65 - .label _25 = $66 - .label _33 = $3c - .label _34 = $6b - .label center_x = $37 - .label center_y = $38 + .label _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 i = 8 - .label screenPtr = $47 + .label screenPtr = $46 .label spriteData = $b - .label ch = $4d + .label ch = $4c .label chargenData = 9 .label i1 = $d - .label spriteX = $58 - .label spriteY = $60 - .label spritePtr = $62 + .label spriteX = $57 + .label spriteY = $5f + .label spritePtr = $61 .label freeIdx = 8 .label freeIdx_6 = 7 - .label _44 = $39 - .label _45 = $3a - .label _46 = $3b - .label _48 = $3f - .label _49 = $41 - .label _51 = $68 - .label _52 = $69 - .label _53 = $6a + .label _38 = $38 + .label _39 = $39 + .label _40 = $3a + .label _42 = $3e + .label _43 = $40 + .label _45 = $62 + .label _46 = $63 + .label _47 = $64 .label freeIdx_7 = 7 - //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx_6 jmp b1 - //SEG72 startProcessing::@1 + //SEG77 startProcessing::@1 b1: - //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG77 startProcessing::@2 + //SEG82 startProcessing::@2 b2: - //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _44 - //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _44 + sta _38 + //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _38 clc adc i - sta _45 - //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _45 + sta _39 + //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _39 asl asl - sta _46 - //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _46 + sta _40 + //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _40 clc adc i - sta _33 - //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + 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 lda #STATUS_FREE - ldy _33 + ldy _27 cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 - //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG85 startProcessing::@4 + //SEG90 startProcessing::@4 b4: - //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG87 startProcessing::@5 + //SEG92 startProcessing::@5 b5: - //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _48 + sta _42 lda _0+1 rol - sta _48+1 - asl _48 - rol _48+1 - //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3 - lda _48 + 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 clc adc _0 - sta _49 - lda _48+1 + sta _43 + lda _42+1 adc _0+1 - sta _49+1 - //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _49 + sta _43+1 + //SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$43 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _43 asl sta _1 - lda _49+1 + lda _43+1 rol sta _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2 + //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2 lda _1 clc adc #SCREEN sta _2+1 - //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -4396,12 +4524,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6 + //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6 lda _4 asl sta _5 @@ -4418,7 +4546,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2 + //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2 lda _5 clc adc #SPRITE_DATA sta spriteData+1 - //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3 ldy center_x lda (_2),y sta ch - //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 + //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 lda ch sta _7 lda #0 sta _7+1 - //SEG99 [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _7 asl sta _8 @@ -4446,7 +4574,7 @@ startProcessing: { rol _8+1 asl _8 rol _8+1 - //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2 + //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2 lda _8 clc adc #CHARGEN sta chargenData+1 - //SEG101 asm { sei } + //SEG106 asm { sei } sei - //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 + //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG111 startProcessing::@6 + //SEG116 startProcessing::@6 b6: - //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -4488,31 +4616,31 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 + //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG116 [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 bne b6_from_b6 jmp b7 - //SEG117 startProcessing::@7 + //SEG122 startProcessing::@7 b7: - //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG119 asm { cli } + //SEG124 asm { cli } cli - //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG121 [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _10 asl sta _11 @@ -4523,7 +4651,7 @@ startProcessing: { rol _11+1 asl _11 rol _11+1 - //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 + //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_XPOS_LEFT clc adc _11 @@ -4531,7 +4659,7 @@ startProcessing: { lda #0 adc _11+1 sta _12+1 - //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 + //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda _12 asl sta spriteX @@ -4544,12 +4672,12 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG125 [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda _14 asl sta _15 @@ -4560,7 +4688,7 @@ startProcessing: { rol _15+1 asl _15 rol _15+1 - //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2 + //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_YPOS_TOP clc adc _15 @@ -4568,7 +4696,7 @@ startProcessing: { lda #0 adc _15+1 sta _16+1 - //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4 + //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda _16 asl sta spriteY @@ -4581,135 +4709,113 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG128 [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsz1=vbsz2_rol_1 + //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda freeIdx asl - sta _22 - //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsz1=vbsz2_minus_vbsc1 - lax _22 - axs #8 - stx _23 - //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsz1=_neg_vbsz2 - lda _23 - eor #$ff - clc - adc #1 - sta _24 - //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsz2 - lda _24 - sta _25 - ora #$7f - bmi !+ - lda #0 - !: - sta _25+1 - //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda freeIdx - asl - sta _51 - //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _51 + sta _45 + //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _45 clc adc freeIdx - sta _52 - //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _52 + sta _46 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _46 asl asl - sta _53 - //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 - lda _53 + sta _47 + //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + lda _47 clc adc freeIdx - sta _34 - //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _34 + 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 lda spriteX sta PROCESSING,y lda spriteX+1 sta PROCESSING+1,y - //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _34 + //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 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y - //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _34 - lda _25 + //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 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y - lda _25+1 - sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y - //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuz1=vwuc2 - ldy _34 - lda #<-$10 + //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 + ldx #$3c + tay + txa sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y - lda #>-$10 - sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,y - //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //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 lda freeIdx - ldy _34 + ldy _28 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //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 lda spritePtr - ldy _34 + ldy _28 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //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 lda #STATUS_NEW - ldy _34 + ldy _28 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2 - ldy _34 + //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 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y jmp breturn - //SEG145 startProcessing::@return + //SEG146 startProcessing::@return breturn: - //SEG146 [101] return + //SEG147 [100] return rts - //SEG147 startProcessing::@8 + //SEG148 startProcessing::@8 b8: - //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda freeIdx sta freeIdx_7 - //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG150 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG151 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG151 startProcessing::@3 + //SEG152 startProcessing::@3 b3: - //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG153 [104] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG154 [103] 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 - //SEG154 startProcessing::@9 + //SEG155 startProcessing::@9 b9: - //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda freeIdx_6 sta freeIdx jmp b4_from_b9 } -//SEG156 getCharToProcess +//SEG157 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 = $6e - .label _10 = $74 - .label _11 = $76 - .label _13 = $6c - .label _14 = $6d - .label return_x = $2f - .label return_y = $30 - .label return_dist = $31 + .label _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 x = $11 .label dist = $16 .label screen_line = $e @@ -4720,64 +4826,64 @@ getCharToProcess: { .label closest_dist = $12 .label closest_x = $14 .label closest_y = $15 - .label _15 = $70 - .label _16 = $72 + .label _15 = $6a + .label _16 = $6c .label return_dist_5 = $16 .label return_dist_6 = $16 .label return_x_7 = $14 .label return_y_7 = $15 - //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG158 [106] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG159 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG160 [107] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG161 [106] 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 - //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG162 [107] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG163 [106] 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 - //SEG163 getCharToProcess::@1 + //SEG164 getCharToProcess::@1 b1: - //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG165 [107] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //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 lda #0 sta x jmp b2 - //SEG169 getCharToProcess::@2 + //SEG170 getCharToProcess::@2 b2: - //SEG170 [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG171 [108] 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 - //SEG171 getCharToProcess::@4 + //SEG172 getCharToProcess::@4 b4: - //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _13 - //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _14 - //SEG174 [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 + //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 ldx _13 ldy _14 lda SQUARES_X,x @@ -4787,7 +4893,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG175 [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG176 [112] 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 !+ @@ -4797,34 +4903,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG176 getCharToProcess::@5 + //SEG177 getCharToProcess::@5 b5: - //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x_7 - //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y_7 - //SEG179 [116] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG180 [115] 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: - //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG182 [116] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //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 jmp b3 - //SEG183 getCharToProcess::@3 + //SEG184 getCharToProcess::@3 b3: - //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG186 getCharToProcess::@6 + //SEG187 getCharToProcess::@6 b6: - //SEG187 [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG188 [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -4832,16 +4938,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG190 getCharToProcess::@7 + //SEG191 getCharToProcess::@7 b7: - //SEG191 [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG192 [121] 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 - //SEG198 [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG199 [127] *((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 - //SEG199 getCharToProcess::@return + //SEG200 getCharToProcess::@return breturn: - //SEG200 [129] return + //SEG201 [128] return rts - //SEG201 getCharToProcess::@9 + //SEG202 getCharToProcess::@9 b9: - //SEG202 [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG203 [129] (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 - //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG204 [106] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //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 jmp b1 - //SEG209 getCharToProcess::@10 + //SEG210 getCharToProcess::@10 b10: - //SEG210 [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG211 [130] (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 - //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG212 [107] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //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 jmp b2 - //SEG216 getCharToProcess::@12 + //SEG217 getCharToProcess::@12 b12: - //SEG217 [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG218 [131] (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 - //SEG218 getCharToProcess::@11 + //SEG219 getCharToProcess::@11 b11: - //SEG219 [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [132] (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 } -//SEG220 setupRasterIrq +//SEG221 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG221 asm { sei } + //SEG222 asm { sei } sei - //SEG222 [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG223 [134] *((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 - //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG224 [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG225 setupRasterIrq::@1 + //SEG226 setupRasterIrq::@1 b1: - //SEG226 [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG227 [137] *((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 - //SEG227 setupRasterIrq::@2 + //SEG228 setupRasterIrq::@2 b2: - //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG231 asm { cli } + //SEG232 asm { cli } cli jmp breturn - //SEG232 setupRasterIrq::@return + //SEG233 setupRasterIrq::@return breturn: - //SEG233 [143] return + //SEG234 [142] return rts } -//SEG234 initSprites +//SEG235 initSprites // Initialize sprites initSprites: { .label sp = $18 .label i = $1a - //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG236 [144] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG236 [145] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG237 [144] 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 - //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG238 [144] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG239 [144] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG239 initSprites::@1 + //SEG240 initSprites::@1 b1: - //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG242 [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //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 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -5035,281 +5141,281 @@ initSprites: { cmp #initSprites::@2] + //SEG244 [148] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 + //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Initialize sprite registers - //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG246 [148] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG247 [148] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG247 initSprites::@2 + //SEG248 initSprites::@2 b2: - //SEG248 [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG249 [149] *((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 - //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG250 [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG251 [151] 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 - //SEG251 initSprites::@3 + //SEG252 initSprites::@3 b3: - //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG255 initSprites::@return + //SEG256 initSprites::@return breturn: - //SEG256 [156] return + //SEG257 [155] return rts } -//SEG257 initSquareTables +//SEG258 initSquareTables // initialize SQUARES table initSquareTables: { .label _2 = $1c .label _4 = $1c - .label _6 = $7a + .label _6 = $74 .label _10 = $1e .label _12 = $1e - .label _14 = $7f - .label _16 = $7c - .label _17 = $81 + .label _14 = $79 + .label _16 = $76 + .label _17 = $7b .label x_dist = $1c .label x = $1b .label y_dist = $1e .label y = $1d - //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG259 [157] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG260 [157] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG261 [157] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG262 [157] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG262 initSquareTables::@1 + //SEG263 initSquareTables::@1 b1: - //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG264 initSquareTables::@3 + //SEG265 initSquareTables::@3 b3: - //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 + //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 lax x axs #$14 stx _2 - //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG267 [160] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG268 [160] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG268 initSquareTables::@4 + //SEG269 initSquareTables::@4 b4: - //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.a - //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG271 [162] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.b - //SEG271 [164] call mul8u - //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG272 [163] call mul8u + //SEG273 [186] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG274 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 + //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 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG275 [165] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG276 [164] (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 - //SEG276 initSquareTables::@9 + //SEG277 initSquareTables::@9 b9: - //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG278 [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _6 lda mul8u.return+1 sta _6+1 - //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG279 [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _16 - //SEG279 [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG280 [167] *((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 - //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG283 [170] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG284 [170] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG285 [170] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG286 [170] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG286 initSquareTables::@5 + //SEG287 initSquareTables::@5 b5: - //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG288 initSquareTables::@7 + //SEG289 initSquareTables::@7 b7: - //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 + //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 lax y axs #$c stx _10 - //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG291 [173] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG292 [173] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG292 initSquareTables::@8 + //SEG293 initSquareTables::@8 b8: - //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.a - //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG295 [175] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.b_1 - //SEG295 [177] call mul8u - //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG296 [176] call mul8u + //SEG297 [186] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG298 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 + //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 lda mul8u.b_1 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG299 [178] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG300 [177] (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 - //SEG300 initSquareTables::@10 + //SEG301 initSquareTables::@10 b10: - //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG302 [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _14 lda mul8u.return_3+1 sta _14+1 - //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG303 [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _17 - //SEG303 [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG304 [180] *((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 - //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG305 [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG306 [182] 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 - //SEG306 initSquareTables::@return + //SEG307 initSquareTables::@return breturn: - //SEG307 [184] return + //SEG308 [183] return rts - //SEG308 initSquareTables::@6 + //SEG309 initSquareTables::@6 b6: - //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c sec sbc y sta _12 jmp b8_from_b6 - //SEG310 initSquareTables::@2 + //SEG311 initSquareTables::@2 b2: - //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$14 sec sbc x sta _4 jmp b4_from_b2 } -//SEG312 mul8u +//SEG313 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 = $82 + .label _1 = $7c .label mb = $24 .label a = $21 .label res = $22 .label b = $20 - .label return = $78 + .label return = $72 .label b_1 = $1f - .label return_3 = $7d - //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label return_3 = $77 + //SEG314 [187] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //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 lda #0 sta res lda #0 sta res+1 - //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG317 mul8u::@1 + //SEG318 mul8u::@1 b1: - //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG319 mul8u::@return + //SEG320 mul8u::@return breturn: - //SEG320 [190] return + //SEG321 [189] return rts - //SEG321 mul8u::@2 + //SEG322 mul8u::@2 b2: - //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG324 mul8u::@4 + //SEG325 mul8u::@4 b4: - //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5317,90 +5423,80 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG327 [193] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG328 [193] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG328 mul8u::@3 + //SEG329 mul8u::@3 b3: - //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG332 [187] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //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 jmp b1 } -//SEG335 irqBottom +//SEG336 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { .label i = $26 - //SEG336 entry interrupt(HARDWARE_ALL) + //SEG337 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG338 [197] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 + //SEG339 [197] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG340 [197] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG341 [197] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG341 irqBottom::@1 + //SEG342 irqBottom::@1 b1: - //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 + //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG344 [199] 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] + b2_from_b1: jmp b2 - //SEG344 irqBottom::@2 + //SEG346 irqBottom::@2 b2: - //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BGCOL - //SEG347 [203] call processChars - //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [201] call processChars + //SEG348 [206] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 //SEG349 irqBottom::@3 b3: - //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG352 [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG355 irqBottom::@return + //SEG353 irqBottom::@return breturn: - //SEG356 [209] return - exit interrupt(HARDWARE_ALL) + //SEG354 [205] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5409,70 +5505,73 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG355 processChars // Process any chars in the PROCESSING array processChars: { - .label _1 = $93 - .label _12 = $8c - .label _13 = $8d - .label _15 = $8f - .label _16 = $8e - .label _17 = $90 - .label _18 = $92 - .label _22 = $94 - .label _24 = $86 - .label processing = $87 - .label bitmask = $89 + .label _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 i = $27 - .label xpos = $8a - .label numActive = $28 - .label _44 = $83 - .label _45 = $84 - .label _46 = $85 - //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .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] b1_from_processChars: - //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 - lda #0 - sta numActive - //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG357 [207] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG358 [207] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG359 [207] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy jmp b1 - //SEG364 processChars::@1 + //SEG360 processChars::@1 b1: - //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl - sta _44 - //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _44 + sta _64 + //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _64 clc adc i - sta _45 - //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda _45 + sta _65 + //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda _65 asl asl - sta _46 - //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda _46 + sta _66 + //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _66 clc adc i - sta _24 - //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuz2 - lda _24 + sta _36 + //SEG365 [212] (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 - //SEG370 [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -5485,23 +5584,23 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE - beq b2_from_b1 - jmp b10 - //SEG372 processChars::@10 - b10: - //SEG373 [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 - jmp b11 - //SEG374 processChars::@11 - b11: - //SEG375 [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + 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 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -5513,12 +5612,12 @@ processChars: { txa !: sta $ffff - //SEG376 [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //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 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -5528,15 +5627,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y jmp b3 - //SEG379 processChars::@3 + //SEG375 processChars::@3 b3: - //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -5551,62 +5650,62 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 + //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2 lda xpos+1 - sta _12 - //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 + sta _10 + //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1 // Set sprite position lda #0 - cmp _12 + cmp _10 bne b4 - jmp b8 - //SEG383 processChars::@8 - b8: - //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + jmp b7 + //SEG379 processChars::@7 + b7: + //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask - sta _13 - //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _11 + //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB - and _13 + and _11 sta SPRITES_XMSB jmp b5 - //SEG386 processChars::@5 + //SEG382 processChars::@5 b5: - //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _16 - //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 + //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2 lda xpos - sta _15 - //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _15 + sta _13 + //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _13 ldy _16 sta SPRITES_XPOS,y - //SEG390 [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _17 + sta _14 iny lda (processing),y - sta _17+1 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuz1=_byte_vwuz2 - lda _17 - sta _18 - //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _18 + 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 ypos + //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda ypos ldy _16 sta SPRITES_YPOS,y - //SEG393 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG389 [231] 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 @@ -5619,24 +5718,93 @@ processChars: { bcc b6 !: jmp b13 - //SEG394 processChars::@13 + //SEG390 processChars::@13 b13: - //SEG395 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG391 [232] 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 + bcc b6 + bne !+ + dey + lda #YPOS_UPMOST + cmp #>YPOS_TOPMOST bcc b6 bne !+ dey lda (processing),y - cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + iny + lda #>YPOS_BOTTOMMOST + cmp (processing),y + bcc b6 + bne !+ + dey + lda #> (byte) 3 -- vwuz1=vwuz2_ror_3 + lda xpos+1 + lsr + sta _24+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 + axs #BORDER_XPOS_LEFT/8 + stx xchar + //SEG400 [238] (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 + ldx _37 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX + lda (processing),y + clc + adc VXSIN,x + sta _28 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -5650,7 +5818,39 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [242] (byte~) processChars::$30 ← (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 + axs #BORDER_YPOS_TOP/8 + stx ychar + //SEG406 [244] (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 + ldx _38 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY + lda (processing),y + clc + adc VYSIN,x + sta _33 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -5662,144 +5862,112 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - jmp b7 - //SEG399 processChars::@7 - b7: - //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 - inc numActive - //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - b2_from_b1: - b2_from_b7: - //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG403 processChars::@2 + //SEG410 processChars::@2 b2: - //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG405 [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG412 [249] 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 - //SEG406 processChars::@12 - b12: - //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2 - lax numActive - axs #-['0'] - stx _1 - //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1 - lda _1 - sta SCREEN+$3e7 jmp breturn - //SEG409 processChars::@return + //SEG413 processChars::@return breturn: - //SEG410 [245] return + //SEG414 [250] return rts - //SEG411 processChars::@6 + //SEG415 processChars::@6 b6: - //SEG412 [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG416 [251] *((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 - //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor bitmask - sta _22 - //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + sta _34 + //SEG418 [253] *((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 _22 + and _34 sta SPRITES_ENABLE - jmp b7 - //SEG415 processChars::@4 + jmp b2 + //SEG419 processChars::@4 b4: - //SEG416 [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG420 [254] *((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 } -//SEG417 irqTop +//SEG421 irqTop // Raster Interrupt at the top of the screen irqTop: { - .label i = $29 - .label i1 = $2a - //SEG418 entry interrupt(HARDWARE_ALL) + .label i = $28 + .label i1 = $29 + //SEG422 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG423 [256] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 + //SEG424 [256] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG425 [256] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG426 [256] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG423 irqTop::@1 + //SEG427 irqTop::@1 b1: - //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 + //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 - jmp b2 - //SEG426 irqTop::@2 - b2: - //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BGCOL - //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] - b3_from_b2: - //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuz1=vbuc1 + //SEG430 [259] 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 lda #0 sta i1 - jmp b3 - //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] - b3_from_b3: - //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy - jmp b3 - //SEG433 irqTop::@3 - b3: - //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 + jmp b2 + //*BORDERCOL = WHITE; + //*BGCOL = WHITE; + //SEG432 [259] 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 + jmp b2 + //SEG434 irqTop::@2 + b2: + //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 - bne b3_from_b3 - jmp b4 - //SEG436 irqTop::@4 - b4: - //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG439 [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + bne b2_from_b2 + jmp b3 + //SEG437 irqTop::@3 + b3: + //SEG438 [262] *((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 - //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG441 [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG442 irqTop::@return + //SEG441 irqTop::@return breturn: - //SEG443 [264] return - exit interrupt(HARDWARE_ALL) + //SEG442 [265] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5816,348 +5984,358 @@ irqTop: { SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt PROCESSING: .fill $d*NUM_PROCESSING, 0 +.pc = VXSIN "VXSIN" + .for(var i=0; i<40; i++) { + .word -sin(toRadians([i*360]/40))*4 + } + +.pc = VYSIN "VYSIN" + .for(var i=0; i<25; i++) { + .word -sin(toRadians([i*360]/25))*4 + } + REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$24 ] ( main:2 [ main::i#2 main::$24 ] ) always clobbers reg byte a +Statement [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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Statement [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 [ main::i#2 main::$25 ] ( main:2 [ main::i#2 main::$25 ] ) always clobbers reg byte a -Statement [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 [ main::i#2 main::$26 ] ( main:2 [ main::i#2 main::$26 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ main::$15 ] -Statement [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] -Statement [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ main::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ main::center_y#0 ] -Statement [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a -Statement [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a +Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a +Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ main::$16 ] +Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a +Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ getCharToProcess::return_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ 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 ] +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 ] 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 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a -Statement [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ) always clobbers reg byte a -Statement [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ) always clobbers reg byte a -Statement [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a -Statement [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a -Statement [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -Statement [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ] +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 [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 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a +Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a +Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a +Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a +Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a +Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a +Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE: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:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] -Statement [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Statement [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ) always clobbers reg byte a -Statement [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ) always clobbers reg byte a -Statement [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ) always clobbers reg byte a -Statement [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ) always clobbers reg byte a -Statement [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ) always clobbers reg byte a -Statement [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Statement [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:107 [ startProcessing::$34 ] -Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:42 [ ] ) always clobbers reg byte a -Statement [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a +Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [88] (byte) startProcessing::$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 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 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ getCharToProcess::$13 ] -Statement [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a -Statement [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [146] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:27 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:27 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:27 [ initSprites::i#2 ] ) always clobbers reg byte a +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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] -Statement [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [165] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Statement [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [178] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Statement [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:177 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [209] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ) always clobbers reg byte a +Statement [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 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ) always clobbers reg byte a -Statement [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ) always clobbers reg byte a -Statement [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a -Statement [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +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 y as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:137 [ processChars::bitmask#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:137 [ processChars::bitmask#0 ] -Statement [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +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 x as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:137 [ processChars::bitmask#0 ] -Statement [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:142 [ processChars::$16 ] -Statement [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:142 [ processChars::$16 ] -Statement [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a -Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a -Statement [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a -Statement [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [264] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$24 ] ( main:2 [ main::i#2 main::$24 ] ) always clobbers reg byte a -Statement [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 [ main::i#2 main::$25 ] ( main:2 [ main::i#2 main::$25 ] ) always clobbers reg byte a -Statement [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 [ main::i#2 main::$26 ] ( main:2 [ main::i#2 main::$26 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$15 ] ( main:2 [ main::i#2 main::$15 ] ) always clobbers reg byte a -Statement [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a -Statement [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Statement [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:2 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a -Statement [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$44 ] ) always clobbers reg byte a -Statement [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$45 ] ) always clobbers reg byte a -Statement [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$46 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$33 ] ) always clobbers reg byte a -Statement [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$48 ] ) always clobbers reg byte a -Statement [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$49 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a -Statement [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a -Statement [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a -Statement [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -Statement [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:2::startProcessing:42 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a -Statement [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:2::startProcessing:42 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a -Statement [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$24 ] ) always clobbers reg byte a -Statement [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 ] ) always clobbers reg byte a -Statement [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$51 ] ) always clobbers reg byte a -Statement [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$52 ] ) always clobbers reg byte a -Statement [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$53 ] ) always clobbers reg byte a -Statement [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Statement [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$25 startProcessing::$34 ] ) always clobbers reg byte a -Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$34 ] ( main:2::startProcessing:42 [ startProcessing::screenPtr#0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:2::startProcessing:42 [ ] ) always clobbers reg byte a -Statement [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a -Statement [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a -Statement [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a -Statement [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a -Statement [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a -Statement [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a -Statement [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a -Statement [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:2::getCharToProcess:31 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a -Statement [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a -Statement [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:2::getCharToProcess:31 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a -Statement [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:29 [ ] ) always clobbers reg byte a -Statement [146] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:2::initSprites:27 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:2::initSprites:27 [ initSprites::sp#1 ] ) always clobbers reg byte a -Statement [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:2::initSprites:27 [ initSprites::i#2 ] ) always clobbers reg byte a -Statement [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:2::initSprites:27 [ ] ) always clobbers reg byte a -Statement [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a -Statement [165] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a -Statement [178] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Statement [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:5 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:5 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::initSquareTables:5::mul8u:177 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:5::mul8u:164 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:5::mul8u:177 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [209] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$44 ] ) always clobbers reg byte a -Statement [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$45 ] ) always clobbers reg byte a -Statement [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$46 ] ) always clobbers reg byte a -Statement [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$24 ] ) always clobbers reg byte a -Statement [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a -Statement [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a -Statement [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$16 ] ) always clobbers reg byte a -Statement [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$15 ] ) always clobbers reg byte a -Statement [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$17 ] ) always clobbers reg byte a reg byte y -Statement [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::$16 processChars::$18 ] ) always clobbers reg byte a -Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a -Statement [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$22 ] ) always clobbers reg byte a -Statement [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [264] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +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 +Statement [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:4 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:4 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a +Statement [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$25 ] ( main:4 [ main::i#2 main::$25 ] ) always clobbers reg byte a +Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a +Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a +Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a +Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Statement [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Statement [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a +Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a +Statement [49] (byte) startProcessing::$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 [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 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a +Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a +Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a +Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a +Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y +Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a +Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a +Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a +Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a +Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a +Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a +Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a +Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a +Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a +Statement [88] (byte) startProcessing::$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 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 , @@ -6186,91 +6364,94 @@ 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 [ 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::$24 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ main::$25 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ main::$26 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ main::$15 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:49 , -Potential registers zp ZP_BYTE:51 [ main::center_x#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ main::center_y#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:53 [ main::center_dist#0 ] : zp ZP_WORD:53 , -Potential registers zp ZP_BYTE:55 [ startProcessing::center_x#0 ] : zp ZP_BYTE:55 , reg byte x , -Potential registers zp ZP_BYTE:56 [ startProcessing::center_y#0 ] : zp ZP_BYTE:56 , reg byte x , -Potential registers zp ZP_BYTE:57 [ startProcessing::$44 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ startProcessing::$45 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ startProcessing::$46 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:60 [ startProcessing::$33 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:61 [ startProcessing::$0 ] : zp ZP_WORD:61 , -Potential registers zp ZP_WORD:63 [ startProcessing::$48 ] : zp ZP_WORD:63 , -Potential registers zp ZP_WORD:65 [ startProcessing::$49 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ startProcessing::$1 ] : zp ZP_WORD:67 , -Potential registers zp ZP_WORD:69 [ startProcessing::$2 ] : zp ZP_WORD:69 , -Potential registers zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:71 , -Potential registers zp ZP_WORD:73 [ startProcessing::$4 ] : zp ZP_WORD:73 , -Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 , -Potential registers zp ZP_BYTE:77 [ startProcessing::ch#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:78 [ startProcessing::$7 ] : zp ZP_WORD:78 , -Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 , -Potential registers zp ZP_WORD:82 [ startProcessing::$10 ] : zp ZP_WORD:82 , -Potential registers zp ZP_WORD:84 [ startProcessing::$11 ] : zp ZP_WORD:84 , -Potential registers zp ZP_WORD:86 [ startProcessing::$12 ] : zp ZP_WORD:86 , -Potential registers zp ZP_WORD:88 [ startProcessing::spriteX#0 ] : zp ZP_WORD:88 , -Potential registers zp ZP_WORD:90 [ startProcessing::$14 ] : zp ZP_WORD:90 , -Potential registers zp ZP_WORD:92 [ startProcessing::$15 ] : zp ZP_WORD:92 , -Potential registers zp ZP_WORD:94 [ startProcessing::$16 ] : zp ZP_WORD:94 , -Potential registers zp ZP_WORD:96 [ startProcessing::spriteY#0 ] : zp ZP_WORD:96 , -Potential registers zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ startProcessing::$22 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ startProcessing::$23 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ startProcessing::$24 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:102 [ startProcessing::$25 ] : zp ZP_WORD:102 , -Potential registers zp ZP_BYTE:104 [ startProcessing::$51 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ startProcessing::$52 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ startProcessing::$53 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ startProcessing::$34 ] : zp ZP_BYTE:107 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ getCharToProcess::$13 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ getCharToProcess::$14 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:110 [ getCharToProcess::$9 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ getCharToProcess::$15 ] : zp ZP_WORD:112 , -Potential registers zp ZP_WORD:114 [ getCharToProcess::$16 ] : zp ZP_WORD:114 , -Potential registers zp ZP_WORD:116 [ getCharToProcess::$10 ] : zp ZP_WORD:116 , -Potential registers zp ZP_WORD:118 [ getCharToProcess::$11 ] : zp ZP_WORD:118 , -Potential registers zp ZP_WORD:120 [ mul8u::return#2 ] : zp ZP_WORD:120 , -Potential registers zp ZP_WORD:122 [ initSquareTables::$6 ] : zp ZP_WORD:122 , -Potential registers zp ZP_BYTE:124 [ initSquareTables::$16 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:125 [ mul8u::return#3 ] : zp ZP_WORD:125 , -Potential registers zp ZP_WORD:127 [ initSquareTables::$14 ] : zp ZP_WORD:127 , -Potential registers zp ZP_BYTE:129 [ initSquareTables::$17 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ mul8u::$1 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ processChars::$44 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ processChars::$45 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:133 [ processChars::$46 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:134 [ processChars::$24 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:135 [ processChars::processing#0 ] : zp ZP_WORD:135 , -Potential registers zp ZP_BYTE:137 [ processChars::bitmask#0 ] : zp ZP_BYTE:137 , -Potential registers zp ZP_WORD:138 [ processChars::xpos#0 ] : zp ZP_WORD:138 , -Potential registers zp ZP_BYTE:140 [ processChars::$12 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:141 [ processChars::$13 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:142 [ processChars::$16 ] : zp ZP_BYTE:142 , reg byte x , -Potential registers zp ZP_BYTE:143 [ processChars::$15 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:144 [ processChars::$17 ] : zp ZP_WORD:144 , -Potential registers zp ZP_BYTE:146 [ processChars::$18 ] : zp ZP_BYTE:146 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:147 [ processChars::$1 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:148 [ processChars::$22 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y , +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 , 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:109 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:108 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:112 [ getCharToProcess::$15 ] 4: zp ZP_WORD:114 [ getCharToProcess::$16 ] 4: zp ZP_WORD:116 [ getCharToProcess::$10 ] 4: zp ZP_WORD:118 [ getCharToProcess::$11 ] 3: zp ZP_WORD:110 [ getCharToProcess::$9 ] -Uplift Scope [startProcessing] 2,733.07: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$44 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$45 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$46 ] 2,002: zp ZP_BYTE:60 [ startProcessing::$33 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:63 [ startProcessing::$48 ] 4: zp ZP_WORD:65 [ startProcessing::$49 ] 4: zp ZP_WORD:67 [ startProcessing::$1 ] 4: zp ZP_WORD:73 [ startProcessing::$4 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:78 [ startProcessing::$7 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$10 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:90 [ startProcessing::$14 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_BYTE:99 [ startProcessing::$22 ] 4: zp ZP_BYTE:100 [ startProcessing::$23 ] 4: zp ZP_BYTE:104 [ startProcessing::$51 ] 4: zp ZP_BYTE:105 [ startProcessing::$52 ] 4: zp ZP_BYTE:106 [ startProcessing::$53 ] 3: zp ZP_WORD:61 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:107 [ startProcessing::$34 ] 2: zp ZP_BYTE:77 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:101 [ startProcessing::$24 ] 1.2: zp ZP_WORD:69 [ startProcessing::$2 ] 0.57: zp ZP_WORD:102 [ startProcessing::$25 ] 0.38: zp ZP_BYTE:55 [ startProcessing::center_x#0 ] 0.36: zp ZP_WORD:96 [ startProcessing::spriteY#0 ] 0.29: zp ZP_WORD:88 [ startProcessing::spriteX#0 ] 0.29: zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:56 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] -Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:130 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:120 [ mul8u::return#2 ] 22: zp ZP_WORD:125 [ mul8u::return#3 ] -Uplift Scope [processChars] 34.7: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:131 [ processChars::$44 ] 22: zp ZP_BYTE:132 [ processChars::$45 ] 22: zp ZP_BYTE:133 [ processChars::$46 ] 22: zp ZP_BYTE:134 [ processChars::$24 ] 22: zp ZP_BYTE:140 [ processChars::$12 ] 22: zp ZP_BYTE:141 [ processChars::$13 ] 22: zp ZP_BYTE:143 [ processChars::$15 ] 22: zp ZP_BYTE:146 [ processChars::$18 ] 22: zp ZP_BYTE:148 [ processChars::$22 ] 18.44: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:144 [ processChars::$17 ] 6.6: zp ZP_BYTE:142 [ processChars::$16 ] 4: zp ZP_BYTE:147 [ processChars::$1 ] 3.14: zp ZP_WORD:138 [ processChars::xpos#0 ] 2.5: zp ZP_BYTE:137 [ processChars::bitmask#0 ] 0.48: zp ZP_WORD:135 [ processChars::processing#0 ] -Uplift Scope [initSquareTables] 66: zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:124 [ initSquareTables::$16 ] 22: zp ZP_BYTE:129 [ initSquareTables::$17 ] 11: zp ZP_WORD:122 [ initSquareTables::$6 ] 11: zp ZP_WORD:127 [ initSquareTables::$14 ] -Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$24 ] 22: zp ZP_BYTE:44 [ main::$25 ] 22: zp ZP_BYTE:45 [ main::$26 ] 22: zp ZP_WORD:53 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:46 [ main::$15 ] 5.5: zp ZP_BYTE:51 [ main::center_x#0 ] 5.5: zp ZP_BYTE:52 [ main::center_y#0 ] -Uplift Scope [irqTop] 38.5: zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] +Uplift Scope [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 [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] @@ -6278,127 +6459,130 @@ Uplift Scope [ProcessingSprite] Uplift Scope [setupRasterIrq] Uplift Scope [] -Uplifting [getCharToProcess] best 288122 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:108 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:112 [ getCharToProcess::$15 ] zp ZP_WORD:114 [ getCharToProcess::$16 ] zp ZP_WORD:116 [ getCharToProcess::$10 ] zp ZP_WORD:118 [ getCharToProcess::$11 ] zp ZP_WORD:110 [ getCharToProcess::$9 ] +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 ] Limited combination testing to 100 combinations of 8748 possible. -Uplifting [startProcessing] best 270122 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$44 ] reg byte a [ startProcessing::$45 ] reg byte a [ startProcessing::$46 ] zp ZP_BYTE:60 [ startProcessing::$33 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:63 [ startProcessing::$48 ] zp ZP_WORD:65 [ startProcessing::$49 ] zp ZP_WORD:67 [ startProcessing::$1 ] zp ZP_WORD:73 [ startProcessing::$4 ] zp ZP_WORD:75 [ startProcessing::$5 ] zp ZP_WORD:78 [ startProcessing::$7 ] zp ZP_WORD:80 [ startProcessing::$8 ] zp ZP_WORD:82 [ startProcessing::$10 ] zp ZP_WORD:84 [ startProcessing::$11 ] zp ZP_WORD:86 [ startProcessing::$12 ] zp ZP_WORD:90 [ startProcessing::$14 ] zp ZP_WORD:92 [ startProcessing::$15 ] zp ZP_WORD:94 [ startProcessing::$16 ] zp ZP_BYTE:99 [ startProcessing::$22 ] zp ZP_BYTE:100 [ startProcessing::$23 ] zp ZP_BYTE:104 [ startProcessing::$51 ] zp ZP_BYTE:105 [ startProcessing::$52 ] zp ZP_BYTE:106 [ startProcessing::$53 ] zp ZP_WORD:61 [ startProcessing::$0 ] zp ZP_BYTE:107 [ startProcessing::$34 ] zp ZP_BYTE:77 [ startProcessing::ch#0 ] zp ZP_BYTE:101 [ startProcessing::$24 ] zp ZP_WORD:69 [ startProcessing::$2 ] zp ZP_WORD:102 [ startProcessing::$25 ] zp ZP_BYTE:55 [ startProcessing::center_x#0 ] zp ZP_WORD:96 [ startProcessing::spriteY#0 ] zp ZP_WORD:88 [ startProcessing::spriteX#0 ] zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:56 [ startProcessing::center_y#0 ] zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] -Limited combination testing to 100 combinations of 1811939328 possible. -Uplifting [mul8u] best 269096 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:120 [ mul8u::return#2 ] zp ZP_WORD:125 [ mul8u::return#3 ] +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 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [processChars] best 268856 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$44 ] reg byte a [ processChars::$45 ] reg byte a [ processChars::$46 ] reg byte a [ processChars::$24 ] zp ZP_BYTE:140 [ processChars::$12 ] zp ZP_BYTE:141 [ processChars::$13 ] zp ZP_BYTE:143 [ processChars::$15 ] zp ZP_BYTE:146 [ processChars::$18 ] zp ZP_BYTE:148 [ processChars::$22 ] zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] zp ZP_WORD:144 [ processChars::$17 ] zp ZP_BYTE:142 [ processChars::$16 ] zp ZP_BYTE:147 [ processChars::$1 ] zp ZP_WORD:138 [ processChars::xpos#0 ] zp ZP_BYTE:137 [ processChars::bitmask#0 ] zp ZP_WORD:135 [ processChars::processing#0 ] -Limited combination testing to 100 combinations of 2097152 possible. -Uplifting [initSquareTables] best 268696 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:124 [ initSquareTables::$16 ] zp ZP_BYTE:129 [ initSquareTables::$17 ] zp ZP_WORD:122 [ initSquareTables::$6 ] zp ZP_WORD:127 [ initSquareTables::$14 ] +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 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [main] best 268516 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$24 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] zp ZP_WORD:53 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:46 [ main::$15 ] zp ZP_BYTE:51 [ main::center_x#0 ] zp ZP_BYTE:52 [ main::center_y#0 ] +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 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [irqTop] best 268336 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -Uplifting [initSprites] best 268216 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -Uplifting [irqBottom] best 268126 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -Uplifting [ProcessingChar] best 268126 combination -Uplifting [ProcessingSprite] best 268126 combination -Uplifting [setupRasterIrq] best 268126 combination -Uplifting [] best 268126 combination +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 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 268126 combination zp 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 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Uplifting [startProcessing] best 268126 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ startProcessing::$33 ] -Uplifting [startProcessing] best 264126 combination reg byte a [ startProcessing::$33 ] +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 ] 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 264126 combination zp 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 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Uplifting [getCharToProcess] best 264126 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ getCharToProcess::$13 ] -Uplifting [getCharToProcess] best 260126 combination reg byte x [ getCharToProcess::$13 ] +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 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 260126 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 262983 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Uplifting [startProcessing] best 259226 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 262083 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 258326 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Uplifting [processChars] best 258326 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [startProcessing] best 261183 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] -Uplifting [initSquareTables] best 258326 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 261183 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 258326 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:124 [ initSquareTables::$16 ] -Uplifting [initSquareTables] best 258286 combination reg byte a [ initSquareTables::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ initSquareTables::$17 ] -Uplifting [initSquareTables] best 258246 combination reg byte a [ initSquareTables::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::$12 ] -Uplifting [processChars] best 258186 combination reg byte a [ processChars::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::$13 ] -Uplifting [processChars] best 258126 combination reg byte a [ processChars::$13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:143 [ processChars::$15 ] -Uplifting [processChars] best 258066 combination reg byte a [ processChars::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:146 [ processChars::$18 ] -Uplifting [processChars] best 258006 combination reg byte a [ processChars::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::$22 ] -Uplifting [processChars] best 257946 combination reg byte a [ processChars::$22 ] +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 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Uplifting [main] best 257946 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 260583 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 257946 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ main::$15 ] -Uplifting [main] best 257816 combination reg byte x [ main::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 257756 combination reg byte x [ getCharToProcess::return_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 257696 combination reg byte y [ getCharToProcess::return_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:142 [ processChars::$16 ] -Uplifting [processChars] best 257626 combination reg byte x [ processChars::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_x#0 ] -Uplifting [main] best 257566 combination reg byte x [ main::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ main::center_y#0 ] -Uplifting [main] best 257506 combination reg byte y [ main::center_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$22 ] -Uplifting [startProcessing] best 257502 combination reg byte a [ startProcessing::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::$23 ] -Uplifting [startProcessing] best 257496 combination reg byte a [ startProcessing::$23 ] -Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$51 ] -Uplifting [startProcessing] best 257490 combination reg byte a [ startProcessing::$51 ] -Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$52 ] -Uplifting [startProcessing] best 257484 combination reg byte a [ startProcessing::$52 ] -Attempting to uplift remaining variables inzp ZP_BYTE:106 [ startProcessing::$53 ] -Uplifting [startProcessing] best 257478 combination reg byte a [ startProcessing::$53 ] -Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$1 ] -Uplifting [processChars] best 257472 combination reg byte x [ processChars::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:137 [ processChars::bitmask#0 ] -Uplifting [processChars] best 257472 combination zp ZP_BYTE:137 [ processChars::bitmask#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:107 [ startProcessing::$34 ] -Uplifting [startProcessing] best 257447 combination reg byte x [ startProcessing::$34 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 257441 combination reg byte a [ startProcessing::ch#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$24 ] -Uplifting [startProcessing] best 257435 combination reg byte a [ startProcessing::$24 ] -Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:55 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 257435 combination zp ZP_BYTE:56 [ startProcessing::center_y#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:80 [ startProcessing::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:75 [ startProcessing::$5 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:120 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:125 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 ] ] with [ zp ZP_WORD:65 [ startProcessing::$49 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ startProcessing::$1 ] ] with [ zp ZP_WORD:69 [ startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 ] ] with [ zp ZP_WORD:84 [ startProcessing::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 ] ] with [ zp ZP_WORD:92 [ startProcessing::$15 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:114 [ getCharToProcess::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:118 [ getCharToProcess::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:78 [ startProcessing::$7 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:73 [ startProcessing::$4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:53 [ main::center_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:122 [ initSquareTables::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:127 [ initSquareTables::$14 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 startProcessing::$49 ] ] with [ zp ZP_WORD:67 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:116 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +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 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 ] @@ -6415,22 +6599,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:40) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_x#0 ] -Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -Allocated (was zp ZP_WORD:61) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] -Allocated (was zp ZP_WORD:63) zp ZP_WORD:36 [ startProcessing::$48 ] -Allocated (was zp ZP_WORD:71) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] -Allocated (was zp ZP_WORD:82) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -Allocated (was zp ZP_WORD:90) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -Allocated (was zp ZP_WORD:102) zp ZP_WORD:45 [ startProcessing::$25 ] -Allocated (was zp ZP_WORD:110) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -Allocated (was zp ZP_WORD:112) zp ZP_WORD:49 [ getCharToProcess::$15 ] -Allocated (was zp ZP_WORD:135) zp ZP_WORD:51 [ processChars::processing#0 ] -Allocated (was zp ZP_BYTE:137) zp ZP_BYTE:53 [ processChars::bitmask#0 ] -Allocated (was zp ZP_WORD:138) zp ZP_WORD:54 [ processChars::xpos#0 ] -Allocated (was zp ZP_WORD:144) zp ZP_WORD:56 [ processChars::$17 ] +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 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6461,7 +6646,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label CHARGEN = $d000 // Positions of the border (in sprite positions) .const BORDER_XPOS_LEFT = $18 + .const BORDER_XPOS_RIGHT = $158 .const BORDER_YPOS_TOP = $32 + .const BORDER_YPOS_BOTTOM = $fa // The offset of the sprite pointers from the screen start address .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 @@ -6472,8 +6659,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 - .label BGCOL = $d021 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register @@ -6490,13 +6675,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const CIA_INTERRUPT_CLEAR = $7f // The vector used when the HARDWARE serves IRQ interrupts .label HARDWARE_IRQ = $fffe - .const WHITE = 1 - .const BLUE = 6 .const LIGHT_BLUE = $e // Address of the screen .label SCREEN = $400 // Sprite data for the animating sprites .label SPRITE_DATA = $2000 + // Values added to VX + .label VXSIN = $2200 + // Values added to VY + .label VYSIN = $2280 // Max number of chars processed at once .const NUM_PROCESSING = 8 // Distance value meaning not found @@ -6507,182 +6694,189 @@ ASSEMBLER BEFORE OPTIMIZATION .const STATUS_PROCESSING = 2 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff + .const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4 + .const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4 .const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4 - .const YPOS_UPMOST = BORDER_YPOS_TOP-8<<4 + .const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4 //SEG3 @begin bbegin: -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] -b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG4 @1 b1: -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -main_from_b1: +//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }} +//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }} +//SEG7 [3] phi from @1 to @2 [phi:@1->@2] +b2_from_b1: + jmp b2 +//SEG8 @2 +b2: +//SEG9 [4] call main +//SEG10 [6] phi from @2 to main [phi:@2->main] +main_from_b2: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -bend_from_b1: +//SEG11 [5] phi from @2 to @end [phi:@2->@end] +bend_from_b2: jmp bend -//SEG9 @end +//SEG12 @end bend: -//SEG10 main +//SEG13 main main: { .label src = 2 .label dst = 4 .label i = 6 .label center_dist = $14 - //SEG11 [5] call initSquareTables - //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG14 [7] call initSquareTables + //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] initSquareTables_from_main: jsr initSquareTables - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG14 [6] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN_COPY sta dst+1 - //SEG15 [6] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 jmp b1 // Copy screen to screen copy - //SEG16 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG17 [6] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG18 [6] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG19 main::@1 + //SEG22 main::@1 b1: - //SEG20 [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG21 [8] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG22 [9] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG23 [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda src+1 cmp #>SCREEN+$3e8 bne b1_from_b1 lda src cmp #main::@2] + //SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 // Init processing array - //SEG26 [11] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG27 [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG28 main::@2 + //SEG31 main::@2 b2: - //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc i tax - //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x lda #0 sta PROCESSING+1,x - //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda #>0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG42 [25] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b2 - //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG44 main::@3 + //SEG47 main::@3 b3: - //SEG45 [27] call initSprites - //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //SEG48 [29] call initSprites + //SEG49 [143] phi from main::@3 to initSprites [phi:main::@3->initSprites] initSprites_from_b3: jsr initSprites - //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] - b7_from_b3: - jmp b7 - //SEG48 main::@7 - b7: - //SEG49 [29] call setupRasterIrq + //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + b8_from_b3: + jmp b8 + //SEG51 main::@8 + b8: + //SEG52 [31] call setupRasterIrq jsr setupRasterIrq - //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b4_from_b5: - b4_from_b7: + b4_from_b8: jmp b4 // Main loop - //SEG51 main::@4 + //SEG54 main::@4 b4: - //SEG52 [31] call getCharToProcess - //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG55 [33] call getCharToProcess + //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] getCharToProcess_from_b4: jsr getCharToProcess - //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG56 [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 - jmp b8 - //SEG57 main::@8 - b8: - //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG60 [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG61 [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + jmp b9 + //SEG60 main::@9 + b9: + //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 @@ -6690,133 +6884,138 @@ main: { cmp #startProcessing] + //SEG72 [45] call startProcessing + //SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] startProcessing_from_b5: jsr startProcessing jmp b4_from_b5 } -//SEG69 startProcessing +//SEG74 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) +// startProcessing(byte zeropage($1f) center_x, byte zeropage($20) center_y) startProcessing: { - .label _0 = $22 - .label _1 = $22 - .label _2 = $22 + .label _0 = $21 + .label _1 = $21 + .label _2 = $21 .label _4 = $a .label _5 = $a .label _7 = 8 .label _8 = 8 - .label _10 = $28 - .label _11 = $28 - .label _12 = $28 - .label _14 = $2a - .label _15 = $2a - .label _16 = $2a - .label _25 = $2d - .label center_x = $20 - .label center_y = $21 + .label _10 = $27 + .label _11 = $27 + .label _12 = $27 + .label _14 = $29 + .label _15 = $29 + .label _16 = $29 + .label center_x = $1f + .label center_y = $20 .label i = 7 - .label screenPtr = $26 + .label screenPtr = $25 .label spriteData = $a .label chargenData = 8 - .label spriteX = $28 - .label spriteY = $2a - .label spritePtr = $2c + .label spriteX = $27 + .label spriteY = $29 + .label spritePtr = $2b .label freeIdx = 7 - .label _48 = $24 - .label _49 = $22 - //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label _42 = $23 + .label _43 = $21 + //SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + //SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff jmp b1 - //SEG72 startProcessing::@1 + //SEG77 startProcessing::@1 b1: - //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG77 startProcessing::@2 + //SEG82 startProcessing::@2 b2: - //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //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 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne b3 - //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] b4_from_b2: b4_from_b9: - //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp b4 - //SEG85 startProcessing::@4 + //SEG90 startProcessing::@4 b4: - //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b8 jmp b5 - //SEG87 startProcessing::@5 + //SEG92 startProcessing::@5 b5: - //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _48 + sta _42 lda _0+1 rol - sta _48+1 - asl _48 - rol _48+1 - //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _49 + 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 clc - adc _48 - sta _49 - lda _49+1 - adc _48+1 - sta _49+1 - //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz1_rol_3 + 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 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda _2 adc #SCREEN sta _2+1 - //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -6832,12 +7031,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 + //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 asl _5 rol _5+1 asl _5 @@ -6850,7 +7049,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 ldy center_x lda (_2),y - //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta _7 lda #0 sta _7+1 - //SEG99 [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _8 rol _8+1 asl _8 rol _8+1 asl _8 rol _8+1 - //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG101 asm { sei } + //SEG106 asm { sei } sei - //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] b6_from_b5: - //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp b6 - //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] b6_from_b6: - //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp b6 - //SEG111 startProcessing::@6 + //SEG116 startProcessing::@6 b6: - //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -6913,37 +7112,37 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG116 [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b6 jmp b7 - //SEG117 startProcessing::@7 + //SEG122 startProcessing::@7 b7: - //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG119 asm { cli } + //SEG124 asm { cli } cli - //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG121 [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _11 rol _11+1 asl _11 rol _11+1 asl _11 rol _11+1 - //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc _12 @@ -6951,7 +7150,7 @@ startProcessing: { bcc !+ inc _12+1 !: - //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -6960,19 +7159,19 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG125 [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _15 rol _15+1 asl _15 rol _15+1 asl _15 rol _15+1 - //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc _16 @@ -6980,7 +7179,7 @@ startProcessing: { bcc !+ inc _16+1 !: - //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -6989,109 +7188,92 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG128 [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsaa=vbsz1_rol_1 + //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda freeIdx asl - //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsaa=vbsaa_minus_vbsc1 - sec - sbc #8 - //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsaa=_neg_vbsaa - eor #$ff - clc - adc #1 - //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsaa - sta _25 - ora #$7f - bmi !+ - lda #0 - !: - sta _25+1 - //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda freeIdx - asl - //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG138 [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //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 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuxx=vwuz1 - lda _25 + //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 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda _25+1 + lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuxx=vwuc2 - lda #<-$10 + //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 + lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x - lda #>-$10 + lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //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 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //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 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //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 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //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 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x jmp breturn - //SEG145 startProcessing::@return + //SEG146 startProcessing::@return breturn: - //SEG146 [101] return + //SEG147 [100] return rts - //SEG147 startProcessing::@8 + //SEG148 startProcessing::@8 b8: - //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + //SEG150 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] b1_from_b8: - //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //SEG151 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp b1 - //SEG151 startProcessing::@3 + //SEG152 startProcessing::@3 b3: - //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG153 [104] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG154 [103] 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 - //SEG154 startProcessing::@9 + //SEG155 startProcessing::@9 b9: - //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4_from_b9 } -//SEG156 getCharToProcess +//SEG157 getCharToProcess // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff getCharToProcess: { - .label _9 = $2f - .label _10 = $2f - .label _11 = $2f + .label _9 = $2c + .label _10 = $2c + .label _11 = $2c .label return_dist = $14 .label x = $f .label dist = $14 @@ -7102,59 +7284,59 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $31 - .label _16 = $2f - //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + .label _15 = $2e + .label _16 = $2c + //SEG158 [106] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] b1_from_getCharToProcess: - //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + //SEG159 [106] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG160 [107] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG161 [106] 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 - //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG162 [107] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG163 [106] 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 - //SEG163 getCharToProcess::@1 + //SEG164 getCharToProcess::@1 b1: - //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG165 [107] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //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 lda #0 sta x jmp b2 - //SEG169 getCharToProcess::@2 + //SEG170 getCharToProcess::@2 b2: - //SEG170 [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG171 [108] 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 - //SEG171 getCharToProcess::@4 + //SEG172 getCharToProcess::@4 b4: - //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda x asl tax - //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG174 [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //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 tay lda SQUARES_X,x clc @@ -7163,7 +7345,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG175 [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG176 [112] 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 !+ @@ -7173,34 +7355,34 @@ getCharToProcess: { !: bcc b12 jmp b5 - //SEG176 getCharToProcess::@5 + //SEG177 getCharToProcess::@5 b5: - //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG179 [116] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG180 [115] 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: - //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG182 [116] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //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 jmp b3 - //SEG183 getCharToProcess::@3 + //SEG184 getCharToProcess::@3 b3: - //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG186 getCharToProcess::@6 + //SEG187 getCharToProcess::@6 b6: - //SEG187 [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG188 [118] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -7208,16 +7390,16 @@ getCharToProcess: { bcc !+ inc screen_line+1 !: - //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG190 getCharToProcess::@7 + //SEG191 getCharToProcess::@7 b7: - //SEG191 [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG192 [121] 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 - //SEG198 [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG199 [127] *((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 - //SEG199 getCharToProcess::@return + //SEG200 getCharToProcess::@return breturn: - //SEG200 [129] return + //SEG201 [128] return rts - //SEG201 getCharToProcess::@9 + //SEG202 getCharToProcess::@9 b9: - //SEG202 [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG203 [129] (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 - //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG204 [106] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //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 jmp b1 - //SEG209 getCharToProcess::@10 + //SEG210 getCharToProcess::@10 b10: - //SEG210 [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG211 [130] (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 - //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG212 [107] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //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 jmp b2 - //SEG216 getCharToProcess::@12 + //SEG217 getCharToProcess::@12 b12: - //SEG217 [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG218 [131] (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 - //SEG218 getCharToProcess::@11 + //SEG219 getCharToProcess::@11 b11: - //SEG219 [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [132] (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 } -//SEG220 setupRasterIrq +//SEG221 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG221 asm { sei } + //SEG222 asm { sei } sei - //SEG222 [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG223 [134] *((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 - //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG224 [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG225 setupRasterIrq::@1 + //SEG226 setupRasterIrq::@1 b1: - //SEG226 [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG227 [137] *((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 - //SEG227 setupRasterIrq::@2 + //SEG228 setupRasterIrq::@2 b2: - //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG231 asm { cli } + //SEG232 asm { cli } cli jmp breturn - //SEG232 setupRasterIrq::@return + //SEG233 setupRasterIrq::@return breturn: - //SEG233 [143] return + //SEG234 [142] return rts } -//SEG234 initSprites +//SEG235 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + //SEG236 [144] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] b1_from_initSprites: - //SEG236 [145] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //SEG237 [144] 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 - //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] + //SEG238 [144] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] b1_from_b1: - //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy + //SEG239 [144] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy jmp b1 - //SEG239 initSprites::@1 + //SEG240 initSprites::@1 b1: - //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG242 [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //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 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1_from_b1 @@ -7406,234 +7588,234 @@ initSprites: { cmp #initSprites::@2] + //SEG244 [148] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] b2_from_b1: - //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 // Initialize sprite registers - //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] + //SEG246 [148] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] b2_from_b2: - //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy + //SEG247 [148] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy jmp b2 - //SEG247 initSprites::@2 + //SEG248 initSprites::@2 b2: - //SEG248 [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG249 [149] *((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 - //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG250 [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG251 [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG251 initSprites::@3 + //SEG252 initSprites::@3 b3: - //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp breturn - //SEG255 initSprites::@return + //SEG256 initSprites::@return breturn: - //SEG256 [156] return + //SEG257 [155] return rts } -//SEG257 initSquareTables +//SEG258 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG259 [157] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG260 [157] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG261 [157] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG262 [157] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG262 initSquareTables::@1 + //SEG263 initSquareTables::@1 b1: - //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG264 initSquareTables::@3 + //SEG265 initSquareTables::@3 b3: - //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 lda x sec sbc #$14 - //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG267 [160] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG268 [160] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG268 initSquareTables::@4 + //SEG269 initSquareTables::@4 b4: - //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG271 [164] call mul8u - //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //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] mul8u_from_b4: - //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG274 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //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 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG275 [165] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG276 [164] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG276 initSquareTables::@9 + //SEG277 initSquareTables::@9 b9: - //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG278 [165] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG279 [166] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG279 [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG280 [167] *((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 - //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG283 [170] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG284 [170] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG285 [170] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG286 [170] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG286 initSquareTables::@5 + //SEG287 initSquareTables::@5 b5: - //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG288 initSquareTables::@7 + //SEG289 initSquareTables::@7 b7: - //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 lda y sec sbc #$c - //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG291 [173] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG292 [173] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG292 initSquareTables::@8 + //SEG293 initSquareTables::@8 b8: - //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG295 [177] call mul8u - //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //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] mul8u_from_b8: - //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG298 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //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 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG299 [178] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG300 [177] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b10 - //SEG300 initSquareTables::@10 + //SEG301 initSquareTables::@10 b10: - //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG302 [178] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG303 [179] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG303 [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG304 [180] *((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 - //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG305 [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG306 [182] 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 - //SEG306 initSquareTables::@return + //SEG307 initSquareTables::@return breturn: - //SEG307 [184] return + //SEG308 [183] return rts - //SEG308 initSquareTables::@6 + //SEG309 initSquareTables::@6 b6: - //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8_from_b6 - //SEG310 initSquareTables::@2 + //SEG311 initSquareTables::@2 b2: - //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4_from_b2 } -//SEG312 mul8u +//SEG313 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 - //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG314 [187] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //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 lda #0 sta res lda #0 sta res+1 - //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG317 mul8u::@1 + //SEG318 mul8u::@1 b1: - //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG319 mul8u::@return + //SEG320 mul8u::@return breturn: - //SEG320 [190] return + //SEG321 [189] return rts - //SEG321 mul8u::@2 + //SEG322 mul8u::@2 b2: - //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG324 mul8u::@4 + //SEG325 mul8u::@4 b4: - //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7641,89 +7823,79 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG327 [193] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG328 [193] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG328 mul8u::@3 + //SEG329 mul8u::@3 b3: - //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG332 [187] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //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 jmp b1 } -//SEG335 irqBottom +//SEG336 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG336 entry interrupt(HARDWARE_ALL) + //SEG337 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG338 [197] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG339 [197] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG340 [197] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG341 [197] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG341 irqBottom::@1 + //SEG342 irqBottom::@1 b1: - //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG344 [199] 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] + b2_from_b1: jmp b2 - //SEG344 irqBottom::@2 + //SEG346 irqBottom::@2 b2: - //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BGCOL - //SEG347 [203] call processChars - //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG347 [201] call processChars + //SEG348 [206] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 //SEG349 irqBottom::@3 b3: - //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG352 [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG355 irqBottom::@return + //SEG353 irqBottom::@return breturn: - //SEG356 [209] return - exit interrupt(HARDWARE_ALL) + //SEG354 [205] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7732,51 +7904,50 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG355 processChars // Process any chars in the PROCESSING array processChars: { - .label _17 = $38 - .label processing = $33 - .label bitmask = $35 + .label _14 = $35 + .label _24 = $33 + .label _28 = $38 + .label _33 = $3a + .label processing = $30 + .label bitmask = $32 .label i = $1e - .label xpos = $36 - .label numActive = $1f - //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label xpos = $33 + .label ypos = $37 + //SEG356 [207] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 - lda #0 - sta numActive - //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 + //SEG357 [207] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG358 [207] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy + //SEG359 [207] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy jmp b1 - //SEG364 processChars::@1 + //SEG360 processChars::@1 b1: - //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa + //SEG365 [212] (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 - //SEG370 [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -7789,23 +7960,23 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE - beq b2_from_b1 - jmp b10 - //SEG372 processChars::@10 - b10: - //SEG373 [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_NEW bne b3 - jmp b11 - //SEG374 processChars::@11 - b11: - //SEG375 [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + 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 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -7817,12 +7988,12 @@ processChars: { txa !: sta $ffff - //SEG376 [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //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 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -7832,15 +8003,15 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y jmp b3 - //SEG379 processChars::@3 + //SEG375 processChars::@3 b3: - //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -7855,52 +8026,54 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 bne b4 - jmp b8 - //SEG383 processChars::@8 - b8: - //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + jmp b7 + //SEG379 processChars::@7 + b7: + //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b5 - //SEG386 processChars::@5 + //SEG382 processChars::@5 b5: - //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG390 [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _17 + sta _14 iny lda (processing),y - sta _17+1 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 - lda _17 - //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa + 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 ypos + //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + lda ypos sta SPRITES_YPOS,x - //SEG393 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG389 [231] 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 @@ -7913,24 +8086,85 @@ processChars: { bcc b6 !: jmp b13 - //SEG394 processChars::@13 + //SEG390 processChars::@13 b13: - //SEG395 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + //SEG391 [232] 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 + bcc b6 + bne !+ + dey + lda #YPOS_UPMOST + cmp #>YPOS_TOPMOST bcc b6 bne !+ dey lda (processing),y - cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + iny + lda #>YPOS_BOTTOMMOST + cmp (processing),y + bcc b6 + bne !+ + dey + lda #> (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 + sec + sbc #BORDER_XPOS_LEFT/8 + //SEG400 [238] (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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX + tax + lda (processing),y + clc + adc VXSIN,x + sta _28 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -7944,7 +8178,35 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [242] (byte~) processChars::$30 ← (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 + sec + sbc #BORDER_YPOS_TOP/8 + //SEG406 [244] (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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY + tax + lda (processing),y + clc + adc VYSIN,x + sta _33 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -7956,134 +8218,104 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - jmp b7 - //SEG399 processChars::@7 - b7: - //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 - inc numActive - //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - b2_from_b1: - b2_from_b7: - //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp b2 - //SEG403 processChars::@2 + //SEG410 processChars::@2 b2: - //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG405 [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG412 [249] 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 - //SEG406 processChars::@12 - b12: - //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 - lax numActive - axs #-['0'] - //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx - stx SCREEN+$3e7 jmp breturn - //SEG409 processChars::@return + //SEG413 processChars::@return breturn: - //SEG410 [245] return + //SEG414 [250] return rts - //SEG411 processChars::@6 + //SEG415 processChars::@6 b6: - //SEG412 [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG416 [251] *((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 - //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG418 [253] *((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 b7 - //SEG415 processChars::@4 + jmp b2 + //SEG419 processChars::@4 b4: - //SEG416 [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG420 [254] *((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 } -//SEG417 irqTop +//SEG421 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG418 entry interrupt(HARDWARE_ALL) + //SEG422 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG423 [256] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG424 [256] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG425 [256] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG426 [256] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG423 irqTop::@1 + //SEG427 irqTop::@1 b1: - //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 - jmp b2 - //SEG426 irqTop::@2 - b2: - //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BGCOL - //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] - b3_from_b2: - //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //SEG430 [259] 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 ldx #0 - jmp b3 - //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] - b3_from_b3: - //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy - jmp b3 - //SEG433 irqTop::@3 - b3: - //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + jmp b2 + //*BORDERCOL = WHITE; + //*BGCOL = WHITE; + //SEG432 [259] 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 + jmp b2 + //SEG434 irqTop::@2 + b2: + //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 - bne b3_from_b3 - jmp b4 - //SEG436 irqTop::@4 - b4: - //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG439 [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + bne b2_from_b2 + jmp b3 + //SEG437 irqTop::@3 + b3: + //SEG438 [262] *((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 - //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG441 [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG442 irqTop::@return + //SEG441 irqTop::@return breturn: - //SEG443 [264] return - exit interrupt(HARDWARE_ALL) + //SEG442 [265] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -8100,17 +8332,29 @@ irqTop: { SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt PROCESSING: .fill $d*NUM_PROCESSING, 0 +.pc = VXSIN "VXSIN" + .for(var i=0; i<40; i++) { + .word -sin(toRadians([i*360]/40))*4 + } + +.pc = VYSIN "VYSIN" + .for(var i=0; i<25; i++) { + .word -sin(toRadians([i*360]/25))*4 + } + ASSEMBLER OPTIMIZATIONS Removing instruction jmp b1 +Removing instruction jmp b2 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b7 -Removing instruction jmp b4 Removing instruction jmp b8 +Removing instruction jmp b4 +Removing instruction jmp b9 Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b4 @@ -8153,21 +8397,20 @@ 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 b11 Removing instruction jmp b3 -Removing instruction jmp b8 +Removing instruction jmp b7 Removing instruction jmp b5 Removing instruction jmp b13 -Removing instruction jmp b9 -Removing instruction jmp b7 -Removing instruction jmp b2 Removing instruction jmp b12 +Removing instruction jmp b11 +Removing instruction jmp b8 +Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b4 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 @@ -8187,14 +8430,12 @@ Replacing instruction ldy #0 with TAY Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 -Removing instruction lda #WHITE -Removing instruction lda #0 -Removing instruction lda #WHITE +Removing instruction lda ypos Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 -Replacing label b4_from_b5 with b4_from_b7 +Replacing label b4_from_b5 with b4_from_b8 Replacing label b6_from_b6 with b6 Replacing label b2_from_b3 with b2 Replacing label b4_from_b9 with b4 @@ -8209,19 +8450,19 @@ 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 b3_from_b3 with b3 -Removing instruction b1_from_bbegin: +Replacing label b2_from_b2 with b2 Removing instruction b1: -Removing instruction main_from_b1: -Removing instruction bend_from_b1: +Removing instruction b2_from_b1: +Removing instruction b2: +Removing instruction main_from_b2: +Removing instruction bend_from_b2: Removing instruction b1_from_b1: Removing instruction b2_from_b2: Removing instruction b3_from_b2: Removing instruction initSprites_from_b3: -Removing instruction b7_from_b3: +Removing instruction b8_from_b3: Removing instruction b4_from_b5: Removing instruction getCharToProcess_from_b4: Removing instruction b2_from_b1: @@ -8244,12 +8485,12 @@ Removing instruction b8_from_b7: Removing instruction b3_from_b2: Removing instruction b3_from_b4: Removing instruction b1_from_b1: +Removing instruction b2_from_b1: +Removing instruction processChars_from_b2: Removing instruction breturn: Removing instruction b1_from_b2: -Removing instruction b2_from_b1: -Removing instruction b2_from_b7: Removing instruction b1_from_b1: -Removing instruction b3_from_b3: +Removing instruction b2_from_b2: Removing instruction breturn: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: @@ -8257,9 +8498,10 @@ Removing instruction initSquareTables_from_main: Removing instruction b1_from_main: Removing instruction b2_from_b1: Removing instruction b3: -Removing instruction b7: -Removing instruction b4: Removing instruction b8: +Removing instruction b4: +Removing instruction b9: +Removing instruction b6: Removing instruction startProcessing_from_b5: Removing instruction b1_from_startProcessing: Removing instruction b5: @@ -8298,25 +8540,24 @@ Removing instruction b4: Removing instruction b1_from_b3: Removing instruction b1_from_irqBottom: Removing instruction b2: -Removing instruction processChars_from_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 b13: -Removing instruction b9: -Removing instruction b12: Removing instruction breturn: Removing instruction b1_from_irqTop: -Removing instruction b2: -Removing instruction b3_from_b2: -Removing instruction b4: +Removing instruction b2_from_b1: +Removing instruction b3: Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin -Relabelling long label b4_from_b7 to b3 +Relabelling long label b4_from_b8 to b3 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b2 @@ -8329,7 +8570,7 @@ Removing instruction jmp b5 Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b1 -Removing instruction jmp b3 +Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction lda x with TYA Removing instruction lda #$28 @@ -8339,28 +8580,35 @@ Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [425] bne b2 to beq -Fixing long branch [953] bne b1 to beq -Fixing long branch [206] bne b3 to beq -Fixing long branch [212] beq b8 to bne -Fixing long branch [473] beq b11 to bne -Fixing long branch [494] beq b12 to bne -Fixing long branch [498] bcc b12 to bcs -Fixing long branch [834] beq b2 to bne -Fixing long branch [886] bne b4 to beq +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 [936] bcc b6 to bcs +Fixing long branch [943] bcc b6 to bcs +Fixing long branch [951] bcc b6 to bcs +Fixing long branch [958] bcc b6 to bcs FINAL SYMBOL TABLE (label) @1 +(label) @2 (label) @begin (label) @end -(byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (byte*) 53281 -(byte) BLUE -(const byte) BLUE#0 BLUE = (byte) 6 -(byte*) BORDERCOL -(const byte*) BORDERCOL#0 BORDERCOL = (byte*) 53280 (byte) BORDER_XPOS_LEFT (const byte) BORDER_XPOS_LEFT#0 BORDER_XPOS_LEFT = (byte) $18 +(word) BORDER_XPOS_RIGHT +(const word) BORDER_XPOS_RIGHT#0 BORDER_XPOS_RIGHT = (word) $158 +(byte) BORDER_YPOS_BOTTOM +(const byte) BORDER_YPOS_BOTTOM#0 BORDER_YPOS_BOTTOM = (byte) $fa (byte) BORDER_YPOS_TOP (const byte) BORDER_YPOS_TOP#0 BORDER_YPOS_TOP = (byte) $32 (byte*) CHARGEN @@ -8457,20 +8705,26 @@ FINAL SYMBOL TABLE (const byte) STATUS_PROCESSING#0 STATUS_PROCESSING = (byte) 2 (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265 -(byte) WHITE -(const byte) WHITE#0 WHITE = (byte) 1 +(word*) VXSIN +(const word*) VXSIN#0 VXSIN = (word*) 8704 +(word*) VYSIN +(const word*) VYSIN#0 VYSIN = (word*) 8832 (word) XPOS_LEFTMOST (const word) XPOS_LEFTMOST#0 XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8<<(byte) 4 -(word) YPOS_UPMOST -(const word) YPOS_UPMOST#0 YPOS_UPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 +(word) XPOS_RIGHTMOST +(const word) XPOS_RIGHTMOST#0 XPOS_RIGHTMOST = (const word) BORDER_XPOS_RIGHT#0<<(byte) 4 +(word) YPOS_BOTTOMMOST +(const word) YPOS_BOTTOMMOST#0 YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM#0<<(byte) 4 +(word) YPOS_TOPMOST +(const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:44 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:44 4.0 (byte~) getCharToProcess::$13 reg byte x 1001.0 (byte~) getCharToProcess::$14 reg byte a 2002.0 -(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:46 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:44 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:44 3.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -8574,7 +8828,6 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) irqTop::@1 (label) irqTop::@2 (label) irqTop::@3 -(label) irqTop::@4 (label) irqTop::@return (byte) irqTop::i (byte) irqTop::i#1 reg byte x 16.5 @@ -8583,11 +8836,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(byte~) main::$15 reg byte x 12.375 -(byte) main::$24 reg byte a 22.0 +(byte~) main::$16 reg byte x 12.375 (byte) main::$25 reg byte a 22.0 (byte) main::$26 reg byte a 22.0 -(struct ProcessingChar~) main::$8 +(byte) main::$27 reg byte a 22.0 +(struct ProcessingChar~) main::$9 (label) main::@1 (label) main::@2 (label) main::@3 @@ -8596,6 +8849,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@6 (label) main::@7 (label) main::@8 +(label) main::@9 (struct ProcessingChar) main::center (word) main::center_dist (word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0 @@ -8640,18 +8894,23 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$1 reg byte x 4.0 -(byte~) processChars::$12 reg byte a 22.0 +(byte~) processChars::$10 reg byte a 22.0 +(byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$15 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::$17 $17 zp ZP_WORD:56 11.0 -(byte~) processChars::$18 reg byte a 22.0 -(byte~) processChars::$22 reg byte a 22.0 -(byte~) processChars::$24 reg byte a 22.0 -(byte) processChars::$44 reg byte a 22.0 -(byte) processChars::$45 reg byte a 22.0 -(byte) processChars::$46 reg byte a 22.0 +(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::$34 reg byte a 22.0 +(byte~) processChars::$36 reg byte a 22.0 +(byte~) processChars::$37 reg byte a 22.0 +(byte~) processChars::$38 reg byte a 22.0 +(byte) processChars::$64 reg byte a 22.0 +(byte) processChars::$65 reg byte a 22.0 +(byte) processChars::$66 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -8667,18 +8926,20 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.5 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 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.9411764705882353 -(byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 -(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 1.03125 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.4782608695652174 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.3055555555555556 +(byte) processChars::xchar +(byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:54 3.142857142857143 +(word) processChars::xpos#0 xpos zp ZP_WORD:51 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 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -8687,31 +8948,27 @@ 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:34 3.0 -(word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002 -(signed byte~) startProcessing::$22 reg byte a 4.0 -(signed byte~) startProcessing::$23 reg byte a 4.0 -(signed byte~) startProcessing::$24 reg byte a 2.0 -(word~) startProcessing::$25 $25 zp ZP_WORD:45 0.5714285714285714 -(byte~) startProcessing::$33 reg byte a 2002.0 -(byte~) startProcessing::$34 reg byte x 2.25 +(word~) startProcessing::$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::$4 $4 zp ZP_WORD:10 4.0 -(byte) startProcessing::$44 reg byte a 2002.0 -(byte) startProcessing::$45 reg byte a 2002.0 -(byte) startProcessing::$46 reg byte a 2002.0 -(word) startProcessing::$48 $48 zp ZP_WORD:36 4.0 -(word) startProcessing::$49 $49 zp ZP_WORD:34 4.0 +(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::$47 reg byte a 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 -(byte) startProcessing::$51 reg byte a 4.0 -(byte) startProcessing::$52 reg byte a 4.0 -(byte) startProcessing::$53 reg byte a 4.0 (word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 (label) startProcessing::@1 @@ -8727,9 +8984,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:32 0.3846153846153846 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:31 0.3846153846153846 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:32 0.2619047619047619 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData @@ -8737,7 +8994,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 28.56521739130435 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 31.285714285714285 (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 @@ -8748,18 +9005,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:38 0.09523809523809523 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:37 0.10526315789473684 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.2857142857142857 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:43 0.4 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.2857142857142857 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.4 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.36363636363636365 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.5714285714285714 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] @@ -8789,64 +9046,66 @@ 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::$24 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] -reg byte x [ main::$15 ] +reg byte a [ main::$27 ] +reg byte x [ main::$16 ] 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:32 [ startProcessing::center_x#0 ] -zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$44 ] +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 ] +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::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 ] -reg byte a [ startProcessing::$33 ] -zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:36 [ startProcessing::$48 ] -zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] -reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$22 ] -reg byte a [ startProcessing::$23 ] -reg byte a [ startProcessing::$24 ] -zp ZP_WORD:45 [ startProcessing::$25 ] -reg byte a [ startProcessing::$51 ] -reg byte a [ startProcessing::$52 ] -reg byte a [ startProcessing::$53 ] -reg byte x [ startProcessing::$34 ] +reg byte a [ startProcessing::$47 ] +reg byte x [ startProcessing::$28 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:49 [ getCharToProcess::$15 ] +zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:46 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$44 ] -reg byte a [ processChars::$45 ] -reg byte a [ processChars::$46 ] -reg byte a [ processChars::$24 ] -zp ZP_WORD:51 [ processChars::processing#0 ] -zp ZP_BYTE:53 [ processChars::bitmask#0 ] -zp ZP_WORD:54 [ processChars::xpos#0 ] -reg byte a [ processChars::$12 ] -reg byte a [ processChars::$13 ] +reg byte 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 ] -reg byte a [ processChars::$15 ] -zp ZP_WORD:56 [ processChars::$17 ] -reg byte a [ processChars::$18 ] -reg byte x [ processChars::$1 ] -reg byte a [ processChars::$22 ] +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 a [ processChars::xchar#0 ] +reg byte a [ processChars::$37 ] +zp ZP_WORD:56 [ processChars::$28 ] +reg byte a [ processChars::$30 ] +reg byte a [ processChars::ychar#0 ] +reg byte a [ processChars::$38 ] +zp ZP_WORD:58 [ processChars::$33 ] +reg byte a [ processChars::$34 ] FINAL ASSEMBLER -Score: 240956 +Score: 243792 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in letters @@ -8876,7 +9135,9 @@ Score: 240956 .label CHARGEN = $d000 // Positions of the border (in sprite positions) .const BORDER_XPOS_LEFT = $18 + .const BORDER_XPOS_RIGHT = $158 .const BORDER_YPOS_TOP = $32 + .const BORDER_YPOS_BOTTOM = $fa // The offset of the sprite pointers from the screen start address .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 @@ -8887,8 +9148,6 @@ Score: 240956 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label BORDERCOL = $d020 - .label BGCOL = $d021 .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register @@ -8905,13 +9164,15 @@ Score: 240956 .const CIA_INTERRUPT_CLEAR = $7f // The vector used when the HARDWARE serves IRQ interrupts .label HARDWARE_IRQ = $fffe - .const WHITE = 1 - .const BLUE = 6 .const LIGHT_BLUE = $e // Address of the screen .label SCREEN = $400 // Sprite data for the animating sprites .label SPRITE_DATA = $2000 + // Values added to VX + .label VXSIN = $2200 + // Values added to VY + .label VYSIN = $2280 // Max number of chars processed at once .const NUM_PROCESSING = 8 // Distance value meaning not found @@ -8922,265 +9183,273 @@ Score: 240956 .const STATUS_PROCESSING = 2 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff + .const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4 + .const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4 .const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4 - .const YPOS_UPMOST = BORDER_YPOS_TOP-8<<4 + .const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4 //SEG3 @begin -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG5 @1 -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -//SEG9 @end -//SEG10 main +//SEG4 @1 +//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }} +//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }} +//SEG7 [3] phi from @1 to @2 [phi:@1->@2] +//SEG8 @2 +//SEG9 [4] call main +//SEG10 [6] phi from @2 to main [phi:@2->main] +//SEG11 [5] phi from @2 to @end [phi:@2->@end] +//SEG12 @end +//SEG13 main main: { .label src = 2 .label dst = 4 .label i = 6 .label center_dist = $14 - //SEG11 [5] call initSquareTables - //SEG12 [157] phi from main to initSquareTables [phi:main->initSquareTables] + //SEG14 [7] call initSquareTables + //SEG15 [156] phi from main to initSquareTables [phi:main->initSquareTables] jsr initSquareTables - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG14 [6] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //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 lda #SCREEN_COPY sta dst+1 - //SEG15 [6] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 // Copy screen to screen copy - //SEG16 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG17 [6] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG18 [6] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy - //SEG19 main::@1 + //SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG22 main::@1 b1: - //SEG20 [7] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y sta (dst),y - //SEG21 [8] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG22 [9] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG23 [10] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda src+1 cmp #>SCREEN+$3e8 bne b1 lda src cmp #main::@2] - //SEG25 [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i // Init processing array - //SEG26 [11] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG27 [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG28 main::@2 + //SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG31 main::@2 b2: - //SEG29 [12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG30 [13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG31 [14] (byte) main::$26 ← (byte) main::$25 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG32 [15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc i tax - //SEG33 [16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROCESSING,x sta PROCESSING+1,x - //SEG34 [17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG35 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG36 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 + //SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG37 [20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG38 [21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG39 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_FREE sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG40 [23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 + //SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2 lda #<0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG41 [24] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG42 [25] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp i bne b2 - //SEG43 [26] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG44 main::@3 - //SEG45 [27] call initSprites - //SEG46 [144] phi from main::@3 to initSprites [phi:main::@3->initSprites] + //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] jsr initSprites - //SEG47 [28] phi from main::@3 to main::@7 [phi:main::@3->main::@7] - //SEG48 main::@7 - //SEG49 [29] call setupRasterIrq + //SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8] + //SEG51 main::@8 + //SEG52 [31] call setupRasterIrq jsr setupRasterIrq - //SEG50 [30] phi from main::@5 main::@7 to main::@4 [phi:main::@5/main::@7->main::@4] + //SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4] b3: // Main loop - //SEG51 main::@4 - //SEG52 [31] call getCharToProcess - //SEG53 [106] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] + //SEG54 main::@4 + //SEG55 [33] call getCharToProcess + //SEG56 [105] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess] jsr getCharToProcess - //SEG54 [32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 + //SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1 ldx getCharToProcess.return_x - //SEG55 [33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 + //SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1 ldy getCharToProcess.return_y - //SEG56 [34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 - //SEG57 main::@8 - //SEG58 [35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 - //SEG59 [36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 - //SEG60 [37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 - //SEG61 [38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 + //SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG60 main::@9 + //SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND bne b5 lda center_dist cmp #startProcessing] + //SEG72 [45] call startProcessing + //SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing] jsr startProcessing jmp b3 } -//SEG69 startProcessing +//SEG74 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y) +// startProcessing(byte zeropage($1f) center_x, byte zeropage($20) center_y) startProcessing: { - .label _0 = $22 - .label _1 = $22 - .label _2 = $22 + .label _0 = $21 + .label _1 = $21 + .label _2 = $21 .label _4 = $a .label _5 = $a .label _7 = 8 .label _8 = 8 - .label _10 = $28 - .label _11 = $28 - .label _12 = $28 - .label _14 = $2a - .label _15 = $2a - .label _16 = $2a - .label _25 = $2d - .label center_x = $20 - .label center_y = $21 + .label _10 = $27 + .label _11 = $27 + .label _12 = $27 + .label _14 = $29 + .label _15 = $29 + .label _16 = $29 + .label center_x = $1f + .label center_y = $20 .label i = 7 - .label screenPtr = $26 + .label screenPtr = $25 .label spriteData = $a .label chargenData = 8 - .label spriteX = $28 - .label spriteY = $2a - .label spritePtr = $2c + .label spriteX = $27 + .label spriteY = $29 + .label spritePtr = $2b .label freeIdx = 7 - .label _48 = $24 - .label _49 = $22 - //SEG70 [44] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] - //SEG71 [44] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + .label _42 = $23 + .label _43 = $21 + //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 - //SEG72 startProcessing::@1 + //SEG77 startProcessing::@1 b1: - //SEG73 [45] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] - //SEG74 [45] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG75 [45] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] - //SEG76 [45] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy - //SEG77 startProcessing::@2 + //SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG82 startProcessing::@2 b2: - //SEG78 [46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [49] (byte) startProcessing::$38 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG79 [47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG84 [50] (byte) startProcessing::$39 ← (byte) startProcessing::$38 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG80 [48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG85 [51] (byte) startProcessing::$40 ← (byte) startProcessing::$39 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG81 [49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG86 [52] (byte~) startProcessing::$27 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG82 [50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + //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 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y beq !b3+ jmp b3 !b3: - //SEG83 [51] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] - //SEG84 [51] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy - //SEG85 startProcessing::@4 + //SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + //SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + //SEG90 startProcessing::@4 b4: - //SEG86 [52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + //SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx bne !b8+ jmp b8 !b8: - //SEG87 startProcessing::@5 - //SEG88 [53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG92 startProcessing::@5 + //SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _0 lda #0 sta _0+1 - //SEG89 [54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG94 [57] (word) startProcessing::$42 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _0 asl - sta _48 + sta _42 lda _0+1 rol - sta _48+1 - asl _48 - rol _48+1 - //SEG90 [55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1 - lda _49 + 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 clc - adc _48 - sta _49 - lda _49+1 - adc _48+1 - sta _49+1 - //SEG91 [56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3 -- vwuz1=vwuz1_rol_3 + 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 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG92 [57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda _2 adc #SCREEN sta _2+1 - //SEG93 [58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3 lda center_x clc adc _2 @@ -9196,12 +9465,12 @@ startProcessing: { lda #0 adc _2+1 sta screenPtr+1 - //SEG94 [59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + //SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda freeIdx sta _4 lda #0 sta _4+1 - //SEG95 [60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 + //SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6 asl _5 rol _5+1 asl _5 @@ -9214,7 +9483,7 @@ startProcessing: { rol _5+1 asl _5 rol _5+1 - //SEG96 [61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 + //SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1 clc lda spriteData adc #SPRITE_DATA sta spriteData+1 - //SEG97 [62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2 ldy center_x lda (_2),y - //SEG98 [63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + //SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta _7 lda #0 sta _7+1 - //SEG99 [64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _8 rol _8+1 asl _8 rol _8+1 asl _8 rol _8+1 - //SEG100 [65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargenData adc #CHARGEN sta chargenData+1 - //SEG101 asm { sei } + //SEG106 asm { sei } sei - //SEG102 [67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG103 [68] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] - //SEG104 [68] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + //SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + //SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG105 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - //SEG106 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy - //SEG107 [68] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] - //SEG108 [68] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - //SEG109 [68] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - //SEG110 [68] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy - //SEG111 startProcessing::@6 + //SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + //SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + //SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + //SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + //SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + //SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + //SEG116 startProcessing::@6 b6: - //SEG112 [69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y sta (spriteData),y - //SEG113 [70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + //SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc spriteData @@ -9272,35 +9541,35 @@ startProcessing: { bcc !+ inc spriteData+1 !: - //SEG114 [71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + //SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc chargenData bne !+ inc chargenData+1 !: - //SEG115 [72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + //SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG116 [73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6 - //SEG117 startProcessing::@7 - //SEG118 [74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG122 startProcessing::@7 + //SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG119 asm { cli } + //SEG124 asm { cli } cli - //SEG120 [76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + //SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda center_x sta _10 lda #0 sta _10+1 - //SEG121 [77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _11 rol _11+1 asl _11 rol _11+1 asl _11 rol _11+1 - //SEG122 [78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + //SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc _12 @@ -9308,7 +9577,7 @@ startProcessing: { bcc !+ inc _12+1 !: - //SEG123 [79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteX rol spriteX+1 asl spriteX @@ -9317,19 +9586,19 @@ startProcessing: { rol spriteX+1 asl spriteX rol spriteX+1 - //SEG124 [80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + //SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda center_y sta _14 lda #0 sta _14+1 - //SEG125 [81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _15 rol _15+1 asl _15 rol _15+1 asl _15 rol _15+1 - //SEG126 [82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 + //SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc _16 @@ -9337,7 +9606,7 @@ startProcessing: { bcc !+ inc _16+1 !: - //SEG127 [83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 + //SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl spriteY rol spriteY+1 asl spriteY @@ -9346,106 +9615,89 @@ startProcessing: { rol spriteY+1 asl spriteY rol spriteY+1 - //SEG128 [84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax freeIdx axs #-[SPRITE_DATA/$40] stx spritePtr - //SEG129 [85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1 -- vbsaa=vbsz1_rol_1 + //SEG134 [88] (byte) startProcessing::$45 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda freeIdx asl - //SEG130 [86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8 -- vbsaa=vbsaa_minus_vbsc1 - sec - sbc #8 - //SEG131 [87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23 -- vbsaa=_neg_vbsaa - eor #$ff - clc - adc #1 - //SEG132 [88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24 -- vwuz1=_word_vbsaa - sta _25 - ora #$7f - bmi !+ - lda #0 - !: - sta _25+1 - //SEG133 [89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda freeIdx - asl - //SEG134 [90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + //SEG135 [89] (byte) startProcessing::$46 ← (byte) startProcessing::$45 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc freeIdx - //SEG135 [91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::$46 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG136 [92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 + //SEG137 [91] (byte~) startProcessing::$28 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1 clc adc freeIdx tax - //SEG137 [93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG138 [92] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda spriteX sta PROCESSING,x lda spriteX+1 sta PROCESSING+1,x - //SEG138 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //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 lda spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - //SEG139 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25 -- pwuc1_derefidx_vbuxx=vwuz1 - lda _25 + //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 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x - lda _25+1 + lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - //SEG140 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10 -- pwuc1_derefidx_vbuxx=vwuc2 - lda #<-$10 + //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 + lda #$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x - lda #>-$10 + lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - //SEG141 [97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //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 lda freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - //SEG142 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //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 lda spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - //SEG143 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //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 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - //SEG144 [100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1 + //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 lda screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x - //SEG145 startProcessing::@return - //SEG146 [101] return + //SEG146 startProcessing::@return + //SEG147 [100] return rts - //SEG147 startProcessing::@8 + //SEG148 startProcessing::@8 b8: - //SEG148 [102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + //SEG149 [101] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx freeIdx - //SEG149 [44] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] - //SEG150 [44] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + //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 jmp b1 - //SEG151 startProcessing::@3 + //SEG152 startProcessing::@3 b3: - //SEG152 [103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG153 [102] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG153 [104] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG154 [103] 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: - //SEG154 startProcessing::@9 - //SEG155 [105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + //SEG155 startProcessing::@9 + //SEG156 [104] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx freeIdx jmp b4 } -//SEG156 getCharToProcess +//SEG157 getCharToProcess // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff getCharToProcess: { - .label _9 = $2f - .label _10 = $2f - .label _11 = $2f + .label _9 = $2c + .label _10 = $2c + .label _11 = $2c .label return_dist = $14 .label x = $f .label dist = $14 @@ -9456,54 +9708,54 @@ getCharToProcess: { .label closest_dist = $10 .label closest_x = $12 .label closest_y = $13 - .label _15 = $31 - .label _16 = $2f - //SEG157 [107] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] - //SEG158 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + .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 lda #0 sta closest_y - //SEG159 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + //SEG160 [106] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta closest_x - //SEG160 [107] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 + //SEG161 [106] 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 - //SEG161 [107] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + //SEG162 [106] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG162 [107] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 + //SEG163 [106] 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 - //SEG163 getCharToProcess::@1 + //SEG164 getCharToProcess::@1 b1: - //SEG164 [108] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] - //SEG165 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - //SEG166 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - //SEG167 [108] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - //SEG168 [108] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + //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 lda #0 sta x - //SEG169 getCharToProcess::@2 + //SEG170 getCharToProcess::@2 b2: - //SEG170 [109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG171 [108] 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: - //SEG171 getCharToProcess::@4 - //SEG172 [110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG172 getCharToProcess::@4 + //SEG173 [109] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG173 [111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG174 [110] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG174 [112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //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 tay lda SQUARES_X,x clc @@ -9512,7 +9764,7 @@ getCharToProcess: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG175 [113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG176 [112] 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 !+ @@ -9525,41 +9777,41 @@ getCharToProcess: { bcs !b12+ jmp b12 !b12: - //SEG176 getCharToProcess::@5 - //SEG177 [114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + //SEG177 getCharToProcess::@5 + //SEG178 [113] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG178 [115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + //SEG179 [114] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG179 [116] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] - //SEG180 [116] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - //SEG181 [116] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - //SEG182 [116] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy - //SEG183 getCharToProcess::@3 + //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 b3: - //SEG184 [117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + //SEG185 [116] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG185 [118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG186 [117] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 - //SEG186 getCharToProcess::@6 - //SEG187 [119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG187 getCharToProcess::@6 + //SEG188 [118] (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 !: - //SEG188 [120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + //SEG189 [119] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG189 [121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG190 [120] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 - //SEG190 getCharToProcess::@7 - //SEG191 [122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG191 getCharToProcess::@7 + //SEG192 [121] 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 !: - //SEG192 getCharToProcess::@8 - //SEG193 [123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + //SEG193 getCharToProcess::@8 + //SEG194 [122] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda return_y sta _9 lda #0 sta _9+1 - //SEG194 [124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG195 [123] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _9 asl sta _15 @@ -9582,7 +9834,7 @@ getCharToProcess: { sta _15+1 asl _15 rol _15+1 - //SEG195 [125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 + //SEG196 [124] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 lda _16 clc adc _15 @@ -9590,14 +9842,14 @@ getCharToProcess: { lda _16+1 adc _15+1 sta _16+1 - //SEG196 [126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG197 [125] (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 - //SEG197 [127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 + //SEG198 [126] (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 - //SEG198 [128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG199 [127] *((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 - //SEG199 getCharToProcess::@return + //SEG200 getCharToProcess::@return breturn: - //SEG200 [129] return + //SEG201 [128] return rts - //SEG201 getCharToProcess::@9 + //SEG202 getCharToProcess::@9 b9: - //SEG202 [130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG203 [129] (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 - //SEG203 [107] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] - //SEG204 [107] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - //SEG205 [107] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - //SEG206 [107] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - //SEG207 [107] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - //SEG208 [107] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + //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 jmp b1 - //SEG209 getCharToProcess::@10 + //SEG210 getCharToProcess::@10 b10: - //SEG210 [131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + //SEG211 [130] (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 - //SEG211 [108] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] - //SEG212 [108] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - //SEG213 [108] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - //SEG214 [108] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - //SEG215 [108] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + //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 jmp b2 - //SEG216 getCharToProcess::@12 + //SEG217 getCharToProcess::@12 b12: - //SEG217 [132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG218 [131] (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 - //SEG218 getCharToProcess::@11 + //SEG219 getCharToProcess::@11 b11: - //SEG219 [133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 + //SEG220 [132] (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 } -//SEG220 setupRasterIrq +//SEG221 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG221 asm { sei } + //SEG222 asm { sei } sei - //SEG222 [135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG223 [134] *((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 - //SEG223 [136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG224 [135] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG224 [137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG225 [136] *((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 - //SEG225 setupRasterIrq::@1 - //SEG226 [138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG226 setupRasterIrq::@1 + //SEG227 [137] *((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 - //SEG227 setupRasterIrq::@2 - //SEG228 [139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG228 setupRasterIrq::@2 + //SEG229 [138] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG229 [140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG230 [139] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG230 [141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG231 [140] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG231 asm { cli } + //SEG232 asm { cli } cli - //SEG232 setupRasterIrq::@return - //SEG233 [143] return + //SEG233 setupRasterIrq::@return + //SEG234 [142] return rts } -//SEG234 initSprites +//SEG235 initSprites // Initialize sprites initSprites: { .label sp = $16 - //SEG235 [145] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] - //SEG236 [145] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + //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 lda #SPRITE_DATA sta sp+1 // Clear sprite data - //SEG237 [145] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1] - //SEG238 [145] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy - //SEG239 initSprites::@1 + //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 b1: - //SEG240 [146] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + //SEG241 [145] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (sp),y - //SEG241 [147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + //SEG242 [146] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc sp bne !+ inc sp+1 !: - //SEG242 [148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1 + //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 lda sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc b1 @@ -9733,189 +9985,189 @@ initSprites: { cmp #initSprites::@2] - //SEG244 [149] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 + //SEG244 [148] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2] + //SEG245 [148] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1 ldx #0 // Initialize sprite registers - //SEG245 [149] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2] - //SEG246 [149] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy - //SEG247 initSprites::@2 + //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 b2: - //SEG248 [150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG249 [149] *((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 - //SEG249 [151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + //SEG250 [150] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - //SEG250 [152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG251 [151] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG251 initSprites::@3 - //SEG252 [153] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG252 initSprites::@3 + //SEG253 [152] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG253 [154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG254 [153] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG254 [155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG255 [154] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG255 initSprites::@return - //SEG256 [156] return + //SEG256 initSprites::@return + //SEG257 [155] return rts } -//SEG257 initSquareTables +//SEG258 initSquareTables // initialize SQUARES table initSquareTables: { .label _6 = $1a .label _14 = $1a .label x = $18 .label y = $19 - //SEG258 [158] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] - //SEG259 [158] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //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 lda #0 sta x - //SEG260 [158] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] - //SEG261 [158] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy - //SEG262 initSquareTables::@1 + //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 b1: - //SEG263 [159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG264 [158] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 - //SEG264 initSquareTables::@3 - //SEG265 [160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG265 initSquareTables::@3 + //SEG266 [159] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$14 - //SEG266 [161] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] - //SEG267 [161] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy - //SEG268 initSquareTables::@4 + //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 b4: - //SEG269 [162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG270 [161] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG270 [163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG271 [164] call mul8u - //SEG272 [187] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] - //SEG273 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG274 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //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 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG275 [165] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG276 initSquareTables::@9 - //SEG277 [166] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG278 [167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //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 lda x asl - //SEG279 [168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG280 [167] *((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 - //SEG280 [169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG281 [168] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG281 [170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG282 [169] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1 - //SEG282 [171] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] - //SEG283 [171] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //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 lda #0 sta y - //SEG284 [171] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] - //SEG285 [171] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy - //SEG286 initSquareTables::@5 + //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 b5: - //SEG287 [172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG288 [171] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 - //SEG288 initSquareTables::@7 - //SEG289 [173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG289 initSquareTables::@7 + //SEG290 [172] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$c - //SEG290 [174] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] - //SEG291 [174] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy - //SEG292 initSquareTables::@8 + //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 b8: - //SEG293 [175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG294 [174] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG294 [176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG295 [177] call mul8u - //SEG296 [187] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] - //SEG297 [187] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG298 [187] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //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 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG299 [178] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG300 initSquareTables::@10 - //SEG301 [179] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG302 [180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //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 lda y asl - //SEG303 [181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG304 [180] *((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 - //SEG304 [182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG305 [181] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG305 [183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG306 [182] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5 - //SEG306 initSquareTables::@return - //SEG307 [184] return + //SEG307 initSquareTables::@return + //SEG308 [183] return rts - //SEG308 initSquareTables::@6 + //SEG309 initSquareTables::@6 b6: - //SEG309 [185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG310 [184] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8 - //SEG310 initSquareTables::@2 + //SEG311 initSquareTables::@2 b2: - //SEG311 [186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG312 [185] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4 } -//SEG312 mul8u +//SEG313 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 - //SEG313 [188] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG314 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG315 [188] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //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 lda #0 sta res sta res+1 - //SEG316 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG317 mul8u::@1 + //SEG317 [187] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG318 mul8u::@1 b1: - //SEG318 [189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG319 [188] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG319 mul8u::@return - //SEG320 [190] return + //SEG320 mul8u::@return + //SEG321 [189] return rts - //SEG321 mul8u::@2 + //SEG322 mul8u::@2 b2: - //SEG322 [191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG323 [190] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG323 [192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG324 [191] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG324 mul8u::@4 - //SEG325 [193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG325 mul8u::@4 + //SEG326 [192] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -9923,73 +10175,63 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG326 [194] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG327 [194] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG328 mul8u::@3 + //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 b3: - //SEG329 [195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG330 [194] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG330 [196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [195] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG331 [188] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG332 [188] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG333 [188] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG334 [188] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //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 jmp b1 } -//SEG335 irqBottom +//SEG336 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG336 entry interrupt(HARDWARE_ALL) + //SEG337 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG337 [198] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] - //SEG338 [198] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //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 ldx #0 - //SEG339 [198] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - //SEG340 [198] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - //SEG341 irqBottom::@1 + //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 b1: - //SEG342 [199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG343 [198] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG343 [200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG344 [199] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG344 irqBottom::@2 - //SEG345 [201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG346 [202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - sta BGCOL - //SEG347 [203] call processChars - //SEG348 [210] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //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] jsr processChars //SEG349 irqBottom::@3 - //SEG350 [204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG351 [205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG352 [206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG350 [202] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG353 [207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG351 [203] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG354 [208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG352 [204] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG355 irqBottom::@return - //SEG356 [209] return - exit interrupt(HARDWARE_ALL) + //SEG353 irqBottom::@return + //SEG354 [205] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -9998,46 +10240,46 @@ irqBottom: { ldy #00 rti } -//SEG357 processChars +//SEG355 processChars // Process any chars in the PROCESSING array processChars: { - .label _17 = $38 - .label processing = $33 - .label bitmask = $35 + .label _14 = $35 + .label _24 = $33 + .label _28 = $38 + .label _33 = $3a + .label processing = $30 + .label bitmask = $32 .label i = $1e - .label xpos = $36 - .label numActive = $1f - //SEG358 [211] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] - //SEG359 [211] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + .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 lda #0 - sta numActive - //SEG360 [211] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1 sta i - //SEG361 [211] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] - //SEG362 [211] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG363 [211] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy - //SEG364 processChars::@1 + //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 b1: - //SEG365 [212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG361 [208] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda i asl - //SEG366 [213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG362 [209] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG367 [214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2 -- vbuaa=vbuaa_rol_2 + //SEG363 [210] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2 asl asl - //SEG368 [215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + //SEG364 [211] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 clc adc i - //SEG369 [216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24 -- pssz1=pssc1_plus_vbuaa + //SEG365 [212] (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 - //SEG370 [217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID lda (processing),y tax @@ -10050,20 +10292,20 @@ processChars: { bne !- !e: sta bitmask - //SEG371 [218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS lda (processing),y cmp #STATUS_FREE bne !b2+ jmp b2 !b2: - //SEG372 processChars::@10 - //SEG373 [219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1 + //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 lda (processing),y cmp #STATUS_NEW bne b3 - //SEG374 processChars::@11 - //SEG375 [220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + //SEG370 processChars::@10 + //SEG371 [216] *(*((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 @@ -10075,12 +10317,12 @@ processChars: { txa !: sta $ffff - //SEG376 [221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG372 [217] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 // Enable the sprite lda SPRITES_ENABLE ora bitmask sta SPRITES_ENABLE - //SEG377 [222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + //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 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -10090,14 +10332,14 @@ processChars: { tay pla sta SCREEN+SPRITE_PTRS,y - //SEG378 [223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG374 [219] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2 // Set status lda #STATUS_PROCESSING ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - //SEG379 processChars::@3 + //SEG375 processChars::@3 b3: - //SEG380 [224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 + //SEG376 [220] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4 ldy #0 lda (processing),y sta xpos @@ -10112,77 +10354,151 @@ processChars: { ror xpos lsr xpos+1 ror xpos - //SEG381 [225] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 + //SEG377 [221] (byte~) processChars::$10 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1 lda xpos+1 - //SEG382 [226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 + //SEG378 [222] if((byte) 0!=(byte~) processChars::$10) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1 // Set sprite position cmp #0 beq !b4+ jmp b4 !b4: - //SEG383 processChars::@8 - //SEG384 [227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG379 processChars::@7 + //SEG380 [223] (byte~) processChars::$11 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG385 [228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG381 [224] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$11 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG386 processChars::@5 + //SEG382 processChars::@5 b5: - //SEG387 [229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG383 [225] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG388 [230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 + //SEG384 [226] (byte~) processChars::$13 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1 lda xpos - //SEG389 [231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG385 [227] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$13 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG390 [232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + //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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y - sta _17 + sta _14 iny lda (processing),y - sta _17+1 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - lsr _17+1 - ror _17 - //SEG391 [233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17 -- vbuaa=_byte_vwuz1 - lda _17 - //SEG392 [234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18 -- pbuc1_derefidx_vbuxx=vbuaa + 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 ypos + //SEG388 [230] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta SPRITES_YPOS,x - //SEG393 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + //SEG389 [231] 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 cmp #>XPOS_LEFTMOST - bcc b6 + bcs !b6+ + jmp b6 + !b6: bne !+ dey lda (processing),y cmp #(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + ldy #1 + lda #>XPOS_RIGHTMOST + cmp (processing),y + bcs !b6+ + jmp b6 + !b6: + bne !+ + dey + lda #YPOS_UPMOST - bcc b6 + cmp #>YPOS_TOPMOST + bcs !b6+ + jmp b6 + !b6: bne !+ dey lda (processing),y - cmp #(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y + iny + lda #>YPOS_BOTTOMMOST + cmp (processing),y + bcs !b6+ + jmp b6 + !b6: + bne !+ + dey + lda #> (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 + sec + sbc #BORDER_XPOS_LEFT/8 + //SEG400 [238] (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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX + tax + lda (processing),y + clc + adc VXSIN,x + sta _28 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty $ff clc @@ -10196,7 +10512,35 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - //SEG398 [238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + //SEG404 [242] (byte~) processChars::$30 ← (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 + sec + sbc #BORDER_YPOS_TOP/8 + //SEG406 [244] (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 + ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY + tax + lda (processing),y + clc + adc VYSIN,x + sta _33 + 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 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -10208,113 +10552,91 @@ processChars: { ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1 adc (processing),y sta (processing),y - //SEG399 processChars::@7 - b7: - //SEG400 [239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 - inc numActive - //SEG401 [240] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - //SEG402 [240] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy - //SEG403 processChars::@2 + //SEG410 processChars::@2 b2: - //SEG404 [241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + //SEG411 [248] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG405 [242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG412 [249] 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: - //SEG406 processChars::@12 - //SEG407 [243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1 - lax numActive - axs #-['0'] - //SEG408 [244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx - stx SCREEN+$3e7 - //SEG409 processChars::@return - //SEG410 [245] return + //SEG413 processChars::@return + //SEG414 [250] return rts - //SEG411 processChars::@6 + //SEG415 processChars::@6 b6: - //SEG412 [246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG416 [251] *((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 - //SEG413 [247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG417 [252] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor bitmask - //SEG414 [248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG418 [253] *((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 b7 - //SEG415 processChars::@4 + jmp b2 + //SEG419 processChars::@4 b4: - //SEG416 [249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG420 [254] *((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 } -//SEG417 irqTop +//SEG421 irqTop // Raster Interrupt at the top of the screen irqTop: { - //SEG418 entry interrupt(HARDWARE_ALL) + //SEG422 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG419 [251] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] - //SEG420 [251] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //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 ldx #0 - //SEG421 [251] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - //SEG422 [251] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - //SEG423 irqTop::@1 + //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 b1: - //SEG424 [252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG428 [257] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG425 [253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG429 [258] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG426 irqTop::@2 - //SEG427 [254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - lda #WHITE - sta BORDERCOL - //SEG428 [255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 - sta BGCOL - //SEG429 [256] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] - //SEG430 [256] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //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 ldx #0 - //SEG431 [256] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] - //SEG432 [256] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy - //SEG433 irqTop::@3 - b3: - //SEG434 [257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //*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 + b2: + //SEG435 [260] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG435 [258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [261] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 - bne b3 - //SEG436 irqTop::@4 - //SEG437 [259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 - lda #LIGHT_BLUE - sta BORDERCOL - //SEG438 [260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 - lda #BLUE - sta BGCOL - //SEG439 [261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + bne b2 + //SEG437 irqTop::@3 + //SEG438 [262] *((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 - //SEG440 [262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG439 [263] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG441 [263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG440 [264] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG442 irqTop::@return - //SEG443 [264] return - exit interrupt(HARDWARE_ALL) + //SEG441 irqTop::@return + //SEG442 [265] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -10331,4 +10653,14 @@ irqTop: { SQUARES_Y: .fill 2*$19, 0 // Sprites currently being processed in the interrupt PROCESSING: .fill $d*NUM_PROCESSING, 0 +.pc = VXSIN "VXSIN" + .for(var i=0; i<40; i++) { + .word -sin(toRadians([i*360]/40))*4 + } + +.pc = VYSIN "VYSIN" + .for(var i=0; i<25; i++) { + .word -sin(toRadians([i*360]/25))*4 + } + diff --git a/src/test/ref/complex/blackhole/blackhole.sym b/src/test/ref/complex/blackhole/blackhole.sym index 5043715ca..c542ffa8c 100644 --- a/src/test/ref/complex/blackhole/blackhole.sym +++ b/src/test/ref/complex/blackhole/blackhole.sym @@ -1,14 +1,13 @@ (label) @1 +(label) @2 (label) @begin (label) @end -(byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (byte*) 53281 -(byte) BLUE -(const byte) BLUE#0 BLUE = (byte) 6 -(byte*) BORDERCOL -(const byte*) BORDERCOL#0 BORDERCOL = (byte*) 53280 (byte) BORDER_XPOS_LEFT (const byte) BORDER_XPOS_LEFT#0 BORDER_XPOS_LEFT = (byte) $18 +(word) BORDER_XPOS_RIGHT +(const word) BORDER_XPOS_RIGHT#0 BORDER_XPOS_RIGHT = (word) $158 +(byte) BORDER_YPOS_BOTTOM +(const byte) BORDER_YPOS_BOTTOM#0 BORDER_YPOS_BOTTOM = (byte) $fa (byte) BORDER_YPOS_TOP (const byte) BORDER_YPOS_TOP#0 BORDER_YPOS_TOP = (byte) $32 (byte*) CHARGEN @@ -105,20 +104,26 @@ (const byte) STATUS_PROCESSING#0 STATUS_PROCESSING = (byte) 2 (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265 -(byte) WHITE -(const byte) WHITE#0 WHITE = (byte) 1 +(word*) VXSIN +(const word*) VXSIN#0 VXSIN = (word*) 8704 +(word*) VYSIN +(const word*) VYSIN#0 VYSIN = (word*) 8832 (word) XPOS_LEFTMOST (const word) XPOS_LEFTMOST#0 XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8<<(byte) 4 -(word) YPOS_UPMOST -(const word) YPOS_UPMOST#0 YPOS_UPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 +(word) XPOS_RIGHTMOST +(const word) XPOS_RIGHTMOST#0 XPOS_RIGHTMOST = (const word) BORDER_XPOS_RIGHT#0<<(byte) 4 +(word) YPOS_BOTTOMMOST +(const word) YPOS_BOTTOMMOST#0 YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM#0<<(byte) 4 +(word) YPOS_TOPMOST +(const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0 -(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0 +(word~) getCharToProcess::$10 $10 zp ZP_WORD:44 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:44 4.0 (byte~) getCharToProcess::$13 reg byte x 1001.0 (byte~) getCharToProcess::$14 reg byte a 2002.0 -(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0 -(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0 -(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:46 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:44 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:44 3.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -222,7 +227,6 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) irqTop::@1 (label) irqTop::@2 (label) irqTop::@3 -(label) irqTop::@4 (label) irqTop::@return (byte) irqTop::i (byte) irqTop::i#1 reg byte x 16.5 @@ -231,11 +235,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(byte~) main::$15 reg byte x 12.375 -(byte) main::$24 reg byte a 22.0 +(byte~) main::$16 reg byte x 12.375 (byte) main::$25 reg byte a 22.0 (byte) main::$26 reg byte a 22.0 -(struct ProcessingChar~) main::$8 +(byte) main::$27 reg byte a 22.0 +(struct ProcessingChar~) main::$9 (label) main::@1 (label) main::@2 (label) main::@3 @@ -244,6 +248,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@6 (label) main::@7 (label) main::@8 +(label) main::@9 (struct ProcessingChar) main::center (word) main::center_dist (word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0 @@ -288,18 +293,23 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 return zp ZP_WORD:26 22.0 (word) mul8u::return#3 return zp ZP_WORD:26 22.0 (void()) processChars() -(byte~) processChars::$1 reg byte x 4.0 -(byte~) processChars::$12 reg byte a 22.0 +(byte~) processChars::$10 reg byte a 22.0 +(byte~) processChars::$11 reg byte a 22.0 (byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$15 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::$17 $17 zp ZP_WORD:56 11.0 -(byte~) processChars::$18 reg byte a 22.0 -(byte~) processChars::$22 reg byte a 22.0 -(byte~) processChars::$24 reg byte a 22.0 -(byte) processChars::$44 reg byte a 22.0 -(byte) processChars::$45 reg byte a 22.0 -(byte) processChars::$46 reg byte a 22.0 +(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::$34 reg byte a 22.0 +(byte~) processChars::$36 reg byte a 22.0 +(byte~) processChars::$37 reg byte a 22.0 +(byte~) processChars::$38 reg byte a 22.0 +(byte) processChars::$64 reg byte a 22.0 +(byte) processChars::$65 reg byte a 22.0 +(byte) processChars::$66 reg byte a 22.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -315,18 +325,20 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.5 +(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 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.9411764705882353 -(byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0 -(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 1.03125 -(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666 +(byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.4782608695652174 +(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.3055555555555556 +(byte) processChars::xchar +(byte) processChars::xchar#0 reg byte a 22.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp ZP_WORD:54 3.142857142857143 +(word) processChars::xpos#0 xpos zp ZP_WORD:51 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 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -335,31 +347,27 @@ 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:34 3.0 -(word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0 -(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0 -(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0 -(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0 -(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0 -(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0 -(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0 -(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002 -(signed byte~) startProcessing::$22 reg byte a 4.0 -(signed byte~) startProcessing::$23 reg byte a 4.0 -(signed byte~) startProcessing::$24 reg byte a 2.0 -(word~) startProcessing::$25 $25 zp ZP_WORD:45 0.5714285714285714 -(byte~) startProcessing::$33 reg byte a 2002.0 -(byte~) startProcessing::$34 reg byte x 2.25 +(word~) startProcessing::$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::$4 $4 zp ZP_WORD:10 4.0 -(byte) startProcessing::$44 reg byte a 2002.0 -(byte) startProcessing::$45 reg byte a 2002.0 -(byte) startProcessing::$46 reg byte a 2002.0 -(word) startProcessing::$48 $48 zp ZP_WORD:36 4.0 -(word) startProcessing::$49 $49 zp ZP_WORD:34 4.0 +(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::$47 reg byte a 4.0 (word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0 -(byte) startProcessing::$51 reg byte a 4.0 -(byte) startProcessing::$52 reg byte a 4.0 -(byte) startProcessing::$53 reg byte a 4.0 (word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0 (word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0 (label) startProcessing::@1 @@ -375,9 +383,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:32 0.3846153846153846 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:31 0.3846153846153846 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:32 0.2619047619047619 (byte) startProcessing::ch (byte) startProcessing::ch#0 reg byte a 2.0 (byte*) startProcessing::chargenData @@ -385,7 +393,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 28.56521739130435 +(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 31.285714285714285 (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 @@ -396,18 +404,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:38 0.09523809523809523 +(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:37 0.10526315789473684 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714 (byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5 (byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.2857142857142857 +(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:43 0.4 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.2857142857142857 +(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.4 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.36363636363636365 +(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.5714285714285714 zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] @@ -437,57 +445,59 @@ 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::$24 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] -reg byte x [ main::$15 ] +reg byte a [ main::$27 ] +reg byte x [ main::$16 ] 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:32 [ startProcessing::center_x#0 ] -zp ZP_BYTE:33 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$44 ] +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 ] +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::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 ] -reg byte a [ startProcessing::$33 ] -zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ] -zp ZP_WORD:36 [ startProcessing::$48 ] -zp ZP_WORD:38 [ startProcessing::screenPtr#0 ] -reg byte a [ startProcessing::ch#0 ] -zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ] -zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ] -zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ] -reg byte a [ startProcessing::$22 ] -reg byte a [ startProcessing::$23 ] -reg byte a [ startProcessing::$24 ] -zp ZP_WORD:45 [ startProcessing::$25 ] -reg byte a [ startProcessing::$51 ] -reg byte a [ startProcessing::$52 ] -reg byte a [ startProcessing::$53 ] -reg byte x [ startProcessing::$34 ] +reg byte a [ startProcessing::$47 ] +reg byte x [ startProcessing::$28 ] reg byte x [ getCharToProcess::$13 ] reg byte a [ getCharToProcess::$14 ] -zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] -zp ZP_WORD:49 [ getCharToProcess::$15 ] +zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:46 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$44 ] -reg byte a [ processChars::$45 ] -reg byte a [ processChars::$46 ] -reg byte a [ processChars::$24 ] -zp ZP_WORD:51 [ processChars::processing#0 ] -zp ZP_BYTE:53 [ processChars::bitmask#0 ] -zp ZP_WORD:54 [ processChars::xpos#0 ] -reg byte a [ processChars::$12 ] -reg byte a [ processChars::$13 ] +reg byte 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 ] -reg byte a [ processChars::$15 ] -zp ZP_WORD:56 [ processChars::$17 ] -reg byte a [ processChars::$18 ] -reg byte x [ processChars::$1 ] -reg byte a [ processChars::$22 ] +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 a [ processChars::xchar#0 ] +reg byte a [ processChars::$37 ] +zp ZP_WORD:56 [ processChars::$28 ] +reg byte a [ processChars::$30 ] +reg byte a [ processChars::ychar#0 ] +reg byte a [ processChars::$38 ] +zp ZP_WORD:58 [ processChars::$33 ] +reg byte a [ processChars::$34 ] diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.asm b/src/test/ref/examples/scrolllogo/scrolllogo.asm index b422503f4..882de26cd 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.asm +++ b/src/test/ref/examples/scrolllogo/scrolllogo.asm @@ -409,8 +409,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index 0e7732e47..6cb1380e9 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -5245,8 +5245,7 @@ mul16u: { //SEG252 mul16u::@3 b3: //SEG253 [135] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG254 [136] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -6283,57 +6282,57 @@ Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] Uplift Scope [] 26.12: zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp ZP_WORD:175 [ rem16u#1 ] Uplift Scope [div32u16u] 4: zp ZP_DWORD:80 [ div32u16u::return#2 ] 4: zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:169 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] -Uplifting [mul16u] best 72862 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#1 ] zp ZP_DWORD:102 [ mul16u::return#2 ] zp ZP_DWORD:147 [ mul16u::return#3 ] -Uplifting [divr16u] best 72652 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:161 [ divr16u::return#2 ] zp ZP_WORD:165 [ divr16u::return#3 ] -Uplifting [sin16s] best 72652 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:88 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:115 [ sin16s::$4 ] zp ZP_WORD:123 [ sin16s::x2#0 ] zp ZP_WORD:131 [ sin16s::x3_6#0 ] zp ZP_WORD:137 [ sin16s::x4#0 ] zp ZP_WORD:141 [ sin16s::x5#0 ] zp ZP_WORD:143 [ sin16s::x5_128#0 ] zp ZP_WORD:127 [ sin16s::x3#0 ] zp ZP_WORD:145 [ sin16s::usinx#1 ] zp ZP_WORD:119 [ sin16s::x1#0 ] zp ZP_WORD:133 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 72636 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:121 [ mulu16_sel::return#0 ] zp ZP_WORD:125 [ mulu16_sel::return#1 ] zp ZP_WORD:129 [ mulu16_sel::return#2 ] zp ZP_WORD:135 [ mulu16_sel::return#10 ] zp ZP_WORD:139 [ mulu16_sel::return#11 ] zp ZP_DWORD:151 [ mulu16_sel::$0 ] zp ZP_DWORD:155 [ mulu16_sel::$1 ] zp ZP_WORD:159 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen2] best 72636 combination zp ZP_DWORD:96 [ sin16s_gen2::$5 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:100 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] -Uplifting [loop] best 72636 combination zp ZP_WORD:55 [ loop::$5 ] zp ZP_WORD:57 [ loop::$1 ] zp ZP_WORD:59 [ loop::xpos#0 ] -Uplifting [mul16s] best 72636 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:110 [ mul16s::return#0 ] zp ZP_WORD:106 [ mul16s::$9 ] zp ZP_WORD:108 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] -Uplifting [fill] best 72620 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:177 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [main] best 72500 combination reg byte x [ main::ch#2 main::ch#1 ] -Uplifting [] best 72500 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:175 [ rem16u#1 ] -Uplifting [div32u16u] best 72500 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:169 [ div32u16u::return#0 ] zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] +Uplifting [mul16u] best 72662 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#1 ] zp ZP_DWORD:102 [ mul16u::return#2 ] zp ZP_DWORD:147 [ mul16u::return#3 ] +Uplifting [divr16u] best 72452 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:161 [ divr16u::return#2 ] zp ZP_WORD:165 [ divr16u::return#3 ] +Uplifting [sin16s] best 72452 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:88 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:115 [ sin16s::$4 ] zp ZP_WORD:123 [ sin16s::x2#0 ] zp ZP_WORD:131 [ sin16s::x3_6#0 ] zp ZP_WORD:137 [ sin16s::x4#0 ] zp ZP_WORD:141 [ sin16s::x5#0 ] zp ZP_WORD:143 [ sin16s::x5_128#0 ] zp ZP_WORD:127 [ sin16s::x3#0 ] zp ZP_WORD:145 [ sin16s::usinx#1 ] zp ZP_WORD:119 [ sin16s::x1#0 ] zp ZP_WORD:133 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 72436 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:121 [ mulu16_sel::return#0 ] zp ZP_WORD:125 [ mulu16_sel::return#1 ] zp ZP_WORD:129 [ mulu16_sel::return#2 ] zp ZP_WORD:135 [ mulu16_sel::return#10 ] zp ZP_WORD:139 [ mulu16_sel::return#11 ] zp ZP_DWORD:151 [ mulu16_sel::$0 ] zp ZP_DWORD:155 [ mulu16_sel::$1 ] zp ZP_WORD:159 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen2] best 72436 combination zp ZP_DWORD:96 [ sin16s_gen2::$5 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:100 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] +Uplifting [loop] best 72436 combination zp ZP_WORD:55 [ loop::$5 ] zp ZP_WORD:57 [ loop::$1 ] zp ZP_WORD:59 [ loop::xpos#0 ] +Uplifting [mul16s] best 72436 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:110 [ mul16s::return#0 ] zp ZP_WORD:106 [ mul16s::$9 ] zp ZP_WORD:108 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] +Uplifting [fill] best 72420 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:177 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [main] best 72300 combination reg byte x [ main::ch#2 main::ch#1 ] +Uplifting [] best 72300 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:175 [ rem16u#1 ] +Uplifting [div32u16u] best 72300 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:169 [ div32u16u::return#0 ] zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] -Uplifting [render_logo] best 67400 combination reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] +Uplifting [render_logo] best 67200 combination reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] -Uplifting [render_logo] best 62600 combination reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] +Uplifting [render_logo] best 62400 combination reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] -Uplifting [render_logo] best 62600 combination zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] +Uplifting [render_logo] best 62400 combination zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] -Uplifting [render_logo] best 62600 combination zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] +Uplifting [render_logo] best 62400 combination zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_logo::$33 ] -Uplifting [render_logo] best 62200 combination reg byte a [ render_logo::$33 ] +Uplifting [render_logo] best 62000 combination reg byte a [ render_logo::$33 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ render_logo::$36 ] -Uplifting [render_logo] best 61800 combination reg byte a [ render_logo::$36 ] +Uplifting [render_logo] best 61600 combination reg byte a [ render_logo::$36 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_logo::$39 ] -Uplifting [render_logo] best 61400 combination reg byte a [ render_logo::$39 ] +Uplifting [render_logo] best 61200 combination reg byte a [ render_logo::$39 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ render_logo::$42 ] -Uplifting [render_logo] best 61000 combination reg byte a [ render_logo::$42 ] +Uplifting [render_logo] best 60800 combination reg byte a [ render_logo::$42 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_logo::$45 ] -Uplifting [render_logo] best 60600 combination reg byte a [ render_logo::$45 ] +Uplifting [render_logo] best 60400 combination reg byte a [ render_logo::$45 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ render_logo::$73 ] -Uplifting [render_logo] best 60200 combination reg byte a [ render_logo::$73 ] +Uplifting [render_logo] best 60000 combination reg byte a [ render_logo::$73 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ render_logo::$76 ] -Uplifting [render_logo] best 59800 combination reg byte a [ render_logo::$76 ] +Uplifting [render_logo] best 59600 combination reg byte a [ render_logo::$76 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ render_logo::$79 ] -Uplifting [render_logo] best 59400 combination reg byte a [ render_logo::$79 ] +Uplifting [render_logo] best 59200 combination reg byte a [ render_logo::$79 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ render_logo::$82 ] -Uplifting [render_logo] best 59000 combination reg byte a [ render_logo::$82 ] +Uplifting [render_logo] best 58800 combination reg byte a [ render_logo::$82 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ render_logo::$85 ] -Uplifting [render_logo] best 58600 combination reg byte a [ render_logo::$85 ] +Uplifting [render_logo] best 58400 combination reg byte a [ render_logo::$85 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ render_logo::$0 ] -Uplifting [render_logo] best 58594 combination reg byte a [ render_logo::$0 ] +Uplifting [render_logo] best 58394 combination reg byte a [ render_logo::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:64 [ render_logo::$1 ] -Uplifting [render_logo] best 58588 combination reg byte a [ render_logo::$1 ] +Uplifting [render_logo] best 58388 combination reg byte a [ render_logo::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:65 [ render_logo::$2 ] -Uplifting [render_logo] best 58582 combination reg byte a [ render_logo::$2 ] +Uplifting [render_logo] best 58382 combination reg byte a [ render_logo::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ render_logo::$17 ] -Uplifting [render_logo] best 58576 combination reg byte a [ render_logo::$17 ] +Uplifting [render_logo] best 58376 combination reg byte a [ render_logo::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_logo::x_char#0 ] -Uplifting [render_logo] best 58576 combination zp ZP_BYTE:68 [ render_logo::x_char#0 ] +Uplifting [render_logo] best 58376 combination zp ZP_BYTE:68 [ render_logo::x_char#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 58576 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 58376 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:145 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:127 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:175 [ rem16u#1 ] ] - score: 2 @@ -7225,8 +7224,7 @@ mul16u: { //SEG252 mul16u::@3 b3: //SEG253 [135] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG254 [136] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -8503,7 +8501,7 @@ zp ZP_WORD:62 [ fill::end#0 ] FINAL ASSEMBLER -Score: 44254 +Score: 44054 //SEG0 File Comments //SEG1 Basic Upstart @@ -9170,8 +9168,7 @@ mul16u: { //SEG252 mul16u::@3 b3: //SEG253 [135] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG254 [136] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index a0b61bbe8..a46057bbc 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -402,8 +402,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 823fe1ef2..7ad328441 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -4637,8 +4637,7 @@ mul16u: { //SEG196 mul16u::@3 b3: //SEG197 [108] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG198 [109] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -5899,32 +5898,32 @@ Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD Uplift Scope [] 0.8: zp ZP_WORD:184 [ rem16u#1 ] Uplift Scope [main] -Uplifting [mul16u] best 36744 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:111 [ mul16u::return#2 ] zp ZP_DWORD:156 [ mul16u::return#3 ] -Uplifting [wrap_y] best 36561 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] -Uplifting [bitmap_clear] best 35661 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:186 [ bitmap_clear::$3 ] -Uplifting [divr16u] best 35451 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:170 [ divr16u::return#2 ] zp ZP_WORD:174 [ divr16u::return#3 ] -Uplifting [render_sine] best 35371 combination zp ZP_WORD:65 [ render_sine::$10 ] zp ZP_WORD:67 [ render_sine::$0 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$11 ] zp ZP_WORD:75 [ render_sine::$3 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_init] best 34861 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:190 [ bitmap_init::$5 ] zp ZP_BYTE:191 [ bitmap_init::$6 ] zp ZP_BYTE:188 [ bitmap_init::$7 ] +Uplifting [mul16u] best 36544 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:111 [ mul16u::return#2 ] zp ZP_DWORD:156 [ mul16u::return#3 ] +Uplifting [wrap_y] best 36361 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] +Uplifting [bitmap_clear] best 35461 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:186 [ bitmap_clear::$3 ] +Uplifting [divr16u] best 35251 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:170 [ divr16u::return#2 ] zp ZP_WORD:174 [ divr16u::return#3 ] +Uplifting [render_sine] best 35171 combination zp ZP_WORD:65 [ render_sine::$10 ] zp ZP_WORD:67 [ render_sine::$0 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$11 ] zp ZP_WORD:75 [ render_sine::$3 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_init] best 34661 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:190 [ bitmap_init::$5 ] zp ZP_BYTE:191 [ bitmap_init::$6 ] zp ZP_BYTE:188 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [bitmap_plot] best 34794 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] -Uplifting [sin16s] best 34794 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:124 [ sin16s::$4 ] zp ZP_WORD:132 [ sin16s::x2#0 ] zp ZP_WORD:140 [ sin16s::x3_6#0 ] zp ZP_WORD:146 [ sin16s::x4#0 ] zp ZP_WORD:150 [ sin16s::x5#0 ] zp ZP_WORD:152 [ sin16s::x5_128#0 ] zp ZP_WORD:136 [ sin16s::x3#0 ] zp ZP_WORD:154 [ sin16s::usinx#1 ] zp ZP_WORD:128 [ sin16s::x1#0 ] zp ZP_WORD:142 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 34778 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:130 [ mulu16_sel::return#0 ] zp ZP_WORD:134 [ mulu16_sel::return#1 ] zp ZP_WORD:138 [ mulu16_sel::return#2 ] zp ZP_WORD:144 [ mulu16_sel::return#10 ] zp ZP_WORD:148 [ mulu16_sel::return#11 ] zp ZP_DWORD:160 [ mulu16_sel::$0 ] zp ZP_DWORD:164 [ mulu16_sel::$1 ] zp ZP_WORD:168 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen2] best 34778 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] -Uplifting [mul16s] best 34778 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:119 [ mul16s::return#0 ] zp ZP_WORD:115 [ mul16s::$9 ] zp ZP_WORD:117 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] -Uplifting [fill] best 34778 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] -Uplifting [div32u16u] best 34778 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:176 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:178 [ div32u16u::return#0 ] zp ZP_WORD:172 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 34778 combination zp ZP_WORD:184 [ rem16u#1 ] -Uplifting [main] best 34778 combination +Uplifting [bitmap_plot] best 34594 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] +Uplifting [sin16s] best 34594 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:124 [ sin16s::$4 ] zp ZP_WORD:132 [ sin16s::x2#0 ] zp ZP_WORD:140 [ sin16s::x3_6#0 ] zp ZP_WORD:146 [ sin16s::x4#0 ] zp ZP_WORD:150 [ sin16s::x5#0 ] zp ZP_WORD:152 [ sin16s::x5_128#0 ] zp ZP_WORD:136 [ sin16s::x3#0 ] zp ZP_WORD:154 [ sin16s::usinx#1 ] zp ZP_WORD:128 [ sin16s::x1#0 ] zp ZP_WORD:142 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 34578 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:130 [ mulu16_sel::return#0 ] zp ZP_WORD:134 [ mulu16_sel::return#1 ] zp ZP_WORD:138 [ mulu16_sel::return#2 ] zp ZP_WORD:144 [ mulu16_sel::return#10 ] zp ZP_WORD:148 [ mulu16_sel::return#11 ] zp ZP_DWORD:160 [ mulu16_sel::$0 ] zp ZP_DWORD:164 [ mulu16_sel::$1 ] zp ZP_WORD:168 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen2] best 34578 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] +Uplifting [mul16s] best 34578 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:119 [ mul16s::return#0 ] zp ZP_WORD:115 [ mul16s::$9 ] zp ZP_WORD:117 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] +Uplifting [fill] best 34578 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] +Uplifting [div32u16u] best 34578 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:176 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:178 [ div32u16u::return#0 ] zp ZP_WORD:172 [ div32u16u::quotient_hi#0 ] +Uplifting [] best 34578 combination zp ZP_WORD:184 [ rem16u#1 ] +Uplifting [main] best 34578 combination Attempting to uplift remaining variables inzp ZP_BYTE:190 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 34718 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 34518 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:191 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 34658 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 34458 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 34658 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 34458 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:188 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 34658 combination zp ZP_BYTE:188 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 34458 combination zp ZP_BYTE:188 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 34658 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 34458 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:154 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:136 [ sin16s::x3#0 ] ] - score: 2 @@ -6714,8 +6713,7 @@ mul16u: { //SEG196 mul16u::@3 b3: //SEG197 [108] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG198 [109] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -8215,7 +8213,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 28552 +Score: 28352 //SEG0 File Comments // Generate a big sinus and plot it on a bitmap @@ -8819,8 +8817,7 @@ mul16u: { //SEG196 mul16u::@3 b3: //SEG197 [108] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG198 [109] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb diff --git a/src/test/ref/sinusgen16.asm b/src/test/ref/sinusgen16.asm index 68954ca78..3406d04d5 100644 --- a/src/test/ref/sinusgen16.asm +++ b/src/test/ref/sinusgen16.asm @@ -501,8 +501,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log index d5ee7ff46..e602de211 100644 --- a/src/test/ref/sinusgen16.log +++ b/src/test/ref/sinusgen16.log @@ -3632,8 +3632,7 @@ mul16u: { //SEG259 mul16u::@3 b3: //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG261 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -4085,22 +4084,22 @@ Uplift Scope [div32u16u] 4: zp ZP_DWORD:57 [ div32u16u::return#2 ] 4: zp ZP_WORD Uplift Scope [print_sword] 9.58: zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] Uplift Scope [print_word] -Uplifting [mul16u] best 27049 combination zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:101 [ mul16u::return#2 ] zp ZP_WORD:44 [ mul16u::b#0 ] -Uplifting [print_str] best 27049 combination zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [divr16u] best 26839 combination zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:116 [ divr16u::return#2 ] zp ZP_WORD:120 [ divr16u::return#3 ] -Uplifting [] best 26839 combination zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:130 [ rem16u#1 ] -Uplifting [sin16s] best 26839 combination zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:65 [ sin16s::return#0 ] zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:69 [ sin16s::$4 ] zp ZP_WORD:77 [ sin16s::x2#0 ] zp ZP_WORD:85 [ sin16s::x3_6#0 ] zp ZP_WORD:91 [ sin16s::x4#0 ] zp ZP_WORD:95 [ sin16s::x5#0 ] zp ZP_WORD:97 [ sin16s::x5_128#0 ] zp ZP_WORD:81 [ sin16s::x3#0 ] zp ZP_WORD:99 [ sin16s::usinx#1 ] zp ZP_WORD:73 [ sin16s::x1#0 ] zp ZP_WORD:87 [ sin16s::usinx#0 ] zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 26823 combination zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:75 [ mulu16_sel::return#0 ] zp ZP_WORD:79 [ mulu16_sel::return#1 ] zp ZP_WORD:83 [ mulu16_sel::return#2 ] zp ZP_WORD:89 [ mulu16_sel::return#10 ] zp ZP_WORD:93 [ mulu16_sel::return#11 ] zp ZP_DWORD:105 [ mulu16_sel::$0 ] zp ZP_DWORD:109 [ mulu16_sel::$1 ] zp ZP_WORD:113 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen] best 26823 combination zp ZP_WORD:67 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:61 [ sin16s_gen::step#0 ] -Uplifting [print_cls] best 26823 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 26823 combination zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:53 [ main::sw#0 ] -Uplifting [print_byte] best 26809 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 26797 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [div32u16u] best 26797 combination zp ZP_DWORD:57 [ div32u16u::return#2 ] zp ZP_WORD:122 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:124 [ div32u16u::return#0 ] zp ZP_WORD:118 [ div32u16u::quotient_hi#0 ] -Uplifting [print_sword] best 26797 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_word] best 26797 combination +Uplifting [mul16u] best 26849 combination zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:101 [ mul16u::return#2 ] zp ZP_WORD:44 [ mul16u::b#0 ] +Uplifting [print_str] best 26849 combination zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 26639 combination zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:116 [ divr16u::return#2 ] zp ZP_WORD:120 [ divr16u::return#3 ] +Uplifting [] best 26639 combination zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:130 [ rem16u#1 ] +Uplifting [sin16s] best 26639 combination zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:65 [ sin16s::return#0 ] zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:69 [ sin16s::$4 ] zp ZP_WORD:77 [ sin16s::x2#0 ] zp ZP_WORD:85 [ sin16s::x3_6#0 ] zp ZP_WORD:91 [ sin16s::x4#0 ] zp ZP_WORD:95 [ sin16s::x5#0 ] zp ZP_WORD:97 [ sin16s::x5_128#0 ] zp ZP_WORD:81 [ sin16s::x3#0 ] zp ZP_WORD:99 [ sin16s::usinx#1 ] zp ZP_WORD:73 [ sin16s::x1#0 ] zp ZP_WORD:87 [ sin16s::usinx#0 ] zp ZP_BYTE:22 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 26623 combination zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:75 [ mulu16_sel::return#0 ] zp ZP_WORD:79 [ mulu16_sel::return#1 ] zp ZP_WORD:83 [ mulu16_sel::return#2 ] zp ZP_WORD:89 [ mulu16_sel::return#10 ] zp ZP_WORD:93 [ mulu16_sel::return#11 ] zp ZP_DWORD:105 [ mulu16_sel::$0 ] zp ZP_DWORD:109 [ mulu16_sel::$1 ] zp ZP_WORD:113 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen] best 26623 combination zp ZP_WORD:67 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:61 [ sin16s_gen::step#0 ] +Uplifting [print_cls] best 26623 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 26623 combination zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:53 [ main::sw#0 ] +Uplifting [print_byte] best 26609 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_char] best 26597 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Uplifting [div32u16u] best 26597 combination zp ZP_DWORD:57 [ div32u16u::return#2 ] zp ZP_WORD:122 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:124 [ div32u16u::return#0 ] zp ZP_WORD:118 [ div32u16u::quotient_hi#0 ] +Uplifting [print_sword] best 26597 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplifting [print_word] best 26597 combination Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 26797 combination zp ZP_BYTE:22 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 26597 combination zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:99 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:81 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:130 [ rem16u#1 ] ] - score: 2 @@ -5047,8 +5046,7 @@ mul16u: { //SEG259 mul16u::@3 b3: //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG261 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -5720,7 +5718,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 22865 +Score: 22665 //SEG0 File Comments // Generates a 16-bit signed sinus @@ -6486,8 +6484,7 @@ mul16u: { //SEG259 mul16u::@3 b3: //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG261 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb diff --git a/src/test/ref/sinusgen16b.asm b/src/test/ref/sinusgen16b.asm index 01372866b..fb824b566 100644 --- a/src/test/ref/sinusgen16b.asm +++ b/src/test/ref/sinusgen16b.asm @@ -485,8 +485,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index 669e1947c..2d9fd47a4 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -4509,8 +4509,7 @@ mul16u: { //SEG268 mul16u::@3 b3: //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG270 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -5568,28 +5567,28 @@ Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#3 print_char::ch#1 Uplift Scope [print_sword] 9.58: zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] Uplift Scope [print_word] -Uplifting [mul16u] best 30094 combination zp ZP_DWORD:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:41 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_WORD:45 [ mul16u::b#0 ] -Uplifting [print_str] best 30094 combination zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [divr16u] best 29884 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:128 [ divr16u::return#2 ] zp ZP_WORD:132 [ divr16u::return#3 ] -Uplifting [] best 29884 combination zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:142 [ rem16u#1 ] -Uplifting [mulu16_sel] best 29853 combination zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp ZP_WORD:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp ZP_WORD:87 [ mulu16_sel::return#18 ] zp ZP_WORD:91 [ mulu16_sel::return#19 ] zp ZP_WORD:95 [ mulu16_sel::return#20 ] zp ZP_WORD:101 [ mulu16_sel::return#10 ] zp ZP_WORD:105 [ mulu16_sel::return#11 ] zp ZP_DWORD:117 [ mulu16_sel::$0 ] zp ZP_DWORD:121 [ mulu16_sel::$1 ] zp ZP_WORD:162 [ mulu16_sel::return#0 ] zp ZP_WORD:166 [ mulu16_sel::return#1 ] zp ZP_WORD:170 [ mulu16_sel::return#14 ] zp ZP_WORD:176 [ mulu16_sel::return#15 ] zp ZP_WORD:180 [ mulu16_sel::return#16 ] zp ZP_WORD:125 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] -Uplifting [sin16s] best 29853 combination zp ZP_DWORD:63 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:152 [ sin16s::return#0 ] zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:156 [ sin16s::$4 ] zp ZP_WORD:164 [ sin16s::x2#0 ] zp ZP_WORD:172 [ sin16s::x3_6#0 ] zp ZP_WORD:178 [ sin16s::x4#0 ] zp ZP_WORD:182 [ sin16s::x5#0 ] zp ZP_WORD:184 [ sin16s::x5_128#0 ] zp ZP_WORD:168 [ sin16s::x3#0 ] zp ZP_WORD:186 [ sin16s::usinx#1 ] zp ZP_WORD:160 [ sin16s::x1#0 ] zp ZP_WORD:174 [ sin16s::usinx#0 ] zp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Uplifting [sin16sb] best 29853 combination zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp ZP_WORD:81 [ sin16sb::return#0 ] zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp ZP_WORD:89 [ sin16sb::x2#0 ] zp ZP_WORD:97 [ sin16sb::x3_6#0 ] zp ZP_WORD:103 [ sin16sb::x4#0 ] zp ZP_WORD:107 [ sin16sb::x5#0 ] zp ZP_WORD:109 [ sin16sb::x5_128#0 ] zp ZP_WORD:93 [ sin16sb::x3#0 ] zp ZP_WORD:111 [ sin16sb::usinx#1 ] zp ZP_WORD:85 [ sin16sb::x1#0 ] zp ZP_WORD:99 [ sin16sb::usinx#0 ] zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] -Uplifting [sin16s_gen] best 29853 combination zp ZP_WORD:154 [ sin16s_gen::$1 ] zp ZP_WORD:60 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:148 [ sin16s_gen::step#0 ] -Uplifting [sin16s_genb] best 29853 combination zp ZP_WORD:83 [ sin16s_genb::$2 ] zp ZP_WORD:23 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp ZP_DWORD:77 [ sin16s_genb::step#0 ] -Uplifting [main] best 29763 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:69 [ main::sw#0 ] -Uplifting [print_cls] best 29763 combination zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 29755 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [div32u16u] best 29755 combination zp ZP_DWORD:73 [ div32u16u::return#3 ] zp ZP_WORD:134 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:144 [ div32u16u::return#2 ] zp ZP_DWORD:136 [ div32u16u::return#0 ] zp ZP_WORD:130 [ div32u16u::quotient_hi#0 ] -Uplifting [print_char] best 29743 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 29743 combination zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_word] best 29743 combination +Uplifting [mul16u] best 29894 combination zp ZP_DWORD:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:41 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_WORD:45 [ mul16u::b#0 ] +Uplifting [print_str] best 29894 combination zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 29684 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:128 [ divr16u::return#2 ] zp ZP_WORD:132 [ divr16u::return#3 ] +Uplifting [] best 29684 combination zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:142 [ rem16u#1 ] +Uplifting [mulu16_sel] best 29653 combination zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp ZP_WORD:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp ZP_WORD:87 [ mulu16_sel::return#18 ] zp ZP_WORD:91 [ mulu16_sel::return#19 ] zp ZP_WORD:95 [ mulu16_sel::return#20 ] zp ZP_WORD:101 [ mulu16_sel::return#10 ] zp ZP_WORD:105 [ mulu16_sel::return#11 ] zp ZP_DWORD:117 [ mulu16_sel::$0 ] zp ZP_DWORD:121 [ mulu16_sel::$1 ] zp ZP_WORD:162 [ mulu16_sel::return#0 ] zp ZP_WORD:166 [ mulu16_sel::return#1 ] zp ZP_WORD:170 [ mulu16_sel::return#14 ] zp ZP_WORD:176 [ mulu16_sel::return#15 ] zp ZP_WORD:180 [ mulu16_sel::return#16 ] zp ZP_WORD:125 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] +Uplifting [sin16s] best 29653 combination zp ZP_DWORD:63 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:152 [ sin16s::return#0 ] zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:156 [ sin16s::$4 ] zp ZP_WORD:164 [ sin16s::x2#0 ] zp ZP_WORD:172 [ sin16s::x3_6#0 ] zp ZP_WORD:178 [ sin16s::x4#0 ] zp ZP_WORD:182 [ sin16s::x5#0 ] zp ZP_WORD:184 [ sin16s::x5_128#0 ] zp ZP_WORD:168 [ sin16s::x3#0 ] zp ZP_WORD:186 [ sin16s::usinx#1 ] zp ZP_WORD:160 [ sin16s::x1#0 ] zp ZP_WORD:174 [ sin16s::usinx#0 ] zp ZP_BYTE:62 [ sin16s::isUpper#2 ] +Uplifting [sin16sb] best 29653 combination zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp ZP_WORD:81 [ sin16sb::return#0 ] zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp ZP_WORD:89 [ sin16sb::x2#0 ] zp ZP_WORD:97 [ sin16sb::x3_6#0 ] zp ZP_WORD:103 [ sin16sb::x4#0 ] zp ZP_WORD:107 [ sin16sb::x5#0 ] zp ZP_WORD:109 [ sin16sb::x5_128#0 ] zp ZP_WORD:93 [ sin16sb::x3#0 ] zp ZP_WORD:111 [ sin16sb::usinx#1 ] zp ZP_WORD:85 [ sin16sb::x1#0 ] zp ZP_WORD:99 [ sin16sb::usinx#0 ] zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] +Uplifting [sin16s_gen] best 29653 combination zp ZP_WORD:154 [ sin16s_gen::$1 ] zp ZP_WORD:60 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:148 [ sin16s_gen::step#0 ] +Uplifting [sin16s_genb] best 29653 combination zp ZP_WORD:83 [ sin16s_genb::$2 ] zp ZP_WORD:23 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp ZP_DWORD:77 [ sin16s_genb::step#0 ] +Uplifting [main] best 29563 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:69 [ main::sw#0 ] +Uplifting [print_cls] best 29563 combination zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 29555 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [div32u16u] best 29555 combination zp ZP_DWORD:73 [ div32u16u::return#3 ] zp ZP_WORD:134 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:144 [ div32u16u::return#2 ] zp ZP_DWORD:136 [ div32u16u::return#0 ] zp ZP_WORD:130 [ div32u16u::quotient_hi#0 ] +Uplifting [print_char] best 29543 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Uplifting [print_sword] best 29543 combination zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplifting [print_word] best 29543 combination Attempting to uplift remaining variables inzp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 29743 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 29543 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ sin16sb::isUpper#2 ] -Uplifting [sin16sb] best 29743 combination zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] +Uplifting [sin16sb] best 29543 combination zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 29743 combination zp ZP_BYTE:62 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 29543 combination zp ZP_BYTE:62 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] ] with [ zp ZP_WORD:111 [ sin16sb::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] ] with [ zp ZP_WORD:93 [ sin16sb::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 ] ] with [ zp ZP_WORD:168 [ sin16s::x3#0 ] ] - score: 2 @@ -6560,8 +6559,7 @@ mul16u: { //SEG268 mul16u::@3 b3: //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG270 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -7796,7 +7794,7 @@ zp ZP_WORD:71 [ sin16s::x1#0 ] FINAL ASSEMBLER -Score: 25153 +Score: 24953 //SEG0 File Comments // Generates a 16-bit signed sinus @@ -8555,8 +8553,7 @@ mul16u: { //SEG268 mul16u::@3 b3: //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG270 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb diff --git a/src/test/ref/sinusgen8b.asm b/src/test/ref/sinusgen8b.asm index 17fa5a978..5ceff247d 100644 --- a/src/test/ref/sinusgen8b.asm +++ b/src/test/ref/sinusgen8b.asm @@ -497,8 +497,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log index daa7005e5..d7fb7d816 100644 --- a/src/test/ref/sinusgen8b.log +++ b/src/test/ref/sinusgen8b.log @@ -4784,8 +4784,7 @@ mul16u: { //SEG251 mul16u::@3 b3: //SEG252 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG253 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -5911,60 +5910,60 @@ Uplift Scope [print_byte] 4: zp ZP_BYTE:81 [ print_byte::$0 ] 4: zp ZP_BYTE:82 [ Uplift Scope [print_sbyte] 7.83: zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Uplift Scope [div16u] 4: zp ZP_WORD:158 [ div16u::return#2 ] 1.33: zp ZP_WORD:189 [ div16u::return#0 ] -Uplifting [mul8u] best 39176 combination zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:67 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp ZP_WORD:179 [ mul8u::return#2 ] reg byte a [ mul8u::b#0 ] -Uplifting [mul16u] best 38576 combination zp ZP_DWORD:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:37 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:127 [ mul16u::return#2 ] zp ZP_WORD:41 [ mul16u::b#0 ] -Uplifting [print_str] best 38576 combination zp ZP_WORD:3 [ print_str::str#2 print_str::str#0 ] -Uplifting [divr16u] best 38366 combination zp ZP_WORD:43 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:45 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 ] zp ZP_WORD:142 [ divr16u::return#3 ] zp ZP_WORD:146 [ divr16u::return#4 ] zp ZP_WORD:187 [ divr16u::return#2 ] -Uplifting [] best 38366 combination zp ZP_WORD:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] zp ZP_WORD:156 [ rem16u#1 ] -Uplifting [main] best 38136 combination zp ZP_WORD:71 [ main::$3 ] zp ZP_WORD:73 [ main::$11 ] zp ZP_WORD:75 [ main::$4 ] zp ZP_WORD:77 [ main::sw#0 ] reg byte a [ main::sd#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$5 ] zp ZP_BYTE:70 [ main::sb#0 ] -Uplifting [sin8s] best 38031 combination zp ZP_WORD:57 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:164 [ sin8s::$4 ] zp ZP_BYTE:168 [ sin8s::x2#0 ] zp ZP_BYTE:172 [ sin8s::x3_6#0 ] zp ZP_BYTE:175 [ sin8s::x4#0 ] zp ZP_BYTE:177 [ sin8s::x5#0 ] zp ZP_BYTE:178 [ sin8s::x5_128#0 ] zp ZP_BYTE:170 [ sin8s::x3#0 ] zp ZP_BYTE:166 [ sin8s::x1#0 ] zp ZP_BYTE:173 [ sin8s::usinx#0 ] zp ZP_BYTE:56 [ sin8s::isUpper#10 ] +Uplifting [mul8u] best 38976 combination zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:67 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp ZP_WORD:179 [ mul8u::return#2 ] reg byte a [ mul8u::b#0 ] +Uplifting [mul16u] best 38376 combination zp ZP_DWORD:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:37 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:127 [ mul16u::return#2 ] zp ZP_WORD:41 [ mul16u::b#0 ] +Uplifting [print_str] best 38376 combination zp ZP_WORD:3 [ print_str::str#2 print_str::str#0 ] +Uplifting [divr16u] best 38166 combination zp ZP_WORD:43 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:45 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 ] zp ZP_WORD:142 [ divr16u::return#3 ] zp ZP_WORD:146 [ divr16u::return#4 ] zp ZP_WORD:187 [ divr16u::return#2 ] +Uplifting [] best 38166 combination zp ZP_WORD:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] zp ZP_WORD:156 [ rem16u#1 ] +Uplifting [main] best 37936 combination zp ZP_WORD:71 [ main::$3 ] zp ZP_WORD:73 [ main::$11 ] zp ZP_WORD:75 [ main::$4 ] zp ZP_WORD:77 [ main::sw#0 ] reg byte a [ main::sd#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$5 ] zp ZP_BYTE:70 [ main::sb#0 ] +Uplifting [sin8s] best 37831 combination zp ZP_WORD:57 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:164 [ sin8s::$4 ] zp ZP_BYTE:168 [ sin8s::x2#0 ] zp ZP_BYTE:172 [ sin8s::x3_6#0 ] zp ZP_BYTE:175 [ sin8s::x4#0 ] zp ZP_BYTE:177 [ sin8s::x5#0 ] zp ZP_BYTE:178 [ sin8s::x5_128#0 ] zp ZP_BYTE:170 [ sin8s::x3#0 ] zp ZP_BYTE:166 [ sin8s::x1#0 ] zp ZP_BYTE:173 [ sin8s::usinx#0 ] zp ZP_BYTE:56 [ sin8s::isUpper#10 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [sin16s] best 38031 combination zp ZP_DWORD:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:91 [ sin16s::return#0 ] zp ZP_WORD:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:95 [ sin16s::$4 ] zp ZP_WORD:103 [ sin16s::x2#0 ] zp ZP_WORD:111 [ sin16s::x3_6#0 ] zp ZP_WORD:117 [ sin16s::x4#0 ] zp ZP_WORD:121 [ sin16s::x5#0 ] zp ZP_WORD:123 [ sin16s::x5_128#0 ] zp ZP_WORD:107 [ sin16s::x3#0 ] zp ZP_WORD:125 [ sin16s::usinx#1 ] zp ZP_WORD:99 [ sin16s::x1#0 ] zp ZP_WORD:113 [ sin16s::usinx#0 ] zp ZP_BYTE:19 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 38015 combination zp ZP_WORD:26 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:101 [ mulu16_sel::return#0 ] zp ZP_WORD:105 [ mulu16_sel::return#1 ] zp ZP_WORD:109 [ mulu16_sel::return#2 ] zp ZP_WORD:115 [ mulu16_sel::return#10 ] zp ZP_WORD:119 [ mulu16_sel::return#11 ] zp ZP_DWORD:131 [ mulu16_sel::$0 ] zp ZP_DWORD:135 [ mulu16_sel::$1 ] zp ZP_WORD:139 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mulu8_sel] best 37969 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:171 [ mulu8_sel::return#2 ] zp ZP_BYTE:174 [ mulu8_sel::return#10 ] zp ZP_BYTE:176 [ mulu8_sel::return#11 ] zp ZP_WORD:181 [ mulu8_sel::$0 ] zp ZP_WORD:183 [ mulu8_sel::$1 ] zp ZP_BYTE:185 [ mulu8_sel::return#12 ] zp ZP_BYTE:63 [ mulu8_sel::select#5 ] +Uplifting [sin16s] best 37831 combination zp ZP_DWORD:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:91 [ sin16s::return#0 ] zp ZP_WORD:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:95 [ sin16s::$4 ] zp ZP_WORD:103 [ sin16s::x2#0 ] zp ZP_WORD:111 [ sin16s::x3_6#0 ] zp ZP_WORD:117 [ sin16s::x4#0 ] zp ZP_WORD:121 [ sin16s::x5#0 ] zp ZP_WORD:123 [ sin16s::x5_128#0 ] zp ZP_WORD:107 [ sin16s::x3#0 ] zp ZP_WORD:125 [ sin16s::usinx#1 ] zp ZP_WORD:99 [ sin16s::x1#0 ] zp ZP_WORD:113 [ sin16s::usinx#0 ] zp ZP_BYTE:19 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 37815 combination zp ZP_WORD:26 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:101 [ mulu16_sel::return#0 ] zp ZP_WORD:105 [ mulu16_sel::return#1 ] zp ZP_WORD:109 [ mulu16_sel::return#2 ] zp ZP_WORD:115 [ mulu16_sel::return#10 ] zp ZP_WORD:119 [ mulu16_sel::return#11 ] zp ZP_DWORD:131 [ mulu16_sel::$0 ] zp ZP_DWORD:135 [ mulu16_sel::$1 ] zp ZP_WORD:139 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mulu8_sel] best 37769 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:171 [ mulu8_sel::return#2 ] zp ZP_BYTE:174 [ mulu8_sel::return#10 ] zp ZP_BYTE:176 [ mulu8_sel::return#11 ] zp ZP_WORD:181 [ mulu8_sel::$0 ] zp ZP_WORD:183 [ mulu8_sel::$1 ] zp ZP_BYTE:185 [ mulu8_sel::return#12 ] zp ZP_BYTE:63 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [sin16s_gen] best 37969 combination zp ZP_WORD:93 [ sin16s_gen::$1 ] zp ZP_WORD:17 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:11 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:15 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:87 [ sin16s_gen::step#0 ] -Uplifting [sin8s_gen] best 37909 combination reg byte a [ sin8s_gen::$1 ] zp ZP_WORD:54 [ sin8s_gen::i#2 sin8s_gen::i#1 ] zp ZP_WORD:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp ZP_WORD:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:160 [ sin8s_gen::step#0 ] -Uplifting [print_cls] best 37909 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 37894 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [div32u16u] best 37894 combination zp ZP_DWORD:83 [ div32u16u::return#2 ] zp ZP_WORD:148 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:150 [ div32u16u::return#0 ] zp ZP_WORD:144 [ div32u16u::quotient_hi#0 ] -Uplifting [print_byte] best 37886 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_sbyte] best 37886 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 37886 combination zp ZP_WORD:158 [ div16u::return#2 ] zp ZP_WORD:189 [ div16u::return#0 ] +Uplifting [sin16s_gen] best 37769 combination zp ZP_WORD:93 [ sin16s_gen::$1 ] zp ZP_WORD:17 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:11 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:15 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:87 [ sin16s_gen::step#0 ] +Uplifting [sin8s_gen] best 37709 combination reg byte a [ sin8s_gen::$1 ] zp ZP_WORD:54 [ sin8s_gen::i#2 sin8s_gen::i#1 ] zp ZP_WORD:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp ZP_WORD:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:160 [ sin8s_gen::step#0 ] +Uplifting [print_cls] best 37709 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 37694 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [div32u16u] best 37694 combination zp ZP_DWORD:83 [ div32u16u::return#2 ] zp ZP_WORD:148 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:150 [ div32u16u::return#0 ] zp ZP_WORD:144 [ div32u16u::quotient_hi#0 ] +Uplifting [print_byte] best 37686 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_sbyte] best 37686 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 37686 combination zp ZP_WORD:158 [ div16u::return#2 ] zp ZP_WORD:189 [ div16u::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 37886 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [print_sbyte] best 37686 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:168 [ sin8s::x2#0 ] -Uplifting [sin8s] best 37882 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 37682 combination reg byte a [ sin8s::x2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:171 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 37876 combination reg byte a [ mulu8_sel::return#2 ] +Uplifting [mulu8_sel] best 37676 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:172 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 37872 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [sin8s] best 37672 combination reg byte a [ sin8s::x3_6#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:174 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 37866 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 37666 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:175 [ sin8s::x4#0 ] -Uplifting [sin8s] best 37862 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 37662 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:176 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 37856 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 37656 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:177 [ sin8s::x5#0 ] -Uplifting [sin8s] best 37850 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 37650 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:178 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 37844 combination reg byte a [ sin8s::x5_128#0 ] +Uplifting [sin8s] best 37644 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ main::sb#0 ] -Uplifting [main] best 37844 combination zp ZP_BYTE:70 [ main::sb#0 ] +Uplifting [main] best 37644 combination zp ZP_BYTE:70 [ main::sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:185 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 37826 combination reg byte a [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 37626 combination reg byte a [ mulu8_sel::return#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:170 [ sin8s::x3#0 ] -Uplifting [sin8s] best 37826 combination zp ZP_BYTE:170 [ sin8s::x3#0 ] +Uplifting [sin8s] best 37626 combination zp ZP_BYTE:170 [ sin8s::x3#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:166 [ sin8s::x1#0 ] -Uplifting [sin8s] best 37826 combination zp ZP_BYTE:166 [ sin8s::x1#0 ] +Uplifting [sin8s] best 37626 combination zp ZP_BYTE:166 [ sin8s::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 37826 combination zp ZP_BYTE:63 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 37626 combination zp ZP_BYTE:63 [ mulu8_sel::select#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:173 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 37826 combination zp ZP_BYTE:173 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 37626 combination zp ZP_BYTE:173 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 37826 combination zp ZP_BYTE:19 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 37626 combination zp ZP_BYTE:19 [ sin16s::isUpper#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:56 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 37826 combination zp ZP_BYTE:56 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 37626 combination zp ZP_BYTE:56 [ sin8s::isUpper#10 ] Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:125 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:107 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:43 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:156 [ rem16u#1 ] ] - score: 2 @@ -6918,8 +6917,7 @@ mul16u: { //SEG251 mul16u::@3 b3: //SEG252 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG253 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -8303,7 +8301,7 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER -Score: 32078 +Score: 31878 //SEG0 File Comments //SEG1 Basic Upstart @@ -9057,8 +9055,7 @@ mul16u: { //SEG251 mul16u::@3 b3: //SEG252 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG253 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 202332835..b9edcc181 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -614,8 +614,7 @@ mul16u: { adc mb+3 sta res+3 b3: - clc - ror a+1 + lsr a+1 ror a asl mb rol mb+1 diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index dc93601b1..df6957db7 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -6390,8 +6390,7 @@ mul16u: { //SEG378 mul16u::@3 b3: //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -7893,39 +7892,39 @@ Uplift Scope [mul16s_error] 0.57: zp ZP_WORD:126 [ mul16s_error::a#0 ] 0.4: zp Z Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [muls16s] best 550894 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] -Uplifting [mul16u] best 544894 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#6 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#1 ] zp ZP_DWORD:193 [ mul16u::return#3 ] zp ZP_DWORD:164 [ mul16u::return#2 ] -Uplifting [muls16u] best 544894 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:185 [ muls16u::return#2 ] zp ZP_WORD:183 [ muls16u::b#0 ] zp ZP_WORD:181 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 542794 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 540694 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 540694 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:201 [ mulf16u::return#3 ] zp ZP_DWORD:160 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] -Uplifting [print_str] best 540694 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [mul16s] best 540694 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:176 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:168 [ mul16s::$9 ] zp ZP_WORD:170 [ mul16s::$16 ] zp ZP_WORD:172 [ mul16s::$13 ] zp ZP_WORD:174 [ mul16s::$17 ] -Uplifting [mulf16s] best 540694 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:156 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:148 [ mulf16s::$9 ] zp ZP_WORD:150 [ mulf16s::$16 ] zp ZP_WORD:152 [ mulf16s::$13 ] zp ZP_WORD:154 [ mulf16s::$17 ] -Uplifting [] best 540694 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 540444 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls16s] best 548894 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] +Uplifting [mul16u] best 542894 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#6 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#1 ] zp ZP_DWORD:193 [ mul16u::return#3 ] zp ZP_DWORD:164 [ mul16u::return#2 ] +Uplifting [muls16u] best 542894 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:185 [ muls16u::return#2 ] zp ZP_WORD:183 [ muls16u::b#0 ] zp ZP_WORD:181 [ muls16u::a#0 ] +Uplifting [mul16u_compare] best 540794 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 538694 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] +Uplifting [mulf16u] best 538694 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:201 [ mulf16u::return#3 ] zp ZP_DWORD:160 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] +Uplifting [print_str] best 538694 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [mul16s] best 538694 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:176 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:168 [ mul16s::$9 ] zp ZP_WORD:170 [ mul16s::$16 ] zp ZP_WORD:172 [ mul16s::$13 ] zp ZP_WORD:174 [ mul16s::$17 ] +Uplifting [mulf16s] best 538694 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:156 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:148 [ mulf16s::$9 ] zp ZP_WORD:150 [ mulf16s::$16 ] zp ZP_WORD:152 [ mulf16s::$13 ] zp ZP_WORD:154 [ mulf16s::$17 ] +Uplifting [] best 538694 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [mulf_init] best 538444 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [print_cls] best 540444 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_word] best 540444 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] -Uplifting [print_sdword] best 540444 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_dword] best 540444 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_sword] best 540444 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [print_byte] best 540430 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 540415 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [mul16u_error] best 540415 combination zp ZP_WORD:209 [ mul16u_error::a#0 ] zp ZP_WORD:211 [ mul16u_error::b#0 ] zp ZP_DWORD:213 [ mul16u_error::ms#0 ] zp ZP_DWORD:217 [ mul16u_error::mn#0 ] zp ZP_DWORD:221 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 540415 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] -Uplifting [print_ln] best 540415 combination -Uplifting [main] best 540415 combination +Uplifting [print_cls] best 538444 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_word] best 538444 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] +Uplifting [print_sdword] best 538444 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +Uplifting [print_dword] best 538444 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [print_sword] best 538444 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplifting [print_byte] best 538430 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_char] best 538415 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [mul16u_error] best 538415 combination zp ZP_WORD:209 [ mul16u_error::a#0 ] zp ZP_WORD:211 [ mul16u_error::b#0 ] zp ZP_DWORD:213 [ mul16u_error::ms#0 ] zp ZP_DWORD:217 [ mul16u_error::mn#0 ] zp ZP_DWORD:221 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 538415 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] +Uplifting [print_ln] best 538415 combination +Uplifting [main] best 538415 combination Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 540415 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 538415 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 540415 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 538415 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 540415 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 538415 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 540275 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 538275 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 540275 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 538275 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp ZP_WORD:90 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp ZP_WORD:102 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp ZP_WORD:114 [ mulf16s::a#0 ] ] - score: 1 @@ -9198,8 +9197,7 @@ mul16u: { //SEG378 mul16u::@3 b3: //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb @@ -10579,8 +10577,8 @@ Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction b1: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [109] bne b1 to beq -Fixing long branch [828] bne b2 to beq -Fixing long branch [834] bne b1 to beq +Fixing long branch [827] bne b2 to beq +Fixing long branch [833] bne b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -11057,7 +11055,7 @@ reg byte a [ mulf_init::$11 ] FINAL ASSEMBLER -Score: 442228 +Score: 440228 //SEG0 File Comments // Test the fast multiplication library @@ -12055,8 +12053,7 @@ mul16u: { //SEG378 mul16u::@3 b3: //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 - clc - ror a+1 + lsr a+1 ror a //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb